(作成:2015/12)
職場も変わって以前ほどがっつりインフラSEやらなくなった今日此頃。言っても少しくらいは職場の機器設定を弄る事もあるのだけれど、もう一人でイチから作り上げるような作業も無いだろうナーと思うと少しばかり寂しかったり寂しくなかったり。
しかしまあコレまで経験して覚えた技術を腐らせるのも勿体無い話なので、おうちで仮想のネットワーク環境を作って遊ぶことに。
Install on Windows 7
……は、拙サイトでまとめるよりも他に解り易いサイトが幾らもあるので、そちらの参照をお勧めします。The TENUKISM。
ていうか、ココの情報だけで当サイトで語りたいこと網羅してます。尊敬。んじゃ何の為の当サイトかと言う話だけれど、うーん自己満足と備忘録?
さておき、ココでは以下環境が整っている事を前提としてお話を進めようかと。括弧内はウチとこの環境デス。
- 何はともあれPC環境
Windows 7 Home Premium SP1 64bit
- GNS3 インストール済
1.2.3
- Oracle VM VirtualBox インストール済
4.3.34 r 104062
- CIsco IOSイメージ取得済
c3640-js-mz.124-25d.bin
- CentOS 7 isoイメージ取得済
CentOS-7-x86_64-Minimal-1503-01.iso
バージョンをかっちり合わせる必要は無いけれど、各アプリの最新バージョンは色々細かな問題を抱えているので、マイナーバージョンくらいまでは揃えた方が良いかも知れませぬ。
GNS3
取り敢えずやる事は少ない。
- 一般設定の変更
- Cisco IOSイメージの展開
- VirtualBox連携
- 一般設定の変更
項目は何だか色々あるけれど、そんなに気にして弄るとこも無いかも。
- GNS3を起動してメニュー
Edit
-Preferences
を開く General
-General
を開き、My projects
およびMy binary images
に好きなフォルダを指定
My projects
は、GNS3で作った仮想ネットワーク環境を保存しとく場所のコト。
My binary images
は、Cisco IOSイメージを保管しとく場所のコト。
Cisco IOSイメージの展開
要はIOSイメージを使って仮想ルータ使えるようにする作業。シミュレータなんで色々制約はあるけれど。Catalystシミュレートできないのは哀しいネ。
- メニュー
Edit
-Preferences
Dynamips
-IOS routers
New
IOS image
は用意したIOSイメージファイルを選択してNext>
Would you like to decompress this IOS image?
と問われたらYes
Cisco IOSのbinファイルは通常ZIP圧縮形式なんだそうで、ココで非圧縮化しとくことで仮想ルータの動作が少しだけ快適になる。その分HDD容量食うけれど、まあ微々たるもんです。Name and platform
は特に希望が無ければそのままNext>
Memory
も特に希望が無ければそのままNext>
直下にあるCheck for minimum RAM requirement
リンクから適したRAMのサイズを確認して指定しても良い。Network adapters
も特に希望が無ければそのままNext>
ここは仮想ルータ追加時にデフォでシャーシに突っ込んどくモジュールを選択する項目。「常にこのモジュールは欲しいナァ」というのがあれば設定しておくと良い。Idle-PC
も華麗にスルーしてFinish
これはどういう仕組みかよく判らんのだけれど、GNS3上で仮想ルータ追加して起動すると、初期状態ではCPU使用率をゴリゴリ食うみたい。で、起動したルータに適切なIdle-PC値を設定してやると大人しくなってくれるというシロモノ。この初期設定ではうまくいかない事が多いようなので、仮想ルータ追加の都度やった方が良いと思う。
VirtualBox連携
GNS3だけでもVPCSたらいうPCエミュレート環境やQEMUなんかが用意されている。けれどVirtualBoxを別途導入して連携することも出来る。個人的見解では、各エミュレート環境の違いは以下のような感じ。
VPCS
: エンド2エンドの通信確認用、ネットワークコマンドは充実してるし超軽い。ケドOSとして使えるかは何とも。QEMU
: 正しくはCPUエミュレータらしい。PCエミュレータじゃないので、どんなOSでも入るってモンじゃなさげ。古いのは動くみたい?VirtualBox
: 大概のOSが問題無く導入できる。重い。
個人的にはQEMUがどこまで出来る子なのか試してみたい気もするけれど、時間と心に余裕がある時に後回すとして。今回はVirtualBoxを連携してGNS3 NW配下の端末として動かすための連携設定をする。
取り敢えず以下の設定項目を参考に、2台程サラリとVM環境を構築。
1台目 | 2台目 | |
---|---|---|
名前 | tengu | kappa |
タイプ | Linux | Linux |
バージョン | Red Hat (64-bit) | Red Hat (64-bit) |
メモリーサイズ | 512 MB | 512 MB |
ハードドライブ | 仮想ハードドライブを作成する | 仮想ハードドライブを作成する |
ファイルサイズ | 4.00 GB | 4.00 GB |
ハードドライブのファイルタイプ | VDI (VirtualBox Disk Image) | VDI (VirtualBox Disk Image) |
物理ハードドライブにあるストレージ | 可変サイズ | 可変サイズ |
更に 設定
を開いて以下のように修正。
tengu
オーディオ
オーディオを有効化
: 未チェックネットワーク
: アダプター1
割り当て
: NATシリアルポート
:ポート1
シリアルポートを有効化
ポートモード
: ホストにパイプ
パイプ作成
: チェック
ポート/ファイルパス
:\\.\pipe\VBOX\tengu
- `kappa
オーディオ
オーディオを有効化
: 未チェックネットワーク
: アダプター1
割り当て
: NATシリアルポート
:ポート1
シリアルポート
を有効化
ポートモード
: ホストにパイプ
パイプ作成
: チェック
ポート/ファイルパス
:\\.\pipe\VBOX\kappa
このうちあまり聞き慣れないのは シリアルポート:ポート1
の設定かしらん。VMホストに名前付きパイプを作って、それをゲストOSのシリアルポートに繋げて仮想的にシリアル接続を実現する仕組み。 \\.\pipe\
なるNPFS(Named Pipe FileSystem)配下に置かれて、通常のファイル形式ではないけれど、以下のプログラムを使うと現状どんなパイプがあるか確認できる。
GNS3自体がコンソール持っているしあまり意味無いかもだけど、SuperPuttyでコンソール作業をまとめたいって人には便利なのかな。但し動作確認した感じでは今一不安定。繋がったり繋がらなかったり、そもそもVMの動作(特に電源ON/OFF周り)がうまく動かなくなったりして謎。ウチとこのホストPCが不安定なせいかも。さておき。
イメージを用意したらCentOS 7のisoを読み込ませて起動、サクッとインストール、シリアルポートを許可する設定を仕込んでおく。
# vi /etc/default/grub
##GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_tengu/root rd.lvm.lv=centos_tengu/swap rhgb quiet"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_tengu/root rd.lvm.lv=centos_tengu/swap rhgb quiet console=tty0 console=ttyS0,9600n8"
# grub2-mkconfig -o /boot/grub2/grub.cfg
ここまでVirtualBoxのお話。さてよーやっとGNS3側の設定だけれど、まああまり大した事するわけでもなく。
- メニュー
Edit
-Preferences
VirtualBox
-VirtualBox VMs
New
VM list
でtengu
、kappa
それぞれ選択してFinish
Windowsホスト
GNS3の仮想NWに繋げる端末はVirtualBoxだけでなく、ホストPC自体のNICに繋げる事も出来る。というか仮想NW内からInternet接続する為にも必要なので、初期設定として準備しておく。
ループバック・アダプタの作成
デバイスマネージャー
- ホスト名を右クリック
レガシハードウェアの追加
一覧から選択したハードウェアをインストールする
を選択して次へ
ネットワークアダプター
を選択して次へ
Microsoft
Microsoft Loopback Adapter
を選択して次へ
ループバック用IPとICS設定
ネットワークと共有センター
アダプターの設定の変更
ローカルエリア接続 XX
……という名前は非常に判り難いのでLoopback
などの名前に変更- まずはIP設定。
Loopback
を右クリックプロパティ
インターネットプロトコルバージョン4(TCP/IPv4)
-プロパティ
IPアドレス
サブネットマスク
の2つのみ設定
設定値はGNS3のインターネット接続口に利用する予定のIPアドレス。詳しくは後述するけれど、ウチとこは以下のような感じ。
IPアドレス
:172.16.254.1
サブネットマスク
:255.255.255.248
- 続いてICS設定。現在ホストPCでインターネット接続に利用している
ネットワーク接続
を右クリック、プロパティ
共有
を開き、以下の通り設定
ネットワークのほかのユーザーに、このコンピューターのインターネット接続をとおしての接続を許可する
: チェック
# どうでも良いけれどWindowsはたまーにみょんな言い回しをしよる。
ホームネットワーク接続
:Loopback
ネットワークをほかのユーザーに、共有インターネット接続の制御や無効化を許可する
: チェックを外す
ループバック・アダプタとICSの恩恵
以下蛇足、この作業は一体何なのって話。順を追って、まず何だかよく判らん言葉をちょいと補足。
- ループバック・アダプタ
よく127.0.0.1
とか、自分自身を示す「ループバック・アドレス」てのがある。ある端末に192.168.1.1
というIPが設定されていて、だけれど該当のNICが通信機器に接続されていない場合、自身のIPに対しping 192.168.1.1
してもリンクダウンのため応答しない。しかし自身のループバック・アドレスに対するping 127.0.0.1
は、NICがダウンしていても変わらず応答してくれる。その端末の内では192.168.1.1
=127.0.0.1
という認識をしていて、それが所謂自分自身を示す「ループバック・アドレス」の役割。ポイントは「NICがリンクダウンしていても応答してくれる」という点。
「ループバック・アダプタ」も同様に、こちらはNIC自身を示すループバック。これもNICが無効だったりダウンしてても常に応答してくれるアダプタとして振舞う。……んでコレ、何が嬉しいのん?という話なのだが。
仮想環境(以下ゲスト)のNICは、一般的にホストのNICと連携させてNATやBridgeして使うことが多い。そんな時おもむろにホストのNICをぶっ千切ったらどうなるか。同NICと連携している全てのゲスト側のNICも全滅し、通信出来なくなる悲しみの連鎖。
そこでゲスト側のNICを「ループバック・アダプタ」に連携しておくと、例えホストのNICがぶっ千切れても、ループバック・アダプタは常に応答してくれるため、ゲスト側の通信まで巻き添えを食わずに済む。 - ICS
端折って言えばWindows版NAPT。これ有効化することで、該当のNICは「ホームネットワーク接続」上の他端末からの通信を中継・IP変換してくれるようになる。
GNS3は仮想NWなので当然ながら直接Internet回線に繋げられない。そこで代わりに Loopback
のループバック・アダプタを使い、物理NICへ中継してInternetへ出られるようにしてやる。GNS3に限らず、仮想環境のネットワーク設定としては割と常套手段らしいデス。