はじめに
CCNA学習においては、実際にCisco機器の動作を検証できる環境があると理解が深まります。
本記事の目的は、Amazon EC2+Ubuntu+GNS3を使用して、PCとインターネット環境さえあればいつでもどこでも動作検証を行えるエミュレータ環境を構築することです。
※GNS3を使用するうえで一番のネックは、CiscoIOSの用意です。
「会社がCiscoパートナー契約を結んでいる」または「会社や知り合いがCiscoルータを所有している」に当てはまらない場合はAmazonやヤフオク、メルカリなどでGNS3対応のIOS搭載ルータを購入する必要があります。出費が発生しますのであくまで自己責任で。。。
目次
1.AWS環境を用意する
AWSアカウント作成やVPC、サブネットなどの作成に関しては、本記事の主旨ではないため割愛します。
2.Ubuntuサーバを構築する
AWSマネジメントコンソールで「EC2」のページにアクセスし、「インスタンスを起動」します。
以下のポイントを参考にEC2を作成します。
- AMIは
Ubuntu Server 18.04 LTS (HVM), SSD Volume Type 64ビット(x86)
を選択(無料利用枠の対象) - インスタンスタイプは
t2.medium
以上を選択(無料利用枠対象のt2.microだと、後述のubuntuデスクトップが重すぎて動かない) - 自動割り当てパブリックIPは、無料利用枠に収める場合は
有効
とする(ただし停止起動のたびにパブリックIPが変わる) - EBSボリュームは
汎用 SSD(gp2) 8GiB
でよい - タグは
Name:gns3
でよい - セキュリティグループは
タイプ:全てのトラフィック
でソース:現在使用しているパブリックIP
をインバウンド許可 ※全開けでもよいが、非推奨・危険なので注意すること!
参考:パブリックIPを確認するには:あなたが現在インターネットに接続しているグローバルIPアドレス確認
インスタンスが作成されたら、pemキーを使用してTeraTermなどでubuntuサーバにSSHログインします。なお、Ubuntu AMIのデフォルトユーザはubuntu
です。
以下の初期設定をおこないます。
$ sudo apt -y update && sudo apt -y upgrade
$ sudo apt -y install language-pack-ja-base language-pack-ja ibus-mozc
$ sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
$ source /etc/default/locale
$ sudo apt -y install manpages-ja manpages-ja-dev
$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo passwd ubuntu #パスワードは任意のものを指定
$ sudo vi /etc/ssh/sshd_config #「PasswordAuthentication」のnoをyesに修正して保存
$ sudo systemctl restart sshd
3.リモートデスクトップ(xrdp)の準備
xrdp設定については、こちらの記事を参考にさせていただきました。
参考:Windows10→Ubuntu 18.04のリモートデスクトップ接続メモ
以下の通りそれぞれパッケージをインストールして、rebootを実施します。
$ sudo apt install -y ubuntu-desktop
$ sudo apt install -y xrdp
$ sudo apt -y update && apt -y upgrade
ここからは実際にリモートデスクトップ接続で使用するユーザに切り替えます。
今回は引き続き、ubuntu
ユーザで接続するものとして進めます。
2種類のスクリプトを用意します(viコマンドによる新規作成と下記コピペでOK)
cat <<EOF > ~/.xsessionrc
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
EOF
sudo sed -e 's/^new_cursors=true/new_cursors=false/g' -i /etc/xrdp/xrdp.ini
cat <<EOF | \
sudo tee /etc/polkit-1/localauthority/50-local.d/xrdp-color-manager.pkla
[Netowrkmanager]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF
sudo systemctl restart xrdp
sudo systemctl restart polkit
2種類のスクリプトを順に実行します。
$ sh /home/ubuntu/u_setting.sh
$ sh /home/ubuntu/g_setting.sh
xrdpサービスの確認と起動、自動起動有効化を行います。
$ systemctl status xrdp
$ sudo systemctl start xrdp #既に起動していれば不要
$ sudo systemctl is-enabled xrdp
$ sudo systemctl enabled xrdp #既に有効化されていれば不要
4.GNS3のインストール
GNS3のインストールについては、公式ドキュメントを参考にしました。
参考:GNS3 Linux Install
以下の通り実行します。
$ sudo add-apt-repository ppa:gns3/ppa
$ sudo apt install gns3-gui gns3-server
2つ目のコマンドを実行した際、以下キャプチャのように
「root以外のユーザに、ubridgeとwiresharkの使用を許可するかどうか」を聞かれたら、どちらも「はい」を選択してEnterします。
CUIによる設定は以上で完了です。OSをrebootします。
$ sudo reboot
GNS3サーバが起動してきたら、次は自PCからGNS3サーバへリモートデスクトップ接続します。
xrdpの認証画面が表示されるので、
username:ubuntu
password:設定したパスワード
を入力してOKを押下。
ubuntuのデスクトップが表示されます。初回のセットアップ画面が出てきますが右上の「Next」でスキップします。
デスクトップにて[Ctrl]+[Alt]+[t]キーの同時押しでUbuntuターミナルを起動し、$ gns3
を入力実行します。
GNS3のセットアップウィザードが表示されるので、Run appliances on my local computer
を選択して「Next」を押下します。
保存先パスやポート設定などはデフォルトのまま進み、最後に「Finish」を押下します。
5.GNS3でCiscoルータのテンプレート作成
こちらの記事を参考にさせていただきました。(というかほぼそのままです、ごめんなさい)
参考:ネットワークエンジニアとして 「GNS3 - Setup」
また、ここではCisco 3745のIOSイメージをあらかじめWinSCPでubuntuサーバ内に配置しています。
GNS3メニューの Edit から Preferences を選択します。
Dynamipsの IOS routers を選択したら、下の「New」を押下します。
IOS image:New Image を選択し、CiscoルータのIOSファイルを指定して「Next」を押下します(.binファイルを選択するとdecompressメニューが出て、自動で.imageファイルにしてくれる)
Name and platform:デフォルトのまま「Next」を押下します。
Network adapters:お好みでイーサネットインターフェースを追加(後で変更可)して「Next」を押下します。
WIC modules:お好みでシリアルインターフェースを追加(後で変更可)して「Next」を押下します。
Idle-PC:この設定はホストOS側のCPU高騰を防止するための設定です。「Idle-PC finder」をクリックして、設定が自動入力されたら下の「Finish」を押下します。
これでCiscoルータのテンプレートが作成されたので、GNS3でルータを使用できるようになります。
さいごに
冒頭でも書きましたが、CiscoIOSイメージの入手は人によってはハードルが高いかと思います。
私の場合、会社に研修用のCisco 3745実機があったので、そこからIOSイメージを吸い出したものを使用しました。
また、Cisco 3745のIOSイメージを使えばスイッチのテンプレートも作成できるみたいで、vlanの検証なども可能なようです。
参考文献
本記事はこちらの文献を参考に執筆しました。この場を借りてお礼申し上げます。