はじめに
ESXiの環境にVyOSを利用してプライベートネットワークを構築したときの手順を残しておく。 ただし、ESXiの話を盛り込むとややこしくなるので、ここではVyOSの構築手順に絞る。 まず、次のようなネットワーク192.168.8.0/24があったとする。
(Internet) | | +----+----+ | Gateway | | DNS | | | +----+----+ | 192.168.8.1 192.168.8.0/24 | o--------+------------------o
ここで、VyOSを利用して以下のようなプライベートネットワーク192.168.9.0/24を構築する。 なお、結線(仮想スイッチやポートグループの設定)は完了しているとする。
(Internet) | | +----+----+ | Gateway | | DNS | | | +----+----+ | 192.168.8.1 192.168.8.0/24 | o--------+----+-------------o | | 192.168.8.21 +-[eth0]--+ | NAT | VyOS | DHCP | | DNS(FWD)| +-[eth1]--+ | 192.168.9.1 192.168.9.0/24 | o-----+-------+-------+-----o | | | | +----+----+ +----+----+ | DHCP | | DHCP | | Client | | Client | | | | | +---------+ +---------+
VyOSのVMの構築
以下のVyOSのサイトからISOファイルあるいはVMイメージをダウンロードし、VyOSのVMを構築する。 今回はVyOS 1.1.8のVMイメージ(.ova)を利用した。
初期状態の確認
ESXiのVMのコンソールからユーザvyos
(パスワードもvyos
)でVyOSにログインする。
コマンドshow configuration
を実行し、初期状態を確認する。
eth0はDHCPとなっており、SSHも有効化されていないことが分かる。
$ show configuration interfaces { ethernet eth0 { address dhcp duplex auto hw-id 00:0c:29:75:f1:58 smp_affinity auto speed auto } ethernet eth1 { duplex auto hw-id 00:0c:29:75:f1:62 smp_affinity auto speed auto } loopback lo { } } system { config-management { commit-revisions 100 } console { } host-name vyos login { user vyos { authentication { encrypted-password **************** plaintext-password **************** } level admin } } ntp { server 0.pool.ntp.org { } server 1.pool.ntp.org { } server 2.pool.ntp.org { } } package { auto-sync 1 repository community { components main distribution helium password **************** url http://packages.vyos.net/vyos username "" } } syslog { global { facility all { level notice } facility protocols { level debug } } } time-zone UTC }
SSHの設定
多数の設定コマンドの入力を(コピペできない)コンソールから行うのは辛いので、最初にSSHでリモートから接続できる程度の、最小限の設定を行う。
$ configure # delete interfaces ethernet 'eth0' address 'dhcp' # set interfaces ethernet 'eth0' address '192.168.8.21/24' # set service ssh port 22 # commit # save # exit $
まず最初にDHCPの設定を削除している点に注意する。 これがないと、コミットしたときに以下のエラーが発生して、コミットに失敗する。
# commit [ interfaces ethernet eth0 address 192.168.8.21/24 ] Can't configure static IPv4 address and DHCP on the same interface.
残りの設定
残りの設定は、他のマシンからSSHで接続して実施する。
$ ssh vyos@192.168.8.21
sshでの接続が成功したならば、以下のように設定を入力する。 入力するコマンドは読めば大体分かると思うので、細かい説明は省略する。
$ configure # set interfaces ethernet 'eth1' address '192.168.9.1/24' # set system host-name 'sw' # set system gateway-address '192.168.8.1' # set system name-server '192.168.8.1' # set service dns forwarding system # set service dns forwarding listen-on 'eth1' # set service dns forwarding listen-on 'lo' # set service dhcp-server shared-network-name 'nw1' authoritative 'enable' # set service dhcp-server shared-network-name 'nw1' subnet '192.168.9.0/24' default-router '192.168.9.1' # set service dhcp-server shared-network-name 'nw1' subnet '192.168.9.0/24' dns-server '192.168.9.1' # set service dhcp-server shared-network-name 'nw1' subnet '192.168.9.0/24' start '192.168.9.128' stop '192.168.9.254' # set nat source rule '10' source address '192.168.9.0/24' # set nat source rule '10' outbound-interface 'eth0' # set nat source rule '10' translation address 'masquerade' # commit # save # exit
設定の確認
再びshow configuration
を実行して、設定が反映されていることを確認する。
$ show configuration interfaces { ethernet eth0 { address 192.168.8.21/24 duplex auto hw-id 00:0c:29:75:f1:58 smp_affinity auto speed auto } ethernet eth1 { address 192.168.9.1/24 duplex auto hw-id 00:0c:29:75:f1:62 smp_affinity auto speed auto } loopback lo { } } nat { source { rule 10 { outbound-interface eth0 source { address 192.168.9.0/24 } translation { address masquerade } } } } service { dhcp-server { disabled false shared-network-name nw1 { authoritative enable subnet 192.168.9.0/24 { default-router 192.168.9.1 dns-server 192.168.9.1 lease 86400 start 192.168.9.128 { stop 192.168.9.254 } } } } dns { forwarding { cache-size 150 listen-on eth1 listen-on lo system } } ssh { port 22 } } system { config-management { commit-revisions 100 } console { } gateway-address 192.168.8.1 host-name sw login { user vyos { authentication { encrypted-password **************** plaintext-password **************** } level admin } } name-server 192.168.8.1 ntp { server 0.pool.ntp.org { } server 1.pool.ntp.org { } server 2.pool.ntp.org { } } package { auto-sync 1 repository community { components main distribution helium password **************** url http://packages.vyos.net/vyos username "" } } syslog { global { facility all { level notice } facility protocols { level debug } } } time-zone UTC }