2016年12月21日水曜日

VyOS を使って異なる VLAN ID のポートグループを相互に通信できるようにしてみた

概要

前回 1 つのポートグループを作成してその中に VyOS を立て DHCP サーバとして動作させました
今回はもう 1 つポートグループを作成し、前回とは異なる VLAN ID を付与します
そして、VLAN ID の異なるそれぞれのポートグループ同士を VyOS を使って相互に通信させてみました

環境

  • VirtualBox 5.1.10
  • ESXi 6.0 update 2
  • Windows7 Enterprise バージョン 6.1
    • Intel Core i5-5300U CPU @ 2.30GHz
    • メモリ 10GB
    • ストレージ 120GB (SSD)
  • VyOS 1.1.7 (32bit 版)

ポートグループおよび VM の作成

前回同様ポートグループと VM を作成していきます
作成方法はほぼ前回と同じなので詳細はそちらを参考にしてください
以下主要なパラメータ

  • ポートグループ: VM Network3 (VLAN ID: 3)
  • VM: vm2
    • ネットワークアダプタ1: VM Network3
    • ネットワークアダプタ2: VM Nat Network

そして新規で作成したポートグループは VyOS も所属させます
vyos は前回まででネットワークアダプタ3 まで使用しているので今回は 4 に VM Network3 を設定します

  • VM: vyos
    • ネットワークアダプタ4: VM Network3

設定完了後の vSwitch のネットワークトポロジーは以下の通りです
vyos_connected_each_vlan1.png

VyOS への設定追加

新規で追加したポートグループ用の設定を追加していきます
VyOS 上のネットワークインタフェースは eth3 になります

  • configure

で編集モードになり以下を入力します
やっていることは前回とほぼ同様です
通信出来ていることがわかりやすいように VM Network2 とは異なる CIDR のネットワークにします

  • set interfaces ethernet eth3 address ‘172.16.0.1/24’
  • set interfaces ethernet eth3 description ‘VM Network3’
  • set service dhcp-server shared-network-name VM_NETWORK_3 subnet 172.16.0.0/24 default-router ‘172.16.0.1’
  • set service dhcp-server shared-network-name VM_NETWORK_3 subnet 172.16.0.0/24 dns-server ‘172.16.0.1’
  • set service dhcp-server shared-network-name VM_NETWORK_3 subnet 172.16.0.0/24 lease ‘86400’
  • set service dhcp-server shared-network-name VM_NETWORK_3 subnet 172.16.0.0/24 start 172.16.0.2 stop ‘172.16.0.254’
  • set service dhcp-server shared-network-name VM_NETWORK_3 authoritative disable
  • set service dns forwarding listen-on ‘eth3’
  • commit
  • save

作業は大きく 3 つで「etc3 への固定 IP の付与」「DHCP サーバの設定」「DNS の参照設定」になります
コマンド実行後は commit -> save でファイルに設定を保存します

ちなみに前回のも合わせて show interfacesshow service の実行結果は以下の通りです

  • show interfaces
 ethernet eth0 {
     address dhcp
     duplex auto
     hw-id 00:0c:29:5b:8d:84
     smp_affinity auto
     speed auto
 }
 ethernet eth1 {
     address dhcp
     duplex auto
     hw-id 00:0c:29:5b:8d:8e
     smp_affinity auto
     speed auto
 }
 ethernet eth2 {
     address 172.10.0.1/24
     description "VM Network2"
     hw-id 00:0c:29:5b:8d:98
 }
 ethernet eth3 {
     address 172.16.0.1/24
     description "VM Network3"
     hw-id 00:0c:29:5b:8d:a2
 }
 loopback lo {
 }
  • show service
  hcp-server {
     disabled false
     shared-network-name VM_NETWORK_2 {
         authoritative disable
         subnet 172.10.0.0/24 {
             default-router 172.10.0.1
             dns-server 172.10.0.1
             lease 86400
             start 172.10.0.2 {
                 stop 172.10.0.254
             }
         }
     }
     shared-network-name VM_NETWORK_3 {
         authoritative disable
         subnet 172.16.0.0/24 {
             default-router 172.16.0.1
             dns-server 172.16.0.1
             lease 86400
             start 172.16.0.2 {
                 stop 172.16.0.254
             }
         }
     }
 }
 dns {
     forwarding {
         cache-size 0
         listen-on eth2
         listen-on eth3
         name-server 172.17.105.202
     }
 }
 ssh {
     port 22
 }

VM 上での作業

まずは今回新規で追加したポートグループ「VM Network3」にある vm2 が DHCP で IP を取得できるか確認してみましょう

VM Network3 側のネットワークインタフェースの設定を BOOTPROTO=dhcp にしてネットワークを再起動します
VyOS から問題なく DHCP で IP がもらえれば OK です
もらえる IP は若い順になるはずなので、今回の場合であれば 172.16.0.2 が付与されれば OK です

ルーティング情報を VM に追加する

これで「VM Network2」と「VM Network3」は仮想環境上ではリーチャビリティのある状況になりました
あとは、OS レベルでルーティングを追加してあげれば OK です
動作確認のために以下を実行しておくと良いと思います

  • vm1
    • ping 172.16.0.2
  • vm2
    • ping 172.10.0.2

異なるポートグループ内にいる VM が通信できるか確認するためのコマンドです
おそらく実行した直後は ping が通らないと思います
では、以下のルーティングコマンドを実行しましょう

  • vm1
    • ip r add 172.16.0.0/24 via 172.10.0.1 dev eth0
  • vm2
    • ip r add 172.10.0.0/24 via 172.16.0.1 dev eth0

両方の VM にルーティングを追加した直後に ping が通ることを確認できると思います

当たり前ですが、追加したルーティングをどちらか一方で削除すると ping が通らなくなることも確認できると思います

  • vm2
    • ip r del 172.10.0.0/24 via 172.16.0.1 dev eth0

最後に

VyOS を使って VLAN ID の異なるポートグループ同士を接続してみました
この状態だと基本的にポートグループ同士は全開放状態なので、SSH でも HTTP でも何でもアクセスできてしまいます
必要なポートやプロトコルだけで通信させたい場合はファイアウォールを使います
CentOS なら iptables を使ってもできますが、今回のような構成であれば VyOS のファイアウォール機能を使っても通信制御できると思います

ファイアウォール機能もそのうち試せればなと思っています

0 件のコメント:

コメントを投稿