ネットワークシミュレータとしてCisco製品とセットで使われることの多いGNS3ですが,IOSなんて持ってない人も多いはず.
使ってみようと思ったら初心者向けの記事があまりなかったので,今回はフリーのVyOSを使ってネットワークを作ってみましたので参考になれば.
準備
GNS3のインストール
公式のドキュメントに一通り揃ってますので,そちらを見ると良いです.
手元のマシン(Debian stretch/sid)だと下記でインストール出来ました.
echo -e "deb http://ppa.launchpad.net/gns3/ppa/ubuntu xenial main\ndeb-src http://ppa.launchpad.net/gns3/ppa/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/gns3.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F88F6D313016330404F710FC9A2FD067A2E3EF7B
sudo apt-get update
sudo apt-get install gns3-gui
VyOSのqemuイメージ作成
こちらを参考に作成します.
qemu関連のパッケージは予めインストールしておいてください.
# ダウンロード
wget http://0.bg.mirrors.vyos.net/iso/release/1.1.7/vyos-1.1.7-amd64.iso
# ストレージ作成
qemu-img create -f vmdk vyos-1.1.7-amd64.img 2G
# 仮想マシン起動
qemu-system-x86_64 -boot d -cdrom ./vyos-1.1.7-amd64.iso -hda vyos-1.1.7-amd64.img -enable-kvm -m 512M -serial mon:stdio
# Qemuの画面が立ち上がるので以下のコマンドを実行
# VyOSのインストール
# 初期設定だとユーザ名・パスワード共に「vyos」です
install image # 基本はデフォルト値のままで大丈夫です.程よくインストール
qemuを再起動し,GNS3で起動するための設定を行います
qemu-system-x86_64 -hda vyos-1.1.7-amd64.img -enable-kvm -m 512M
# macアドレスの初期化
sudo -s
mv /lib/udev/vyatta_net_name /lib/udev/vyatta_net_name.bak
sed -i 's/2367abef/00/g' /lib/udev/rules.d/75-persistent-net-generator.rules
sed -i 's/2367abef/00/g' /lib64/udev/rules.d/75-persistent-net-generator.rules
# ブートオーダの変更
sed -i 's/set default=0/set default=1/g' /boot/grub/grub.cfg
# 起動の待ち時間をなくす
sed -i 's/set timeout=5/set timeout=0/g' /boot/grub/grub.cfg
sed -i 's/interruptible 5/interruptible 0/g' /boot/grub/grub.cfg
GNS3への登録
仮想マシンを停止し,GNSを起動します.
# gns3-guiの実行
gns3
起動すると設定画面が出ます.Local serverを選んでNextへ.
「Add a Qemu virtual machine」を選択してFinishへ.
GNS3へ登録する名前を聞かれますので,適当にVyOSとか入れるといいでしょう.
qemuの実行ファイルを聞かれますのでqemu-system-x86_64を選択します.RAMは512MBくらい取ってやると良いかと.
ディスクイメージの場所を聞かれますので,先程作ったvyos-1.1.7-amd64.imgを指定します.デフォルト登録するかと
聞かれるのでYesを選ぶといいでしょう.
Finishを選択するとテンプレートの設定画面が出るので,VyOSを選択してEditを選びます.
General settingsのSymbolを「:/symbols/router.svg」へ変更.Categoryを「Routers」にしておくといい感じに表示されます.
NetworkタブのAdaptersを2以上に設定,Advanced settingsタブのOptioindを「-nographic -enable-kvm」に変更します.
後はOKを押すと準備は終了です.
ネットワーク構築
VyOSを使う準備が整ったので,ネットワーク構築に入ります.
機器の配置
以下のネットワークを作成します(マスクは全部255.255.255.0です).PC1からPC2へpingを送るのが目標です.
画面左上の矢印のマークをクリックすると登録されているルータが表示されますので,ドラッグアンドドロップで2つ並べます.
次に矢印の2つ下のアイコンをクリックし,ルータと同じ要領でVPCSを2つ配置します.
一番下のアイコンをクリックして配線を行います.
ここまで終わったら,緑色の三角のアイコンをクリックしてルータとPCを起動しましょう.
IPアドレスの設定
PC設定
PC1を右クリック→Consoleを選択して下記のコマンドを実行します.
ip 192.168.0.1/24 192.168.0.2
PC2も同様に設定します.
ip 192.168.100.1/24 192.168.100.2
ルータの設定
VyOS-1を右クリック→Consoleを選択して下記のコマンドを実行します.
configure
set interfaces ethernet eth0 address '192.168.10.1/24'
set interfaces ethernet eth1 address '192.168.0.2/24'
commit
同様にVyOS-2も設定を入れます.
configure
set interfaces ethernet eth0 address '192.168.10.2/24'
set interfaces ethernet eth1 address '192.168.100.2/24'
commit
IPアドレスの設定ができました.近接したPCとルータ間でpingが通ることを確認してください.
しかしまだPC1-PC2間でpingが通りません.経路の設定を行います.
ルーティング設定
PC1からPC2へpingが通る様にVyOS-1に静的ルーティングの設定を行います.
set protocols static route 192.168.100.0/24 next-hop 192.168.10.2
commit
これでPC2への経路の設定ができました.PC1からpingを打ってみましょう
PC1> ping 192.168.100.1
192.168.100.1 icmp_seq=1 timeout
192.168.100.1 icmp_seq=2 timeout
192.168.100.1 icmp_seq=3 timeout
192.168.100.1 icmp_seq=4 timeout
192.168.100.1 icmp_seq=5 timeout
通りませんね.これはPC2からの応答を行うための経路がVyOS-2に設定されていないためです.Vyos-2にルーティングの設定を行います.
set protocols static route 192.168.0.0/24 next-hop 192.168.10.1
commit
もう一度やってみましょう.
PC1> ping 192.168.100.1
84 bytes from 192.168.100.1 icmp_seq=1 ttl=62 time=0.539 ms
84 bytes from 192.168.100.1 icmp_seq=2 ttl=62 time=0.442 ms
84 bytes from 192.168.100.1 icmp_seq=3 ttl=62 time=0.465 ms
84 bytes from 192.168.100.1 icmp_seq=4 ttl=62 time=0.499 ms
84 bytes from 192.168.100.1 icmp_seq=5 ttl=62 time=0.480 ms
PC2からも試してみます
PC2> ping 192.168.0.1
84 bytes from 192.168.0.1 icmp_seq=1 ttl=62 time=0.389 ms
84 bytes from 192.168.0.1 icmp_seq=2 ttl=62 time=0.538 ms
84 bytes from 192.168.0.1 icmp_seq=3 ttl=62 time=0.379 ms
84 bytes from 192.168.0.1 icmp_seq=4 ttl=62 time=0.386 ms
84 bytes from 192.168.0.1 icmp_seq=5 ttl=62 time=0.535 ms
無事通りました.これで完了です.