tag:crieit.net,2005:https://crieit.net/tags/VM/feed 「VM」の記事 - Crieit Crieitでタグ「VM」に投稿された最近の記事 2022-12-28T23:48:38+09:00 https://crieit.net/tags/VM/feed tag:crieit.net,2005:PublicArticle/18356 2022-12-28T23:48:38+09:00 2022-12-28T23:48:38+09:00 https://crieit.net/posts/GNS3-VyOS-63ac5746e74c7 GNS3 に VyOS 仮想ルーターを追加する長い道のり④ 応用編 <p>本記事は <a target="_blank" rel="nofollow noopener" href="https://qiita.com/advent-calendar/2022/nw-engineering-are-core-output">【アットホームな現場です】🎄★☆ネットワーク系エンジニア★☆アレコレアウトプット★☆🎄 Advent Calendar 2022</a> 25日目の記事だ。<br /> ごめんなさい、色々書いてたら結局分量が多くなって期限内に書き切れなかった。</p> <p><a target="_blank" rel="nofollow noopener" href="https://gns3.com/">GNS3</a> という OSS のネットワークエミュレータを、 Cisco の IOS などの取得なしに、無料のライセンス内で利用できるようにしようという話。</p> <p>今回は最終回の応用編。<br /> 以前の投稿はこちら。<br /> <a href="https://crieit.net/posts/GNS3-VyOS">https://crieit.net/posts/GNS3-VyOS</a> (① 環境導入編)<br /> <a href="https://crieit.net/posts/GNS3-VyOS-63ac561ed5a75">https://crieit.net/posts/GNS3-VyOS-63ac561ed5a75</a> (② イメージ準備編)<br /> <a href="https://crieit.net/posts/GNS3-VyOS-63ac5693838af">https://crieit.net/posts/GNS3-VyOS-63ac5693838af</a> (③ 実践編)</p> <h2 id="目指すゴール"><a href="#%E7%9B%AE%E6%8C%87%E3%81%99%E3%82%B4%E3%83%BC%E3%83%AB">目指すゴール</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-00.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-00.png" alt="" /></a><br /> 今回は、上記の図のように、 ルーターを 2台 置いて、 ルーターを跨いだ端末間 (<code>tmp-net-tools-1</code>, <code>-2</code>) で通信ができるように構成していく。</p> <h2 id="相互通信するコンテナの準備"><a href="#%E7%9B%B8%E4%BA%92%E9%80%9A%E4%BF%A1%E3%81%99%E3%82%8B%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E3%81%AE%E6%BA%96%E5%82%99">相互通信するコンテナの準備</a></h2> <p>ルーターを跨いだ通信を実際に行うことになるコンテナを準備する。</p> <p>通信の確認を行う最低限のモジュール(パッケージ)をインストールしたイメージを用意する。</p> <p>(リスクを自分で評価しつつ)第三者が用意したイメージを使っても良いのだが、今回は自分でビルドしてみよう。</p> <ol> <li>まず、 VM管理ツールや ssh で GNS3 VM の管理画面に入る</li> <li>メニューから Shell を選択する<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-trouble-01-03.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-trouble-01-03.png" alt="" /></a></li> <li><p>以下のコマンドで、 <code>tmp-net-tools</code> という名前をつけた Docker イメージをビルドする<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-01.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-01.png" alt="" /></a></p> <ul> <li> <br /> <code>shell gns3@gns3vm:~$ docker build -t tmp-net-tools - FROM alpine:latest RUN apk add --no-cache curl iperf3 net-tools EOF</code></li> </ul></li> <li><p>GNS3 (GUI) の Preferences を開き、 Docker コンテナテンプレートで上記のビルド済み <code>tmp-net-tools</code> でテンプレートを作成する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-02.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-02.png" alt="" /></a></p> <ul> <li>Console type は telnet で OK.</li> </ul></li> </ol> <p>ここでポイントとなるのは、 GNS3 で動かすコンテナは基本的に(明示的に接続市内限り)外部ネットワークに繋がっていないが、 GNS3 VM で Docker をビルドする際は、外部ネットワークに繋がると言う点だ。<br /> このため、コンテナ内にて追加で必要なパッケージがある場合、このように予めコンテナの build 段階でインストールしておく必要がある。</p> <h2 id="ネットワークの構成 1"><a href="#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E6%A7%8B%E6%88%90+1">ネットワークの構成 1</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-00.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-00.png" alt="" /></a><br /> コンテナテンプレートの準備ができたら、ペタペタとデバイスを貼って結線していく。<br /> 2つの VyOS とも、 eth0 を端末のコンテナ側に、 eth1 をルーター同士を繋ぐ Switch に繋いでいこう。</p> <p>本来 VyControl は、 1サービスで複数の VyOS を管理できるはずなのだが、 試した感じどうも管理対象の切り替えでエラーになってしまうので、 素直に VyOS と VyControl を 1対1 で作成している。<br /> ただ、そうするとホストPCからそれぞれの VyControl にアクセスする際に同じ IP アドレスとなって Cookie が衝突するため、片方にログインするともう一方からログアウトされてしまう問題があるので注意。</p> <p>また、 vycontrol-host や tmp-net-tools の各コンテナにて、 Edit config からの <code>/etc/network/interfaces</code> の編集で、 eth0 を DHCP から IP アドレスを取得するよう設定することを忘れずに。</p> <p>VyOS は前回の設定に加えて eth1 の IP アドレスを静的に決めるため、それぞれ以下のように設定する。</p> <p><code>VyOS1.3.2-1</code>:</p> <pre><code class="shell">vyos@vyos:~$ configure vyos@vyos# set interfaces ethernet eth0 address '192.168.11.254/24' vyos@vyos# set interfaces ethernet eth1 address '192.168.1.1/24' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' default-router '192.168.11.254' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' name-server '192.168.11.254' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' range 0 start '192.168.11.17' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' range 0 stop '192.168.11.126' vyos@vyos# set service https api keys id my_id key 'my_secret_key' vyos@vyos# set service https certificates system-generated-certificate lifetime '65535' vyos@vyos# set service https virtual-host vyos1 listen-address '192.168.11.254' vyos@vyos# set service https virtual-host vyos1 listen-port '6443' vyos@vyos# set service https virtual-host vyos1 server-name 'vyos1.example.com' vyos@vyos# commit vyos@vyos# save vyos@vyos# exit </code></pre> <p><code>VyOS1.3.2-2</code>:</p> <pre><code class="shell">vyos@vyos:~$ configure vyos@vyos# set interfaces ethernet eth0 address '192.168.21.254/24' vyos@vyos# set interfaces ethernet eth1 address '192.168.1.2/24' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.21.0/24' default-router '192.168.21.254' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.21.0/24' name-server '192.168.21.254' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.21.0/24' range 0 start '192.168.21.17' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.21.0/24' range 0 stop '192.168.21.126' vyos@vyos# set service https api keys id my_id key 'my_secret_key' vyos@vyos# set service https certificates system-generated-certificate lifetime '65535' vyos@vyos# set service https virtual-host vyos1 listen-address '192.168.21.254' vyos@vyos# set service https virtual-host vyos1 listen-port '6443' vyos@vyos# set service https virtual-host vyos1 server-name 'vyos1.example.com' vyos@vyos# commit vyos@vyos# save vyos@vyos# exit </code></pre> <p>ちなみに、 VyOS の仮想デバイスは、 一通り設定を完了させてから、仮想デバイスを複製できる。<br /> VyOS のインストールなどの作業が 1回 で済む点は便利なのだが、 コピー後 MAC アドレスが変更になるため、仮想デバイス内のインターフェース名が、 eth0, eth1, eth2 から eth3, eth4, eth4 へと名前を変えてしまうことが多く、 GNS3 UI 上の NIC のインターフェース名と、 仮想デバイス内の名前が一致しなくなってややこしい事になるので、ご注意を。</p> <h2 id="ネットワークの構成 2"><a href="#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E6%A7%8B%E6%88%90+2">ネットワークの構成 2</a></h2> <p>さて、ここで各端末 (<code>tmp-net-tools-1</code>, <code>-2</code>) が DHCP サーバーに割り当てられた IP アドレスを使って、お互いに ping を打っても、当然届かず失敗する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-03.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-03.png" alt="" /></a></p> <p>ここで VyControl を使って、 それぞれの VyOS に静的ルーティングを定義する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-05.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-05.png" alt="" /></a><br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-06.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-06.png" alt="" /></a><br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-07.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-07.png" alt="" /></a><br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-08.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-08.png" alt="" /></a></p> <p>その後改めてお互いに ping を打つと、無事疎通ができるようになった。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-04.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-04.png" alt="" /></a></p> <h2 id="外部との接続"><a href="#%E5%A4%96%E9%83%A8%E3%81%A8%E3%81%AE%E6%8E%A5%E7%B6%9A">外部との接続</a></h2> <p>さらなる応用として、 "Cloud" デバイスを使って外部機器との接続もできる。</p> <p>まず、適当な物理NIC (USB LAN アダプタ) を、仮想マシン管理ツール側で GNS3 VM のネットワークアダプタに割り当てる。<br /> その後、 GNS3 内で "Cloud" デバイスをその物理NIC に割り当ててやれば、物理ルーターと仮想ルーターとの間で、論理的なネットワークの接続を構成できる。</p> <p><a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-09.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-09.png" alt="" /></a></p> <h2 id="おわりに"><a href="#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB">おわりに</a></h2> <p>…とまあ、こんなところが GNS3 の基本的な使い方となる。<br /> 慣れてきたら、不完全な VyControl なんか使わず、 直接 VyOS に CUI コマンドで設定を定義してやると良いかもしれない。</p> <p>長々となる解説となったが、誰かの役に立てば幸いだ。</p> advanceboy tag:crieit.net,2005:PublicArticle/18355 2022-12-28T23:45:39+09:00 2022-12-29T00:00:03+09:00 https://crieit.net/posts/GNS3-VyOS-63ac5693838af GNS3 に VyOS 仮想ルーターを追加する長い道のり③ 実践編 <p>本記事は <a target="_blank" rel="nofollow noopener" href="https://qiita.com/advent-calendar/2022/nw-engineering-are-core-output">【アットホームな現場です】🎄★☆ネットワーク系エンジニア★☆アレコレアウトプット★☆🎄 Advent Calendar 2022</a> 17日目の記事だ。</p> <p><a target="_blank" rel="nofollow noopener" href="https://gns3.com/">GNS3</a> という OSS のネットワークエミュレータを、 Cisco の IOS などの取得なしに、無料のライセンス内で利用できるようにしようという話。</p> <p>環境導入編、イメージ準備編に続く実践編。<br /> 以前の投稿はこちら。<br /> <a href="https://crieit.net/posts/GNS3-VyOS">https://crieit.net/posts/GNS3-VyOS</a> (① 環境導入編)<br /> <a href="https://crieit.net/posts/GNS3-VyOS-63ac561ed5a75">https://crieit.net/posts/GNS3-VyOS-63ac561ed5a75</a> (② イメージ準備編)</p> <p>実際に、 GNS3 上で VyOS を使ってみよう。</p> <h2 id="GNS3 プロジェクトを作成"><a href="#GNS3+%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90">GNS3 プロジェクトを作成</a></h2> <p>GNS3 を開き、適当なプロジェクトを新規作成(ないし開く)する。</p> <p>平行して、 GNN3 VM が起動するまで待とう。</p> <h2 id="VyOS の起動"><a href="#VyOS+%E3%81%AE%E8%B5%B7%E5%8B%95">VyOS の起動</a></h2> <p>GNS3 GUI 上で、テンプレート一覧から VyOS のデバイスをドラッグ&ドロップして、プロジェクトに追加する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-run-vyos-01.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-run-vyos-01.png" alt="" /></a></p> <p>デバイスアイコンの右クリックで Configure をクリックしてプロパティを開き、 On close の動作を Save the VM state (休止状態) にしておくとよいだろう。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-run-vyos-02.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-run-vyos-02.png" alt="" /></a></p> <p>その後、 デバイスアイコンの再度右クリックで Start を選択し、仮想マシンをスタートさせる。<br /> デバイスアイコンをダブルクリックすると、 コンソールが起動する。 iso ファイルがブータブルディスクになっていてるため、VyOS の起動ログが表示されているはずだ。<br /> ログイン画面が出るまで待つ。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-run-vyos-03.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-run-vyos-03.png" alt="" /></a></p> <p>デフォルトの認証情報 <a target="_blank" rel="nofollow noopener" href="https://docs.vyos.io/en/equuleus/installation/install.html#live-installation">(login: <code>vyos</code>, password: <code>vyos</code>)</a> を使ってログインする。</p> <h3 id="VyOS 仮想 HDD へのインストール"><a href="#VyOS+%E4%BB%AE%E6%83%B3+HDD+%E3%81%B8%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">VyOS 仮想 HDD へのインストール</a></h3> <p>このままでも VyOS として利用できるのだが、 "<a target="_blank" rel="nofollow noopener" href="https://phabricator.vyos.net/T2958">T2958 DHCP server doesn't work from a live CD</a>" といった問題もあるようなので、一旦仮想 HDD にインストールする。<br /> → <a target="_blank" rel="nofollow noopener" href="https://docs.vyos.io/en/equuleus/installation/install.html#permanent-installation">Permanent installation — VyOS 1.3.x (equuleus) documentation</a></p> <p>ログイン後、以下のコマンドを実行し、いくつかの質問に答えれば OK だ。</p> <pre><code class="shell">vyos@vyos:~$ install image </code></pre> <p>その後、再起動する。</p> <pre><code class="shell">vyos@vyos:~$ reboot </code></pre> <p>再起動前は、 <code>cat /proc/cmdline</code> のカーネルに渡された <code>BOOT_IMAGE</code> が <code>/live/vmlinuz</code> となっていたのが、</p> <pre><code class="shell">vyos@vyos:~$ cat /proc/cmdline # 再起動前 BOOT_IMAGE=/live/vmlinuz boot=live components hostname=vyos username=live nopersistence noautologin nonetworking union=overlay console=ttyS0,115200 console=tty0 net.ifnames=0 biosdevname=0 initrd=/live/initrd.img </code></pre> <p>再起動後は、 <code>install image</code> の途中で入力したイメージ名のものに変更されていることがわかる。</p> <pre><code class="shell">vyos@vyos:~$ cat /proc/cmdline # 再起動後 BOOT_IMAGE=/boot/1.3.2/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/1.3.2 console=tty0 console=ttyS0,115200 </code></pre> <h3 id="VyOS の初期設定"><a href="#VyOS+%E3%81%AE%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A">VyOS の初期設定</a></h3> <p>VyOS の操作は VyContol に任せたい… が、どうしても VyControl から VyOS にアクセスできるようにするため、以下の 3点 はコマンドで設定する必要がある。</p> <ul> <li>インターフェースへの IP の設定 <ul> <li>以下の例では、 <code>192.168.11.254/24</code> に設定</li> </ul></li> <li>DHCP サーバーの起動 <ul> <li>以下の例では、 <code>192.168.11.0/24</code> のサブネットに、 DNS, デフォルトゲートウエイを自分自身、 DHCP の貸し出し範囲を <code>.17</code> から <code>.126</code> の範囲で指定</li> </ul></li> <li>(VyControl で操作させるための) <a target="_blank" rel="nofollow noopener" href="https://docs.vyos.io/en/equuleus/configuration/service/https.html">HTTP API</a> の有効化 <ul> <li>API のアクセスキーを <code>my_secret_key</code> (任意の文字列) に設定</li> </ul></li> </ul> <p>このため、 VyOS のコンソールでログインし、以下のコマンドを入れる。</p> <pre><code>vyos@vyos:~$ configure vyos@vyos# set interfaces ethernet eth0 address '192.168.11.254/24' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' default-router '192.168.11.254' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' name-server '192.168.11.254' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' range 0 start '192.168.11.17' vyos@vyos# set service dhcp-server shared-network-name 'subnet01' subnet '192.168.11.0/24' range 0 stop '192.168.11.126' vyos@vyos# set service https api keys id my_id key 'my_secret_key' vyos@vyos# set service https certificates system-generated-certificate lifetime '65535' vyos@vyos# set service https virtual-host vyos1 listen-address '192.168.11.254' vyos@vyos# set service https virtual-host vyos1 listen-port '6443' vyos@vyos# set service https virtual-host vyos1 server-name 'vyos1.example.com' vyos@vyos# commit vyos@vyos# save vyos@vyos# exit </code></pre> <p>これで、 VyOS 側の設定は完了だ。</p> <h2 id="VyControl の起動"><a href="#VyControl+%E3%81%AE%E8%B5%B7%E5%8B%95">VyControl の起動</a></h2> <p>GNS3 GUI 上で、テンプレート一覧から VyControl をドラッグ&ドロップして、プロジェクトに追加する。</p> <p>スイッチングハブか何かを間に咬ませて(2デバイスを繋ぐだけなら無くても良いけど)、 VyOS と VyControl を結線する。</p> <p>デバイスアイコンの右クリックで Edit config をクリックして、コンテナの <code>/etc/network/interfaces</code> を編集する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-start-vyctrl-docker-container-01.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-start-vyctrl-docker-container-01.png" alt="" /></a><br /> <code># DHCP config for eth0</code> の部分のコメントアウトを外せば、 VyOS の DHCP から IPアドレスを取得するようになる。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-start-vyctrl-docker-container-02.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-start-vyctrl-docker-container-02.png" alt="" /></a></p> <p>その後、 デバイスアイコンの再度右クリックで Start を選択し、コンテナをスタートさせる。<br /> デバイスアイコンをダブルクリックすると、 コンテナ内にフォワードされるアドレスがブラウザ側で開く。</p> <h3 id="VyControl の初期設定"><a href="#VyControl+%E3%81%AE%E5%88%9D%E6%9C%9F%E8%A8%AD%E5%AE%9A">VyControl の初期設定</a></h3> <p>VyControl の初回アクセス時は、 管理者アカウントを作るように表示されるので、適当なユーザー名とパスワードで作成しておく。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-start-vyctrl-docker-container-03.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-start-vyctrl-docker-container-03.png" alt="" /></a></p> <p>そして、 VyControl のコントロール対象の VyOS インスタンス情報を設定してやる。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-start-vyctrl-docker-container-04.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-start-vyctrl-docker-container-04.png" alt="" /></a></p> <p>Router の Interfaces 情報を開き、 VyOS ルーター側の interface 一覧が表示されていれば、設定は完了だ。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-start-vyctrl-docker-container-05.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-start-vyctrl-docker-container-05.png" alt="" /></a></p> <p>以上で、 VyControl から VyOS が操作できるようになった。</p> <h2 id="トラブルシューティング"><a href="#%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0">トラブルシューティング</a></h2> <h3>VyOS 起動時に <code>KVM acceleration cannot be used</code> と出る</h3> <p><a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-trouble-01-01.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-trouble-01-01.png" alt="" /></a><br /> VyOS 起動時に、 以下のようなエラーが出て起動に失敗するケース。</p> <p><code>text/plain KVM acceleration cannot be used (/dev/kvm doesn't exist). It is possible to turn off KVM support in the gns3_server.conf by adding enable_kvm = false to the [Qemu] section.</code></p> <p><a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/?p=1708">① 環境導入編</a> で触れていた、「入れ子になった(ネストされた)仮想化」が機能しておらず、 GNS3 VM の中で更に、 KVM という仮想化支援機能を使用して二重の仮想化にて VyOS を起動するのに失敗している。<br /> GNS3 VM を開くと以下のように "KVM support available: True" となるべきところが "False" となっていると思われる。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-trouble-01-02.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-trouble-01-02.png" alt="" /></a></p> <p>まずは、 OS のバージョンや CPU, 仮想化管理ツールのバージョンが、ネストされた仮想化をサポートしているかをもう一度確認しよう。</p> <p>しかし、 CPU や仮想化管理ツールの組み合わせによっては、どうしても有効化できない場合がある。</p> <p>そういった場合は、動作速度は遅くなるが KVM による仮想化支援機能を無効化してしまう方法もある。</p> <ol> <li>まず、 VM管理ツールや ssh で GNS3 VM の管理画面に入る</li> <li>メニューから Configure を選択する<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-trouble-01-03.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-trouble-01-03.png" alt="" /></a></li> <li><p>以下の内容を追記し、 Ctrl+X で保存、 その後 GNS3 VM を再起動する。</p> <pre><code>[Qemu] enable_kvm = false </code></pre> <p><a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-trouble-01-04.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-trouble-01-04.png" alt="" /></a></p></li> </ol> <p>ただし、 VyOS の動作速度がかなり落ちるので注意。</p> <h2 id="次回"><a href="#%E6%AC%A1%E5%9B%9E">次回</a></h2> <p>最後となる<a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/?p=1748">次回</a>は応用編。</p> advanceboy tag:crieit.net,2005:PublicArticle/18354 2022-12-28T23:43:42+09:00 2022-12-28T23:57:22+09:00 https://crieit.net/posts/GNS3-VyOS-63ac561ed5a75 GNS3 に VyOS 仮想ルーターを追加する長い道のり② イメージ準備編 <p>本記事は <a target="_blank" rel="nofollow noopener" href="https://qiita.com/advent-calendar/2022/nw-engineering-are-core-output">【アットホームな現場です】🎄★☆ネットワーク系エンジニア★☆アレコレアウトプット★☆🎄 Advent Calendar 2022</a> 15日目の記事だ。 (空いていたので埋め)</p> <p><a target="_blank" rel="nofollow noopener" href="https://gns3.com/">GNS3</a> という OSS のネットワークエミュレータを、 Cisco の IOS などの取得なしに、無料のライセンス内で利用できるようにしようという話。</p> <p>前回の環境導入編に続く第2回。<br /> <a href="https://crieit.net/posts/GNS3-VyOS">https://crieit.net/posts/GNS3-VyOS</a></p> <p>GNS3 のインストールと GNS3 VM へのアタッチが完了している状態から始める。</p> <h2 id="VyOS イメージの取得"><a href="#VyOS+%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AE%E5%8F%96%E5%BE%97">VyOS イメージの取得</a></h2> <p>GNS3 のマーケットプレイスには、 <a target="_blank" rel="nofollow noopener" href="https://gns3.com/marketplace/appliances/vyos">VyOS のテンプレート</a> が用意されており、これを使うと手軽に GNS3 内で VyOS のルーターを追加できる。</p> <p>このテンプレートを使うためには、 VyOS の特定のバージョンの ISO イメージファイルが必要だ。<br /> しかし、 VyOS の LTS 版では、ビルド済みイメージのダウンロードは、サブスクリプション契約者(または非営利団体など)のみとなっている。<br /> <a target="_blank" rel="nofollow noopener" href="https://docs.vyos.io/en/equuleus/installation/install.html#download">https://docs.vyos.io/en/equuleus/installation/install.html#download</a></p> <p>一方で、 VyOS 自体は OSS であり、 GPL のライセンスを守る限りソースコードを自由にビルドして利用できる。 そのビルド自体も docker を利用したツールセットが用意されていたりと、比較的しっかり整備されていて失敗しにくい。<br /> あまり性能が高くないノートPC でも 10分 程度でビルド可能だ。</p> <h3 id="VyOS イメージを自分でビルド"><a href="#VyOS+%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%82%92%E8%87%AA%E5%88%86%E3%81%A7%E3%83%93%E3%83%AB%E3%83%89">VyOS イメージを自分でビルド</a></h3> <p>このため、 <a target="_blank" rel="nofollow noopener" href="https://docs.vyos.io/en/equuleus/contributing/build-vyos.html#build-iso">マニュアルの Build 手順</a>に従って VyOS 1.3 を自分でビルドしてイメージファイルを作成しよう。</p> <p>そのビルドには、前回インストールした Docker が必要となる。<br /> 加えて、 Docker は WSL2 内のディストリビューションから利用する必要がある。<br /> Docker 自体は、 Windows のシェル (コマンドプロンプトや PowerShell) から直接起動できるが、今回行う作業では Windows と Linux のファイルシステム違いによる問題で、ビルドが失敗してしまうためだ。</p> <p>というわけで、 前回 WSL Integration を有効にした、適当な WSL2 ディストリビューション (<a target="_blank" rel="nofollow noopener" href="https://apps.microsoft.com/store/detail/ubuntu-22041-lts/9PN20MSR04DW">Ubuntu 22.04.1 LTS</a> など) を起動する。<br /> 適当な空のフォルダをカレントフォルダに設定し、以下のように実行する。</p> <ol> <li><p>git でビルドスクリプトを clone して、 docker でビルド環境を起動する</p> <pre><code class="shell">$ git clone -b equuleus --single-branch https://github.com/vyos/vyos-build.git $ cd ./vyos-build/ $ docker run --rm -it --privileged -v $(pwd):/vyos -w /vyos vyos/vyos-build:equuleus bash </code></pre></li> <li><p>docker コンテナに入ったら、以下のコマンドでビルドする。</p> <pre><code class="shell">vyos_bld@xxxx:/vyos# ./configure --architecture amd64 --build-type release --version 1.3.2 vyos_bld@xxxx:/vyos# sudo make iso </code></pre></li> <li><p>ビルドが成功すれば、 <code>build</code> ディレクトリに .iso ファイルが出力されているはずだ。 ホスト PC 側から WSL2 内のビルドディレクトリを開き、 ホスト PC にコピーする。</p> <ul> <li><code>\\wsl$\<WSL ディストリビューション名>\...</code> のネットワークパスで、 ホスト PC側から WSL2 のファイルを参照できる。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-vyos-iso-image.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-vyos-iso-image.png" alt="" /></a></li> </ul></li> </ol> <p>ちなみに、 このビルド手順に関しては、 プロキシ環境下ではどうしてもうまくビルドができなかった。<br /> ビルドスクリプトが、プロキシ環境下のことをあまり考慮していないのだと思われる。</p> <h3 id="VyOS イメージの野良ビルドを取得する"><a href="#VyOS+%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AE%E9%87%8E%E8%89%AF%E3%83%93%E3%83%AB%E3%83%89%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B">VyOS イメージの野良ビルドを取得する</a></h3> <p>もし自分でイメージのビルドができなかった場合…</p> <p>GPL のライセンス上、ビルドしたイメージを再配布することも再配布されたビルドを利用することも、ライセンスを守る限り問題は無い。<br /> このため、 VyOS の LTS版 のビルドを公開している人がいるので、それを取得して利用することもできる。</p> <p>→ <a target="_blank" rel="nofollow noopener" href="https://github.com/9l/vyos-build-action/releases">Releases · 9l/vyos-build-action</a></p> <p>GitHub Actions でビルドされており、比較的信頼できそうなイメージではあるが、 VyOS 以外の第三者によるもので何か余計な物が仕込まれているリスクは上がるので、利用に関しては自己責任で。</p> <p>最初からこれを紹介しとけよって? まぁまぁ、自分でビルドできるならそれに越したことはないし。</p> <h2 id="VyOS のテンプレートを GNS3 に取り込み"><a href="#VyOS+%E3%81%AE%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%82%92+GNS3+%E3%81%AB%E5%8F%96%E3%82%8A%E8%BE%BC%E3%81%BF">VyOS のテンプレートを GNS3 に取り込み</a></h2> <ol> <li>GNS3 のマーケットプレイス Appliances から <a target="_blank" rel="nofollow noopener" href="https://gns3.com/marketplace/appliances/vyos">VyOS のテンプレート</a> (<code>vyos.gns3a</code>) をダウンロードする。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-01.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-01.png" alt="" /></a></li> <li>GNS3 GUI の [File]->[Import appliance] メニューから、ダウンロードした <code>vyos.gns3a</code> を取り込む。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-02.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-02.png" alt="" /></a></li> <li>取り込み先をどこにするか聞いてくるので、 GNS3 VM を選択する。 (これまで手順通りなら、他の選択肢はグレーアウトされているはず)<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-03.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-03.png" alt="" /></a></li> <li>GNS3 VM 内で VyOS を動かす仮想マシン (入れ子の VM) をどれにするか選択する。 デフォルトの選択で問題ないはず。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-04.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-04.png" alt="" /></a></li> <li>必要なファイルをインポートする。 <ol> <li>まず、 empty8G.qcow2 を選択し、 [Download] をクリックすると、 自動的に sourceforge.net のダウンロードページに飛ばされるので、それをダウンロードする。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-05.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-05.png" alt="" /></a></li> <li>[Import] ボタンで、 ↑ でダウンロードされたファイルを選択すれば、 "Found on GNS3 VM" と表示が変わる<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-06.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-06.png" alt="" /></a></li> <li>vyos-x.x.x-amd64.iso のほうは、 "Allow custom files" のチェックボックスにチェックをつけてからインポートする。 これは、 セルフビルドや野良ビルドをインポートする際に、 公式提供の .iso とファイルハッシュが異なるために、エラーとなるのを回避するためだ。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-07.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-07.png" alt="" /></a><br /> [Import] ボタンから .iso ファイルをインポートすると MD5 チェックサムが異なると怒られるが、それでもインポートを続行させる。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-08.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-08.png" alt="" /></a></li> </ol></li> <li>Ready to install 表記に変わったら、 その version を選択して、 Next をクリックする。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-09.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns2-import-vyos-appliances-09.png" alt="" /></a> <ul> <li>他のバージョンの VyOS を用意する場合は、インポートの動作を繰り返す。</li> </ul></li> </ol> <p>これで、 GNS3 で VyOS を利用する準備が整った。</p> <h2 id="VyControl Docker イメージを GNS3 に取り込み"><a href="#VyControl+Docker+%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%82%92+GNS3+%E3%81%AB%E5%8F%96%E3%82%8A%E8%BE%BC%E3%81%BF">VyControl Docker イメージを GNS3 に取り込み</a></h2> <p>VyOS を操作するフロントエンドとなる <a target="_blank" rel="nofollow noopener" href="https://github.com/vycontrol/vycontrol">VyControl</a> を、 Docker で導入する。</p> <p>公式で用意されている <a target="_blank" rel="nofollow noopener" href="https://hub.docker.com/r/robertoberto/vycontrol">robertoberto/vycontrol</a> イメージを入れれば良い… と言いたいところなのだが、別途用意した <a target="_blank" rel="nofollow noopener" href="https://hub.docker.com/r/advanceboy/vycontrol-host">advanceboy/vycontrol-host</a> のイメージを使う。</p> <p>GNS3 で vycontrol コンテナがホストする HTTP サーバーを操作する際、 GNS3 がフォワーディングしてくれので、 ホスト側のブラウザを使用する。<br /> ところが、 vycontrol の公式イメージは 127.0.0.1 以外でのアクセスを禁止しているので、フォワーディングされたアドレスで UI に入ることができない。</p> <p>そこで、 <code>ALLOWED_HOSTS</code> という環境変数経由でアクセスに使える IPアドレス を指定可能に改造したイメージを使用する。<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/advanceboy/vycontrol-host">https://github.com/advanceboy/vycontrol-host</a></p> <ol> <li>GNS3 の [Edit]->[Preferences] から "Docker container templates" の設定を開き、 [New] をクリック。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-01.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-01.png" alt="" /></a></li> <li>Docker コンテナを実行する場所をどこにするか聞いてくるので、 GNS3 VM を選択する。 (これまで手順通りなら、他の選択肢はグレーアウトされているはず)<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-02.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-02.png" alt="" /></a></li> <li>New image の Image name に、先ほどの <code>advanceboy/vycontrol-host:latest</code> のイメージ名を設定する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-03.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-03.png" alt="" /></a> <ul> <li>ちなみに、 GNS3 VM のシェル側で <code>docker pull</code> をあらかじめ実行しておけば、 "Existing imases" の選択肢に現れるようになる。</li> </ul></li> <li>Template name は、適当にわかりやすい名前で。 Adapter 数は 1 で OK。 Start Command も 空でよい。</li> <li>Console type を "http" に設定する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-04.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-04.png" alt="" /></a></li> <li>Environment で、 <code>ALLOWED_HOSTS=*</code> を設定して、コンテナテンプレートの設定を完了させる、<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-05.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-05.png" alt="" /></a></li> <li>"Docker container templates" の設定から [Edit] で詳細設定画面を開き、 "HTTP port in the container" を <strong>8000</strong> に設定する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-06.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-06.png" alt="" /></a></li> <li>更に、 Advanced タブに移動して、 コンテナの永続化パスに <code>/code/db.sqlite3</code> を追加する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-07.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-add-vyctrl-docker-container-07.png" alt="" /></a></li> </ol> <p>これで、 GNS3 で VyControl を利用する準備が整った。</p> <p>ついでに、 curl などが利用できる <a target="_blank" rel="nofollow noopener" href="https://hub.docker.com/_/buildpack-deps">buildpack-deps:stable-curl</a> イメージあたりも追加しとくと便利かもしれない。</p> <h2 id="次回"><a href="#%E6%AC%A1%E5%9B%9E">次回</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/?p=1747">次回</a>は、いよいよ GNS3 で VyOS を実行する。</p> advanceboy tag:crieit.net,2005:PublicArticle/18350 2022-12-23T23:58:54+09:00 2023-02-02T02:35:40+09:00 https://crieit.net/posts/GNS3-VyOS GNS3 に VyOS 仮想ルーターを追加する長い道のり① 環境導入編 <p>本記事は <a target="_blank" rel="nofollow noopener" href="https://qiita.com/advent-calendar/2022/nw-engineering-are-core-output">【アットホームな現場です】🎄★☆ネットワーク系エンジニア★☆アレコレアウトプット★☆🎄 Advent Calendar 2022</a> 8日目の記事だ。 (空いていたので埋め)</p> <p><a target="_blank" rel="nofollow noopener" href="https://gns3.com/">GNS3</a> という、オープンソースのネットワークエミュレータがある。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-00.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-applied-00.png" alt="" /></a></p> <p>GUI 上で、様々なネットワーク機器を仮想環境に設置して、仮想ネットワークを構築できる、大変優れたツールだ。</p> <p>実際に、ルータや端末を沢山用意して物理的に結線せずとも、 PC 上で簡単にネットワークを作成できるので、ネットワークの勉強の為に、いわゆる ネットワーク ラボ環境 を準備には最適だ。</p> <p>しかし、一つ大きな問題がある。<br /> GNS3 自体には、基本的なハードウェアのエミュレータしか含まれていないため、ルーターなどを使うには、 "Cisco の IOS" といった「ルーターのソフトウェア」を別途用意しなくてはならない。</p> <p>すでに Cisco のルーターを持っていて、 IOS イメージなどが手に入るならよいのだが、そうではない場合合法的にこういったイメージを入手するのは(主に金銭的な意味で)厳しい。</p> <p>ネットワークの検証や勉強をする目的であれば、何も Cisco のルーターでなくとも、使う分には問題ないはずだ。</p> <p>…ということで、 <a target="_blank" rel="nofollow noopener" href="https://github.com/vyos">VyOS</a> という OSS のネットワークデバイスを、 Windows 上の GNS3 で使えるようにするまでの長い道のりを、数回に分けて紹介しようと思う。</p> <p>とりあえず、今回は環境導入編。</p> <h2 id="OS"><a href="#OS">OS</a></h2> <p>実行する Windows のバージョンは、 CPU が Intel なら Windows 10 で問題ないが、 CPU が AMD (Ryzen/Epic) の場合 Windows 11 以上が望ましい。<br /> これは、 <a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/user-guide/nested-virtualization">入れ子になった(ネストされた)仮想化による仮想マシン</a> のサポートが、 OS 側に必要であるためだ。<br /> (一応、 AMD のサポートは Windows 10 Build 19640 以上となっているが、 このバージョンはプレビュービルドしか存在しない)</p> <p>一応、上記を満たしていなくても動作させることは可能だが、内部で仮想化支援機能が働かないので、 VyOS の動作が著しく遅くなる。</p> <p>ちなみに、 ARM Windows はそもそもサポートされない。</p> <h2 id="VyOS と VyControl"><a href="#VyOS+%E3%81%A8+VyControl">VyOS と VyControl</a></h2> <p>VyOS とは、 オープンソースのネットワーク機器向けの OS で、 Linux をベースとしたディストリビューションである。</p> <p>ルーティングからファイアウォール、パケットフィルタから負荷分散まで、商用ルータに劣らない様々な機能を持っている。</p> <p>VyOS の設定は、基本的に専用のコマンドを用いて行うのだが、最初からそれを学ぶのは学習コストが高い。<br /> そこで、 <a target="_blank" rel="nofollow noopener" href="https://github.com/vycontrol/vycontrol">VyControl</a> という VyOS 向けの シンプルな GUI フロントエンドと組み合わせるところまで、構築していきたいと思う。</p> <h2 id="環境構築に必要なもの"><a href="#%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E3%82%82%E3%81%AE">環境構築に必要なもの</a></h2> <p>しかし、 GNS3 上で VyOS を利用できるようにする道のりは長い。</p> <p>まず、 VyControl を使うためには、 VyOS 1.3 以上が必要となる。<br /> 実は、ビルド済みの安定板の VyOS イメージは、サブスクリプション契約をしないとダウンロードできない。</p> <p>VyOS 自体は、前述のとおり OSS なのでソースコードを自由に取得できる。<br /> そのビルド自体も docker を利用する仕組みがしっかりと用意されおり、環境依存なども少なく失敗しにくい。<br /> あまり性能の高くないノートPCでも、 10分程度でビルド可能だ。</p> <p>Windows 上で VyOS 1.3 のイメージをビルドするには、 WSL2 と Docker (Docker Desktop または <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/?p=1703">Rancher Desktop</a>) が必要だ。<br /> Docker Desktop を使えば、 Windows のシェルから直接 Docker を起動できるが、ファイルシステムの問題でビルドエラーになるため、 WSL が必要となる。</p> <p>また、 GNS3 を Windows 上で使うには、 別途 VirtualBox などの仮想マシン管理ツールが必要となる。 <sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup><br /> 以降、無料で使用できる VirtualBox での利用方法を中心に説明するが、他の仮想マシン管理ツールを利用する場合は適宜読み替えていただきたい。</p> <p>GNS3 は、この VirtualBox の中に "GNS3 VM" という仮想マシンを作成し、 その中でさらに QEMU の仮想マシンや、 docker コンテナ (※) を作成し、 ネットワークをエミュレーションを行うのが、基本的な仕組みとなる。</p> <p>※: VyOS のビルドに使用した docker とはまた別の環境。</p> <p>…とまあ、いろいろツールの名前が出てきたが、これらの構成をまとめると、以下の図のようになる。</p> <p><a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-with-vyos-overview.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-with-vyos-overview.png" alt="" /></a></p> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/windows/wsl/install">WSL2</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.docker.com/products/docker-desktop/">Docker Desktop</a> (または <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/?p=1703">Rancher Desktop</a>)</li> <li><a target="_blank" rel="nofollow noopener" href="https://www.virtualbox.org/">VirtualBox</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://www.gns3.com/">GNS3</a></li> </ul> <p>これらを順にインストールしていこう。</p> <p>なお、このうち WSL2 と Docker Desktop については、 VyOS の ISO イメージのビルドを自分でせず、野良ビルドを使う場合はインストール不要だ。 (詳しくは<a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/?p=1722">次回②</a>に記載)</p> <h3 id="WSL2"><a href="#WSL2">WSL2</a></h3> <p><a target="_blank" rel="nofollow noopener" href="https://learn.microsoft.com/ja-jp/windows/wsl/install">WSL のインストール | Microsoft Learn</a><br /> のページの内容に則り、以下の手順でインストールする</p> <ol> <li>PowerShell または Windows コマンド プロンプトを<strong>管理者モード</strong>で開く</li> <li><p>以下のコマンドを入力して PC を再起動する</p> <pre><code>wsl --install </code></pre></li> <li><p>以下のコマンドで、 WSL で作成される WSL バージョンを WSL2 を規定にする。</p> <pre><code>wsl --set-default-version 2 </code></pre></li> <li><p>Microsoft Store などから、適当な WSL ディストリビューション (<a target="_blank" rel="nofollow noopener" href="https://apps.microsoft.com/store/detail/ubuntu-22041-lts/9PN20MSR04DW">Ubuntu 22.04.1 LTS</a> など) をインストールする</p></li> </ol> <h3 id="Docker Desktop"><a href="#Docker+Desktop">Docker Desktop</a></h3> <p><a target="_blank" rel="nofollow noopener" href="https://www.docker.com/products/docker-desktop/">Docker Desktop</a> のインストーラを取得し、 ウィザードに従ってインストールする。</p> <p>インストール後、設定から WSL Integration を有効にする。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-enable-wsl2-on-docker-desktop.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-enable-wsl2-on-docker-desktop.png" alt="" /></a></p> <p>もし、ライセンス的に Docker Desktop が使いづらい環境なら、以下の Rancher Desktop の手順を参照。</p> <p><a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/?p=1703">https://aquasoftware.net/blog/?p=1703</a></p> <h3 id="VirtualBox"><a href="#VirtualBox">VirtualBox</a></h3> <p><a target="_blank" rel="nofollow noopener" href="https://www.virtualbox.org/">VirtualBox</a> で、 Version 6.1 以上を取得して、ウィザードに従ってインストール。</p> <p>こちらは特に気を付けるべきことはなかったと思う。</p> <h3 id="GNS3"><a href="#GNS3">GNS3</a></h3> <h4 id="GNS3 本体のインストール"><a href="#GNS3+%E6%9C%AC%E4%BD%93%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">GNS3 本体のインストール</a></h4> <p>GitHub の <a target="_blank" rel="nofollow noopener" href="https://github.com/GNS3/gns3-gui/releases">gns3-gui プロジェクトのリリースページ</a> から、最新バージョンの</p> <ul> <li><code>GNS3-*-all-in-one.exe</code></li> </ul> <p>をダウンロードし、実行する。</p> <p>インストールするコンポーネントを選択するところで、</p> <ul> <li>GNS3 Desktop</li> <li>GNS3 VM</li> </ul> <p>の<strong>2つだけを選択して</strong>それ以外の選択を(外せる物は)全て外す。 <sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup><br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-00.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-00.png" alt="" /></a></p> <p>ウィザードを進めると、 GNS3 の VMタイプ を選ぶ場面になるので、 VirtualBox を選択する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-01.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-01.png" alt="" /></a></p> <p>そのままインストールを進め、初回起動の段階で一旦休憩。</p> <h4 id="GNS3 VM のインポート"><a href="#GNS3+VM+%E3%81%AE%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88">GNS3 VM のインポート</a></h4> <p>次に、 インストール途中で "ダウンロード" フォルダあたりにダウンロードされていた、 <code>GNS3.VM.VirtualBox.*.zip</code> を解凍して <code>GNS3 VM.ova</code> を取り出す。 <sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup></p> <p><strong>VirtualBox</strong> を起動し、この <code>GNS3 VM.ova</code> を「仮想アプライアンスのインポート」にて、 "GNS3 VM" という名前でインポートする。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-02.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-02.png" alt="" /></a><br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-03.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-03.png" alt="" /></a></p> <p>その後、 PowerShell を立ちあげ、以下のコマンドを実行する。<br /> これにより、前述の入れ子になった(ネストされた)仮想化による仮想マシンの機能が有効化される。 <sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup></p> <pre><code class="PowerShell">$env:Path += ';' + 'C:\Program Files\Oracle\VirtualBox\'; VBoxManage.exe modifyvm 'GNS3 VM' --nested-hw-virt on; </code></pre> <h4 id="GNS3 上の VM の設定"><a href="#GNS3+%E4%B8%8A%E3%81%AE+VM+%E3%81%AE%E8%A8%AD%E5%AE%9A">GNS3 上の VM の設定</a></h4> <p>GNS3 の初回起動に戻ると、 GNS3 のネットワークシミュレーションをどのように実行するか選択肢が出てくる。</p> <blockquote> <p>The GNS3 VM option is strongly recommended on Windows and Mac OSX.</p> </blockquote> <p>と書かれているように、 Virtual Machine を選択する。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-04.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-04.png" alt="" /></a></p> <p>Local server の設定はデフォルトのままで良い。 この設定を使って、 GNS3 VM で動くサービスがホストされ、 GNS3 GUI がそのサービスと通信することでツールが動作する仕組みとなる。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-05.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-05.png" alt="" /></a></p> <p>改めてもう一度 GNS3 VM がどの仮想マシンマネージャーを使うか効いてくるので、 VirtualBox を選択する。</p> <p>vCPU や RAM のサイズ (特に前者) は、ホスト PC のリソースが許す限り豊富に設定しておいた方が良い。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-06.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-06.png" alt="" /></a></p> <p>GNS3 起動後、 [Edit]->[Preferences] の [GNS3 VM] の設定でも、もう少し細かい GNS3 VM の設定ができる。<br /> "Run the VM in headless mode" や "Action when closing GNS3: suspend the GNS3 VM" あたりの設定は ON にしておいた方が便利。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-07.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-07.png" alt="" /></a></p> <p>正しくセットアップできていれば、 GNS3 起動後暫くしたら、 Servers Summary ウィンドウの GNS3 VM がグリーンになっているはずだ。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-08.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-08.png" alt="" /></a></p> <h4 id="GNS3 VM 側の設定"><a href="#GNS3+VM+%E5%81%B4%E3%81%AE%E8%A8%AD%E5%AE%9A">GNS3 VM 側の設定</a></h4> <p>VirtualBox 側で立ち上がった GNS3 VM を開くと、以下のように VM 情報が表示されている。<br /> <a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-09.png"><img src="https://aquasoftware.net/blog/wp-content/uploads/2022/12/gns3-install-vm-to-virtualbox-09.png" alt="" /></a></p> <p>この画面 (TUI) を直接操作したり、 画面に書かれているアドレスやパスワードで ssh することで、 GNS3 VM 内部のより細かい設定ができる。</p> <p>例えば、プロキシ環境下でプロキシの設定が必要な場合、以下の 2カ所 の設定を行う。</p> <ol> <li>VM 情報のページから [OK] -> メニューで [Proxy] と選択し、 <code>http://203.0.113.99:8080</code> と言った形で指定する。 <ul> <li>VM 内からホストPCで設定されている DNS は見れず、 DNS は 8.8.8.8 や 8.8.4.4 が決め打ちされている。 イントラネット内の名前解決はできないので、 プロキシがイントラネット内なら、ホスト名では無くて IPアドレス で指定する方が良い。</li> </ul></li> <li><p>メニューで [Shell] を選択して以下のように実行し、 docker デーモン (dockerd) にもプロキシの設定を反映させる。</p> <pre><code class="shell">gns3@gns3vm:~$ sudo mkdir -p /etc/systemd/system/docker.service.d gns3@gns3vm:~$ sudo tee -a /etc/systemd/system/docker.service.d/http-proxy.conf /dev/null [Service] Environment="HTTP_PROXY=$http_proxy" Environment="HTTPS_PROXY=$https_proxy" EOF gns3@gns3vm:~$ sudo systemctl daemon-reload gns3@gns3vm:~$ sudo systemctl restart docker gns3@gns3vm:~$ cat ~/.docker/config.json {"proxies":{"default":{"httpProxy": "$http_proxy","httpsProxy": "$https_proxy","noProxy": "127.0.0.0/8"<span>}</span><span>}</span>} EOF </code></pre></li> </ol> <p>GNS3 から VirtualBox を操作する部分の作り込みが甘いのかもしれないが、 GNS3 VM が再起動されると GNS3 から VM を正常に操作できなくなってエラーが起きがちだ。<br /> このため、 一通り GNS3 VM の設定が終わったら、 GNS3 (GUI) 側を再起動したほうが良い。</p> <h2 id="次回"><a href="#%E6%AC%A1%E5%9B%9E">次回</a></h2> <p><a target="_blank" rel="nofollow noopener" href="https://aquasoftware.net/blog/?p=1722">次回</a>は、 GNS3 に入れる VyOS イメージのビルドと、 GNS3 に VyControl のコンテナを準備する。</p> <div class="footnotes" role="doc-endnotes"> <hr /> <ol> <li id="fn:1" role="doc-endnote"> <p>VirtualBoxではなくHyper-Vなども使えることは使えるが、仮想NICの扱いの仕組み上Hyper-Vだと若干ややこしい。(GNS3 VMのIPアドレスが毎回わかるとか、VPN環境下で使いにくいとか) <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p> </li> <li id="fn:2" role="doc-endnote"> <p>GNS3は、VMではなくホストPC上で直接ネットワークをエミュレートする方法もあり、そういった場合にTool以下のソフトが必要になるのだが、今回はVM上でエミュレートしているので、これらの殆どはホストPC側にインストールする必要が無い。強いて言うならNPCAPとWiresharkはインストールしても良いかも。 <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p> </li> <li id="fn:3" role="doc-endnote"> <p>ダウンロードし間違えたり、どこにダウンロードされたかわからない場合、前述のリリースページから手動でダウンロード可能。 <a href="#fnref:3" class="footnote-backref" role="doc-backlink">↩︎</a></p> </li> <li id="fn:4" role="doc-endnote"> <p>Hyper-Vの場合は、<code>GNS3.VM.Hyper-V.*.zip</code>内の<code>install-vm.bat</code>のバッチを実行すれば、自動的にネストされた仮想化が有効になる。 <a href="#fnref:4" class="footnote-backref" role="doc-backlink">↩︎</a></p> </li> </ol> </div> advanceboy tag:crieit.net,2005:PublicArticle/15559 2019-11-25T04:32:35+09:00 2019-11-25T04:53:32+09:00 https://crieit.net/posts/VM ルータを経由すると仮想ブリッジ接続の VM にアクセスできない? <p>今回は、ネットワークの話。</p> <p>解決してみれば割としょうも無いトラブルで、時間を浪費してしまったので、自戒の意味を込めて記事にしておく。</p> <h2 id="サブネット外から ping が通らない"><a href="#%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88%E5%A4%96%E3%81%8B%E3%82%89+ping+%E3%81%8C%E9%80%9A%E3%82%89%E3%81%AA%E3%81%84">サブネット外から ping が通らない</a></h2> <p>ある日、 ホストPC の NIC とブリッジ接続されている VM に、 サブネット外からアクセスできなくなってしまった。</p> <p>構成を図にすると、以下のような感じ。<br /> (あまり UML図 に明るくないので、書き方がヘタクソだったり本来の意味と違う記号の使い方をしている点は大目に見て欲しい。)</p> <p><a href="https://crieit.now.sh/upload_images/b16c4bd42afd117d10973821da5dac345ddad9df7b863.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b16c4bd42afd117d10973821da5dac345ddad9df7b863.png?mw=700" alt="data:application/gzip;base64,H4sIAAAAAAAEAIVTPU/DMBDdI+U/nLIihziUAhVC5UOCDmWgqAtlMM61jZTYleOIAbW/Hcdy6qQtwkt8757f3dkv40ozpeuyCIMw4IWsM4gmQqMSqCNgFeQuMFkptJIFRG+yNpjNKrsNA4VcM7EqECJ6lcZ0GA/SODlPBxH8hAGYxWW5kQKFhuhFVhqmjK9zgVZlwy3kmM2yVZeMo2O/Th4tE/W6iT2xU3g+raKuxoHO6/27lRBM9zm+s4PDBwKmNm2boMfMzoDzKTzXWGk3nN3/J5200kmfue2H7gKAfKzzLEPxSY4HMoDPn5BsENjtCa7BEZSoVc6BLgS9ad7wOr4cxmn/rCPDzt7CCPxr0+HpTnct9UHl2Qo9yU22PfKHswZIsRAzViLM6q/WjhtuGtqeNNzFn4brCj7lyyWqBu6pUqvamh1uCdl72ySB3Hmr2y+QTH4LcuYdaTpzYOLBMBijyMzv9QsMZU+SaAMAAA" /></a></p> <p>同一サブネット内 (図の "Machine on Same Subnet") から 172.16.42.16 を叩くと VM ゲストに到達するのだが、 サブネット外 (図の "Machine on Different Subnet") からだと ping すら通らない。</p> <p>以前は同じ構成で、サブネット外から繋がっていたはずだ。</p> <p>ちょうど直前に、ネットワーク機器のメンテナンスがあったため、 そちらで IPフィルタの動作がおかしくなったのではないかと疑ってしまった。<br /> しかし、繋がらなくなった直接的な原因は、 VM Gurest 側にあった。<br /> このため、答えにたどり着くのに時間がかかってしまった。</p> <h2 id="アクセスできなかった原因"><a href="#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%E5%8E%9F%E5%9B%A0">アクセスできなかった原因</a></h2> <p>上の図で若干答えを示唆してしまっているが、 VM Guest に繋がっているもう一つの仮想ネットワークアダプタ (図の "eth0") が原因だ。</p> <p>この eth0 は NAT 経由でホスト側のネットワークに繋がっていた。<br /> そして、 eth0 の metric が、 eth1 よりも短くなる設定に変更してしまっていたのだ。<br /> (何故そんな繋ぎ方をしているかというと、 ホスト PC の IP として通信させたい事情があったから。 理由は察して。)</p> <p>構成を図にしてみると、以下のような感じ。</p> <p><a href="https://crieit.now.sh/upload_images/07d3ffeeebe96fb9c8cc4f0e4da132b25ddad9e7cd381.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/07d3ffeeebe96fb9c8cc4f0e4da132b25ddad9e7cd381.png?mw=700" alt="data:application/gzip;base64,H4sIAAAAAAAEAIVTy07DMBC8R8o/rHxFCXEo5SGEykOCHsqBop56Mc62jZTYleOIA2q/HceycdIW4Uu849nZXXsyaTRTuq2rOIojXsm2ADIVGpVATYA1ULrAnEqhlayAvMvWYPZU2W0cKeSaiXWFQOhVntJxOsrT7DwfEfiOIzCLy3orBQoN5FU2GmaMb0qBVmXLLeSY3bJVV4yjY79NnywT9aaLA7FXeDFrSF/jQOft4cNKCKaHnNDZQfKBgKlNfRP0mNkbcDGDlxYb7Yaz+/+kMy+dDZm7YeguAJLkeBADQHJCokNg7xu5hRq1KjnQpaA33Vtdp5fjNB/mOLJJ66YNOZlJ+n1gOj7d3N5nPaqyWGMguWF2R5ZwbgAplmLOaoR5++kduOWmt91Jj1386bG+4HO5WqHq4IEqtare33BnrtTb2RxCch/cbb+QFPJLJGfBhKYzB2YBjKMJisL8UT95NzD7WwMAAA" /></a></p> <p>このような構成だと、 VM Guest からの通信は全て、 より『距離が近い』と見做される eth0 と NAT 経由で行われるようになる。</p> <p>通常、ルータや L3スイッチ などが、 IPアドレス と MACアドレス の対照表である ARP テーブルに載っていない IP のパケットを受け取った場合、 サブネット内に ARP リクエストパケットをブロードキャストして、対象の MACアドレス を探しに行く。<br /> しかし このサブネットの間を取り持っているルータは、どうも ARP テーブルに載っかっていない IP へのパケットを全て破棄してしまうらしい。<br /> (レイヤ3 の知識が不十分なので、正確な説明ではないかも知れないが、雰囲気だけでも伝われば。)</p> <p>つまり、 VM Guest から eth1 を経由してルータに到達する通信がなかったために、 ルータが eth1 の MACアドレスを知らず、パケットが全て破棄されてしまっていたようだ。</p> <p>以前通信できていた頃は、 eth0 より eth1 からの通信の方が metric が近かったため、 eth1 からルータを経由してインターネットへ向かう通信が存在し、 ルータが eth1 の MACアドレス を知っていたため、 サブネット外からの通信がちゃんと eth1 に届いていたのだろう。</p> <p>一方、同一サブネット内の "Machine on Same Subnet" からの通信は、この Machine が直接 ARP リクエストパケットをブロードキャストして、 eth1 の MAC アドレスを見つけられるため、 metric の距離にかかわらず通信できていたのだと思われる。</p> <h2 id="解決策"><a href="#%E8%A7%A3%E6%B1%BA%E7%AD%96">解決策</a></h2> <p>VM Guest の eth1 から通信が外に出るように metric の設定を変更して、 適当なパケットを投げたところ、 サブネット外から eth1 の IPアドレスに通信ができるようになった。</p> <p>ルータがサブネット内の未知の IPアドレス へのパケットを全て握りつぶすというのは、盲点だった。。。</p> advanceboy tag:crieit.net,2005:PublicArticle/15284 2019-07-28T07:41:37+09:00 2019-07-28T07:41:37+09:00 https://crieit.net/posts/Basic-standard 仮想マシンのそれぞれレベルの違い(Basic, 低優先度、standard) <p>仮想マシンのサイズのレベルでは、Basic, 低優先度とstandardがあります。</p> <p><strong>Basicレベル</strong><br /> 負荷分散、オートスケーリング、メモリ消費量の多い仮想マシンのいずれも必要としない開発ワークロード、テスト サーバー、その他のアプリケーションの経済性の高いオプション。 <br /> <a href="https://crieit.now.sh/upload_images/872fb29cf12586dd7d594f48a7f4745e5d3cd2d6e5aef.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/872fb29cf12586dd7d594f48a7f4745e5d3cd2d6e5aef.png?mw=700" alt="image.png" /></a></p> <p><strong>低優先度レベル</strong><br /> 一般的に、ジョブが多数の並列タスクに分割されていたり、スケールアウトされた多数のジョブが多数の VM に分散されていたりするバッチ処理ワークロードに適しています。<br /> <a href="https://crieit.now.sh/upload_images/872fb29cf12586dd7d594f48a7f4745e5d3cd2efa880a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/872fb29cf12586dd7d594f48a7f4745e5d3cd2efa880a.png?mw=700" alt="image.png" /></a></p> <p><strong>Standardレベル</strong><br /> 最高の柔軟性。仮想マシンのすべての構成および機能がサポートされます。</p> <p><a href="https://crieit.now.sh/upload_images/872fb29cf12586dd7d594f48a7f4745e5d3cd307db716.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/872fb29cf12586dd7d594f48a7f4745e5d3cd307db716.png?mw=700" alt="image.png" /></a></p> Azure Sheep