speg03の雑記帳

主に未来の自分のために試したことなどを記録しています

VyOSで構築するVirtualBoxのプライベートネットワーク

概要

ローカルでの検証環境としてVirtualBoxの環境は手軽に構築できて便利です。VirtualBoxを使った環境で、ホストとゲスト間の通信や、複数のゲスト同士の通信を簡単に行うネットワーク構成を考えます。3パターンの構成について紹介し、そのうちの1つ、NATサーバーを使用したパターンについて詳しく紹介します。NATサーバーの構築にはVyOSを使用しています。

環境

構成の検討

次の要件を満たすような構成を検討します。

  • ゲストだけで構成されたプライベートネットワークになっていること
  • ゲスト間で相互に通信できること
  • ゲストからインターネットに通信できること
  • ホストからゲストに通信できること

3パターン考えました。

  • パターン1: NAT+ホストオンリーアダプターを使用した場合
  • パターン2: NATネットワークを使用した場合
  • パターン3: NATサーバーを使用した場合

パターン1: NAT+ホストオンリーアダプターを使用した場合

f:id:speg03:20200327215249p:plain

  • guest1, guest2
    • アダプター1: NAT
    • アダプター2: ホストオンリーアダプター

おそらく最も手軽な方法です。ネットワークの設定で1つはNAT、もう1つはホストオンリーアダプターを選択するだけです。ホストオンリーアダプターは任意のネットワークアドレスを設定することができます。NAT側のネットワークは相互に通信することができませんが、ホストオンリーアダプター側のネットワークは相互に通信することができます。これでゲスト同士の間は通信が可能で、ホストマシンとも通信することができます。

ただし、ネットワークインタフェースが2つずつ必要になってしまうため、検証環境としての用途では不都合が生じるかもしれません。(ネットワークインタフェースを自動的に選択するソフトウェアを使用する場合など)

パターン2: NATネットワークを使用した場合

f:id:speg03:20200327215314p:plain

  • guest1, guest2
    • アダプター1: NATネットワーク

NAT+ホストオンリーアダプターの場合と比べて、ネットワークインタフェースが1つになっているため、より自然に検証環境として使用できると思います。NATネットワークも任意のネットワークアドレスを設定することができ、相互に通信することができます。

ただし、ホストマシンから直接ゲストへアクセスすることができないため、必要であればNATネットワークにポートフォワーディングの設定を追加する必要があります。

パターン3: NATサーバーを使用した場合

このパターンはVirtualBoxの機能だけでは実現できません。新しいインスタンスとしてNATサーバーを導入します。

f:id:speg03:20200327215330p:plain

  • guest1, guest2
    • アダプター1: ホストオンリーアダプター
  • nat-server
    • アダプター1: NAT
    • アダプター2: ホストオンリーアダプター

前述した2パターンの欠点を補うパターンです。ネットワークインタフェースが1つであり、ホストマシンからゲストへの通信も可能となっています。ゲストからインターネットへ通信するためにはNATサーバーを経由することになります。(ゲストのデフォルトゲートウェイとしてNATサーバーのインタフェースを指定)

このパターンでは、NATサーバーのインスタンスが余分に必要になってしまいます。これさえ許容できれば自由にネットワークを構築でき、ホストマシンからもアクセスできる使いやすい環境を構築できると思います。

NATサーバーの構築

パターン3で紹介したNATサーバーの構築方法について紹介します。ここではVyOSを使います。

インスタンスの作成

前述したようにネットワークアダプターを2つもったNATサーバーのインスタンスを作成します。

  • nat-server
    • アダプター1: NAT
    • アダプター2: ホストオンリーアダプター

今回はVyOS自体でDHCPの設定を行うため、アダプター2のホストオンリーアダプターにあるDHCPの機能を無効にしておきます。NATサーバーとしてDHCPの機能が必要というわけではありませんが、あると便利だと思います。

インストール

参照: http://wiki.vyos-users.jp/

インストールメディアはvyos-1.1.5-amd64.isoを使用しました。

インストールメディアから起動してログイン後、インストールを行います。ログインユーザー、パスワードは共に vyos です。 詳細についてはWebサイトのユーザーガイドを参照してください。

$ install image
(下記、ディスク消去の確認以外はデフォルトでOK)
...
This will destroy all data on /dev/sda.
Continue? (Yes/No) [No]: Yes
...

インストールが完了したらインストールメディアを抜いて再起動します。

$ reboot

NATサーバーの設定

以下のような設定を行います。

  • ネットワークアドレス: 192.168.133.0/24
  • NATサーバーのIPアドレス: 192.168.133.100
  • (オプション)DHCPで割り当てるIPアドレスの範囲: 192.168.133.101 - 192.168.133.254
  • (オプション)NATサーバーにDNS転送させる

設定手順

ユーザーガイドのクイックスタートがほぼそのまま使えます。一部設定値を変更しています。

設定を開始します。

$ configure

インタフェースの設定を行います。

set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'OUTSIDE'
set interfaces ethernet eth1 address '192.168.133.100/24'
set interfaces ethernet eth1 description 'INSIDE'

このサーバーにSSH接続するための設定をします。(オプション)

set service ssh port '22'

NATの設定を行います。

set nat source rule 100 outbound-interface 'eth0'
set nat source rule 100 source address '192.168.133.0/24'
set nat source rule 100 translation address masquerade

DHCPサーバーの設定をします。(オプション)

NATサーバーをデフォルトゲートウェイDNSサーバーとして設定しています。(default-router, dns-serverの行)

set service dhcp-server disabled 'false'
set service dhcp-server shared-network-name LAN subnet 192.168.133.0/24 default-router '192.168.133.100'
set service dhcp-server shared-network-name LAN subnet 192.168.133.0/24 dns-server '192.168.133.100'
set service dhcp-server shared-network-name LAN subnet 192.168.133.0/24 domain-name 'internal-network'
set service dhcp-server shared-network-name LAN subnet 192.168.133.0/24 lease '86400'
set service dhcp-server shared-network-name LAN subnet 192.168.133.0/24 start 192.168.133.101 stop '192.168.133.254'

DNS転送の設定をします。(オプション)

DNSサーバーについては適宜必要なものを設定してください。

set service dns forwarding cache-size '0'
set service dns forwarding listen-on 'eth1'
set service dns forwarding name-server '8.8.8.8'
set service dns forwarding name-server '8.8.4.4'

ここまでの設定を保存して終了します。

commit
save
exit

設定内容を確認します。

$ show configuration

設定を誤った場合はそのコマンドのsetをdeleteで置き換えて実行すると削除できます。

delete interfaces ethernet eth1 address '192.168.133.100/24'

まとめ

VirtualBoxでのプライベートネットワークの構築について3パターンの方法を紹介しました。その中でNATサーバーを使用した方法について、VyOSによる構築手順を紹介しました。余分にNATサーバーの構築と設定が必要にはなりますが、より使いやすい自由度の高いネットワーク構成を取ることができます。また、VyOSを使ったNATサーバーはVirtualBox以外の環境でも同様に活用することができます。