はじめに
Network 関係で色々と遊ぼうとすると、どうしても物理的な構築が必要になる。でも、プロトコルの動作を知りたいとか、Router の Config の書き方や実際の Packet を見たい、速度なんざいらない、という時には仮想環境でやったほうが面倒がない。そもそも実機をかき集めるとなると、電力だけで地獄を見る。
というわけで GNS3. GNS3はもともと Cisco IOS を動かすための Dynamips のラッパーとして細々開発が続けられていたが、2016年くらいからかな、何かの資本が入ったのか、精力的に開発が進められている。
検証用とはいえ、仮想 Router や サーバを複数台動かそうとするとメイン PC で賄うのはつらい。そこで、ESXi サーバ上にGNS3サーバを立て、メインPCは GNS3クライアントとして動作させることにした。
前提
GNS3
- GNS3 2.2.3 を利用。Server/Clientでバージョンを合わせる必要がある。
Remote Server
- Ubuntu 18.04.1 を最小インストールで用意。
- Partition は、/のほか、/optを別に分けた。GNS3 Serverで動作させる仮想マシン群はこのディレクトリに配備される。/optを分けておかないと、GNS3 上に無尽蔵に仮想マシンを立てていって突然ディスク容量が足りない!となって サーバすら起動しなくなる(なった)。
Local Client
- Windows 10 で用意。Linux でもやるべき手順は変わらない、と思う。
OpenVPN
- Client - Server 間は OpenVPN を利用してトンネル化する。Server を Internet 上のクラウドで構築することを想定しての構成。NAPT 変換前の Private 空間で直接つなぐのなら正直いらないのだが、公式手順に合わせて利用することにした。
Remote Server 構築
事前準備
sudo apt install curl
sudo adduser gns3
curlはGNS3謹製ツールを動作させるために必要。gns3ユーザアカウント追加は正直いらない気もするのだが、これが入っていないと、gns3-remote-install.sh が途中で止まった。
GNS3 Serverのインストール
元ネタはここ.
cd /tmp
curl https://raw.githubusercontent.com/GNS3/gns3-server/master/scripts/remote-install.sh > gns3-remote-install.sh
sudo bash gns3-remote-install.sh --with-openvpn --with-iou --with-i386-repository
インストールスクリプトでインストールできる。openvpn のクライアント用opvnファイル(client.ovpn
)が/root/に作成されていればOK.
Client側の設定
公式サイトからOpenVPNをダウンロードし、インストール。
Server側で生成された client.ovpn
ファイルを Client 側 PC へコピーし、OpenVPNへインポートして、接続する。
接続に成功すると、VPN接続用のIP アドレスがアサインされる。
Private 空間で利用するときの注意
インストーラで生成された client.opvn
を Pvitate 空間で使う場合(言い換えると Server / Clientがどちらもローカルにある場合)、ファイルの一部を書き換える必要がある。
connection
タグ配下に 接続先アドレスを指定するところがあるが、そこをローカル側のアドレスに変更する。
(ファイル末尾)
<connection>
remote Global IP Address 1194 udp ← ここをローカルアドレスへ書き換え
</connection>
GNS3 Client の設定
GNS3 の Edit → Preference → Server → Server Preferenceを設定する。User/Passwordはデフォルトでできた。
- Enable local server のチェックを外す。
- Remote main ServerのホストにVPN 接続用の IPアドレスを設定する。