こんにちは、虎の穴ラボのH.Y.です。(激似)
最近、ギガが減るという単語が一般的に使われてきましたね。
というわけで、ネットワークをネタに
VyOSをつかった純粋なルータ(L3パケット交換のみの機能)作りをしてみようと思います。
そもそも、VyOSとはオープンソースのネットワークOSで、
PCに入れてネットワーク機器としてしまうときに使います。
Debianベースですが、Linuxで使えるコマンドは、ほぼ使えません。
今回は、富士通PRIMERGY TX100 S3を使用します。
(今回は右側のマシン。左側はマイニングマシンとして使ったマシン)
マイニングマシンの記事はこちら
格安サーバを使ったモナコイン向けマイニングマシン - 虎の穴 開発室ブログ
この機種は、LANポートが2つあるのでルータとしても使用しやすいです。
VyOSのインストール
IOSは本家のページからダウンロードします。
VyOS - an Open Source Linux-based Network OS
VyOSのインストールは以下の記事を参考にしました。
VyOS のインストール&初期セットアップ - らくがきちょう
インストール自体は、基本デフォルトでインストールしたので、5分程度で完了しました。
※インストール直後のネットワーク図
IPアドレスの指定とsshのインストール
ルーターとして使用するために、interfaceにipアドレスを設定します。
ついでに、マシンと作業スペースが遠いのでsshの有効化も行います。
'編集モードに移行' $ configure 'interfaceのIP設定の確認' # show interfaces ethernet Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- eth0 - u/u eth1 - u/u 'interfaceのIP設定' # set interfaces ethernet eth0 address 192.168.100.201/24 # set interfaces ethernet eth1 address 192.168.101.1/24 'sshを有効化' # set service ssh '設定のコミットと保存' # commit # save 'interfaceのIP設定の確認' # show interfaces ethernet Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- eth0 192.168.100.201/24 u/u eth1 192.168.101.1/24 u/u
sshとeth0にIPアドレスを設定したので、
user:vyos
password:インストール時のパスワード
でsshで操作できるようになります。
※設定後のネットワーク図(eth1はスイッチと繫がっているが省略)
外と繋ぐ。
ブロードバンドルーターにはつながっては居ますが、
# ping 8.8.8.8 connect: Network is unreachable
外のネットワークに接続できません。
# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route C>* 127.0.0.0/8 is directly connected, lo C>* 192.168.100.0/24 is directly connected, eth0 C>* 192.168.101.0/24 is directly connected, eth1
ルーティングテーブルを見て、デフォルトゲートウェイへのルーティングが存在しないことがわかります。
なので、デフォルトゲートウェイ(ブロードバンドルーター)にパケットを飛ばすためスタティックルーティングを設定します。
# set protocols static route 0.0.0.0/0 next-hop 192.168.100.1 # commit # save
ブロードバンドルーター(192.168.100.1)の経路の設定を行いました。
# ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_req=1 ttl=121 time=3.73 ms 64 bytes from 8.8.8.8: icmp_req=2 ttl=121 time=3.96 ms # show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route S>* 0.0.0.0/0 [1/0] via 192.168.100.1, eth0 C>* 127.0.0.0/8 is directly connected, lo C>* 192.168.100.0/24 is directly connected, eth0 C>* 192.168.101.0/24 is directly connected, eth1
pingも問題なく帰ってきており、ルーティングテーブルも大丈夫そうです。
ダイナミックルーティングを使いたい
ブロードバンドルーターがダイナミックルーティングであるRIPに対応しているため、
VyOSでも動作しているかを確認してみます。
# set protocols rip interface eth0 # set protocols rip interface eth1 # commit # save
RIPの広告対象のインターフェイスを設定しました。
# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route R 0.0.0.0/0 [120/2] via 192.168.100.1, 00:00:24 S>* 0.0.0.0/0 [1/0] via 192.168.100.1, eth0 R>* 49.0.0.0/8 [120/2] via 192.168.100.1, eth0, 00:00:24 R>* 123.0.0.0/8 [120/2] via 192.168.100.1, eth0, 00:00:24 C>* 127.0.0.0/8 is directly connected, lo C>* 192.168.100.0/24 is directly connected, eth0 C>* 192.168.101.0/24 is directly connected, eth1 R>* 220.210.194.0/24 [120/2] via 192.168.100.1, eth0, 00:00:24 R>* 220.210.221.0/24 [120/2] via 192.168.100.1, eth0, 00:00:24 R>* ***.***.***.0/24 [120/2] via 192.168.100.1, eth0, 00:00:24 R>* ***.***.***.0/24 [120/2] via 192.168.100.1, eth0, 00:00:24
※使用しているISPバレてしまうので一部マスクしてます。
RIPでデフォルトゲートウェイを含めたルーティング情報を取得できましたが、
アドミニストレーティブディスタンスの値がスタティックよりも高いので、
実際使われているのは、スタティックのルートを使われています。
(*がついているのが、実際に使われているルート)
なので、スタティックルーティングの設定を削除します。
setの代わりにdeleteを入れれば消えるそうなので
# delete protocols static route 0.0.0.0/0 next-hop 192.168.100.1 # commit [ protocols static route 0.0.0.0/0 ] Must add either a next-hop or blackhole for route 0.0.0.0/0 [[protocols static]] failed Commit failed
あれ?。
# delete protocols static route 0.0.0.0/0 # commit
こちらの方はうまくいきました。
どうやら、deleteは必要最低限の記述でじゃないと、ダメそうです。
# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route R>* 0.0.0.0/0 [120/2] via 192.168.100.1, eth0, 00:00:56 R>* 49.0.0.0/8 [120/2] via 192.168.100.1, eth0, 00:00:56 R>* 123.0.0.0/8 [120/2] via 192.168.100.1, eth0, 00:00:56 C>* 127.0.0.0/8 is directly connected, lo C>* 192.168.100.0/24 is directly connected, eth0 C>* 192.168.101.0/24 is directly connected, eth1 R>* 220.210.194.0/24 [120/2] via 192.168.100.1, eth0, 00:00:56 R>* 220.210.221.0/24 [120/2] via 192.168.100.1, eth0, 00:00:56 R>* ***.***.***.0/24 [120/2] via 192.168.100.1, eth0, 00:00:56 R>* ***.***.***.0/24 [120/2] via 192.168.100.1, eth0, 00:00:56
スタティックルーティングが消え、RIPのルーティングを使用しています。
いろいろつなぐ
自宅にYAMAHA、NEC、CISCO製のルータが
手持ちになりましたので、マルチベンダー環境でもルーティング情報を交換できているか確認します。
(メーカーバラバラなのでインターフェイス名もバラバラ。。。)
VyOS
# show ip route Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - ISIS, B - BGP, > - selected route, * - FIB route R>* 0.0.0.0/0 [120/2] via 192.168.100.1, eth0, 21:27:28 R>* 49.0.0.0/8 [120/2] via 192.168.100.1, eth0, 21:27:28 R>* 123.0.0.0/8 [120/2] via 192.168.100.1, eth0, 21:27:28 C>* 127.0.0.0/8 is directly connected, lo C>* 192.168.100.0/24 is directly connected, eth0 C>* 192.168.101.0/24 is directly connected, eth1 R>* 192.168.201.0/24 [120/2] via 192.168.101.201, eth1, 00:00:15 R>* 192.168.202.0/24 [120/2] via 192.168.101.202, eth1, 00:01:20 R>* 220.210.194.0/24 [120/2] via 192.168.100.1, eth0, 21:27:28 R>* 220.210.221.0/24 [120/2] via 192.168.100.1, eth0, 21:27:28 R>* ***.***.***.0/24 [120/2] via 192.168.100.1, eth0, 21:27:28 R>* ***.***.***.0/24 [120/2] via 192.168.100.1, eth0, 21:27:28
CISCO 1812J
# show ip route Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, + - replicated route Gateway of last resort is 192.168.101.1 to network 0.0.0.0 R* 0.0.0.0/0 [120/2] via 192.168.101.1, 00:00:03, FastEthernet0 R 49.0.0.0/8 [120/2] via 192.168.101.1, 00:00:03, FastEthernet0 R 123.0.0.0/8 [120/2] via 192.168.101.1, 00:00:03, FastEthernet0 R 192.168.100.0/24 [120/1] via 192.168.101.1, 00:00:03, FastEthernet0 192.168.101.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.101.0/24 is directly connected, FastEthernet0 L 192.168.101.201/32 is directly connected, FastEthernet0 192.168.201.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.201.0/24 is directly connected, FastEthernet1 L 192.168.201.1/32 is directly connected, FastEthernet1 R 192.168.202.0/24 [120/1] via 192.168.101.202, 00:00:02, FastEthernet0 R 220.210.194.0/24 [120/2] via 192.168.101.1, 00:00:08, FastEthernet0 R 220.210.221.0/24 [120/2] via 192.168.101.1, 00:00:08, FastEthernet0 R ***.***.***.0/24 [120/2] via 192.168.101.1, 00:00:05, FastEthernet0 R ***.***.***.0/24 [120/2] via 192.168.101.1, 00:00:05, FastEthernet0
NEC IX2015
# show ip route IP Routing Table - 10 entries, 2038 frees Codes: C - Connected, S - Static, R - RIP, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, B - BGP * - Candidate default, s - Summary Timers: Age R* 0.0.0.0/0 [120/3] via 192.168.101.1, FastEthernet0/0.0, 0:00:23 R 49.0.0.0/8 [120/3] via 192.168.101.1, FastEthernet0/0.0, 0:00:23 R 123.0.0.0/8 [120/3] via 192.168.101.1, FastEthernet0/0.0, 0:00:23 R 192.168.100.0/24 [120/2] via 192.168.101.1, FastEthernet0/0.0, 0:00:23 C 192.168.101.0/24 [0/1] is directly connected, FastEthernet0/0.0, 0:26:11 C 192.168.202.0/24 [0/1] is directly connected, FastEthernet0/1.0, 0:08:02 R 220.210.194.0/24 [120/3] via 192.168.101.1, FastEthernet0/0.0, 0:00:24 R 220.210.221.0/24 [120/3] via 192.168.101.1, FastEthernet0/0.0, 0:00:24 R ***.***.***.0/24 [120/3] via 192.168.101.1, FastEthernet0/0.0, 0:00:24 R ***.***.***.0/24 [120/3] via 192.168.101.1, FastEthernet0/0.0, 0:00:24
YAMAHA NVR500
※瘴気が濃いところにあったので、写真はなしです。。。。
show ip route 宛先ネットワーク ゲートウェイ インタフェース 種別 付加情報 default - PP[01] static filter:500000 default - PP[02] static filter:500000 default - PP[01] static 49.***.***.***/32 - PP[01] temporary 123.***.***.***/24 - PP[02] static 123.***.***.***/32 - PP[02] temporary 123.***.***.***/32 - PP[02] temporary 192.168.100.0/24 192.168.100.1 LAN1 implicit 192.168.101.0/24 192.168.100.201 LAN1 RIP metric=1 192.168.201.0/24 192.168.100.201 LAN1 RIP metric=2 192.168.202.0/24 192.168.100.201 LAN1 RIP metric=2 220.210.194.***/25 - PP[02] static 220.210.221.***/32 - PP[02] temporary ***.***.***.***/32 - PP[01] temporary ***.***.***.***/32 - PP[01] temporary #
全機器、問題なく全ルーティング情報を交換できていました。
※NVR500のルーティング情報が多いのはRIPv1を使っているため、自動集約されているからです。
まとめ
ハードウェアの値段にもよりますが、同等の機能を持ったアプライアンス機器よりも安い
(今回は大体1万円ぐらい)
コマンドの使い勝手は、CISCO IOSに近いものが多く、使い慣れている方は学習コストは少ない
(と思います)
今回は、業務用として使うような(?)設定しかしていませんが、
NAPTやファイアウォールなどのブロードバンドルーターとしても設定できますので
余っているPCをルータにしてみたり、ネットワークの勉強としてや、
VPNを作って遊んでみたりしては、いかがでしょうか。
P.S.
NEC IX2015を設定するコマンドを探すのに一番時間がかかりました。
12/20(木) に『とらのあな開発室』の採用説明会を秋葉原で開催します! Webエンジニアがメインの説明会となりますが、デザイナー、ディレクターもあわせて募集していますので、ぜひ気軽にご参加下さい!
yumenosora.connpass.com
虎の穴ではJavascriptエンジニアをはじめとして一緒に働く仲間を絶賛募集中です!
この記事を読んで、興味を持っていただけた方はぜひ弊社の採用情報をご覧下さい。
www.toranoana.jp