今回は以前CCNAの学習をしていた際にネットで見つけたワザを紹介しようと思う。※CCNAは挫折して取ってない。
もう10年以上前なのでどのサイトだったのかも忘れてしまい、オリジナルを紹介できないのは大変恐縮である。
しかし折角ブログを書いているんだから頭の中に眠らせておくのももったいないと思い、今回紹介することにした。
さて、実機を使ってネットワークの学習をしたいと思ったとき、一番困るのは端末の準備である。
今でこそラズパイのような小型で安価なコンピューターがあるけど、私が学習していた当時はそうしたデバイスが登場する前だったので、ネットワークの学習用に何台もパソコンを買うお金などなかった。
そこで見つけたのがパソコンにUSB-LANアダプタをたくさん挿して、各アダプタをOracle VirtualBoxの仮想マシンに割り当てる方法。
準備したのがこちらの商品。
適当なスイッチ1台
LANケーブル4本
USB-LANアダプタ4個
4USBハブ
金額はそれぞれ値段シール参照。トータルでだいたい1万ちょいだったけどスイッチは各種機能を検証したくて家庭用としてはちょっと良いものを買ったので、単に挿して使うだけのスイッチなら安いもので2千円くらいで買える。
セットアップするとこんな感じになる。
あとはACアダプターを指してUSBをパソコンにつなぐとWindowsにネットワークアダプタが認識される。
USB_Ether_A~Dという名前は自分が混乱しないように付けたけど、実際にLinuxから見えるのはこの名前じゃないのであんまり意味はなかったかな。。
1個目が「TP-LINK Gigabit Ethernet USB Adapter」、2個目以降は「TP-LINK Gigabit Ethernet USB Adapter #2」といった内部名が付けられるので、そちらが実際に仮想マシンの設定の際に出てくる名称。
さて、仮想マシンには1台のPCで4台の仮想マシンを動かす関係で、デスクトップのないCUIのみのLinuxを使用する。
昔は1台ずつインストールしていたけど、最近覚えたVagrantを使って構成してみよう。
4台あるので4つフォルダを作って、それぞれ以下の内容でVagrantfileを放り込んだらvagrant upコマンドで起動する。
Vagrant.configure("2") do |config| config.vm.box = "hashicorp/bionic64" config.vm.network "public_network", bridge: "" config.vm.provision "shell", inline: <<-SHELL ifconfig eth1 192.168.99.1 netmask 255.255.255.0 up SHELL end
起動時にどのネットワークカードとブリッジするか聞かれるので、番号で回答してEnter。
あとはvagrant sshで接続するだけ。ちなみにIPアドレスの末尾はそれぞれのVagrantfileで変更している。
4台同時に起動している図。
pingコマンドでお互いに通信させることができる。
これらのマシンはeth0がホストOSへのNATになっているので実は親機経由で通信しているのでは?という疑いがあったが、LANケーブルを抜いてみたところちゃんとpingの応答が止まった。ちゃんと、仮想マシンは物理ネットワークを通って通信している。
おわりに
今回こんな環境を作ったのは、ラズパイでDHCPサーバーを立てる際にいきなり本番環境に投入してしまうと運用中の子機に悪影響が出るため検証環境が欲しかったということがある。
VirtualBoxが用意する仮想のネットワークアダプタでももちろんゲスト同士は通信できるが、DHCPにすると自動的にVirtualBox組込のDHCPサーバーが反応してしまうし、一応無効にはできるようなんだけどやっぱり実機で試すのが安心。バーチャルだとなんか裏で余計なお節介を焼いてたら、いざ本番てときにコケると怖いので。。
あと今回は繋げば動くスイッチで試しているので勉強も何もないんだけど、例えばCiscoルーターのような設定が必要な機器でも同じようにUSB-LANアダプタを使える。
CCNAの学習セットと謳って中古ルーター3台+中古スイッチ3台セットとかが売ってるけど、ルーター・スイッチでネットワークを構成した後は、LANケーブルを好きなところに繋げばよいだけなので、検証用のパソコンは1台で済むわけだ。あとは仮想マシン同士が構築したネットワークを経由して通信できるかを見ていくことになる。
ということで、今回は実機を使ってネットワークの勉強がしたいけど端末がネックだという方向けに仮想マシンで対応する方法を紹介した。
ネットワーク学習者の役に立てば幸いである。
あ、ちなみにそもそもネットワークの学習に実機が必須かというと、シミュレーターの方がコスパが優れているという意見の方が多いので、鵜呑みにして散財しても責任は負いかねる。
実機は、ロマンだ!
以上。