BIG-IP Route Domainによる分割

スポンサーリンク

BIG-IPのRoute Domainは1つのBIG-IPを仮想的に複数に分割する機能です。ルータやファイアウォール機器のVRF相当の機能と思えば大きく違いはありません。

動作確認の構成

物理構成は以下の通りとします。

+-----------------+ +-----------------+ +-----------------+
|  (RockyLinux84) | |  (RockyLinux84) | |     (Vyatta)    |
|     Server10    | |     Server30    | |     Router50    |
|                 | |                 | |                 |
+--------+--------+ +--------+--------+ +--------+--------+
  ens192 |            ens192 |                   |
         |                   |                   |
         +-------------+     |     +-------------+
                       |     |     |
                    +--+-----+-----+--+
                    |                 |
                    |  layer2 switch  |
                    |                 |
                    +--------+--------+
                             |
                             |
                             | 1.1
                    +--------+--------+
                    |      BIG-IP     |
                    |     (bigip01)   |
                    |                 |
                    +-----------------+

Route Domainという機能を使用して以下のような論理構成を組み上げます。

                    +-----------------+
                .50 |     (Vyatta)    | .50
         +----------+     Router50    +----------+
         |     eth0 |                 | eth1     |
         |          +-----------------+          |
         |                                       |
         | 192.168.20.0/24       192.168.40.0/24 |
         | (vlan 20)                   (vlan 40) |
         |                                       |
         | .1                                    | .1
+--------+--------+                     +--------+--------+
|     bigip01     |                     |     bigip01     |
| RouteDomain 12  |                     | RouteDomain 34  |
|                 |                     |                 |
+--------+--------+                     +--------+--------+
         | .1                                    | .1
         |                                       |
         | 192.168.10.0/24       192.168.30.0/24 |
         | (vlan 10)                   (vlan 30) |
         |                                       |
         | .10                                   | .30
+--------+--------+                     +--------+--------+
|                 |                     |                 |
|     Server10    |                     |     Server30    |
|  (RockyLinux84) |                     |  (RockyLinux84) |
+-----------------+                     +-----------------+

RouteDomainの操作

VLAN 作成

「Network」「VLANs」の順に画面遷移し、「Create」を押下します。

BIG-IP VLANの作成 01

「Name」「Tag」「Interface」を指定し、「Add」を押下します。この操作を繰り返し、構成図の通りのVLANを計4つ作成します。

BIG-IP VLANの作成 02

コマンドラインで操作する場合は以下の通りです。

create net vlan VLAN0010 interfaces replace-all-with { 1.1 { tagged } } tag 10
create net vlan VLAN0020 interfaces replace-all-with { 1.1 { tagged } } tag 20
create net vlan VLAN0030 interfaces replace-all-with { 1.1 { tagged } } tag 30
create net vlan VLAN0040 interfaces replace-all-with { 1.1 { tagged } } tag 40

Route Domain 作成

「Network」「Route Domains」の順に画面遷移し、「Create」を押下します。

BIG-IP RouteDomainの作成 01

「Name」は何か分かりやすい名前を入力します。「ID」は重複しない一意の値です。Route Domainが200個, 300個を超えるような環境ならば、設計段階で採番ルールを考えておきましょう。「VLANs」はRouteDomainに属するVLANを指定します。

以上の入力が完了したら「Finished」を押下します。この操作を繰り返し、構成図の通りのRouteDomainを計2つ作成します。

BIG-IP RouteDomainの作成 02

コマンドラインで操作する場合は以下の通りです。

create net route-domain RD_0012 id 12 vlans replace-all-with { VLAN0010 VLAN0020 }
create net route-domain RD_0034 id 34 vlans replace-all-with { VLAN0030 VLAN0040 }

Self IP 作成

「Network」「Self IPs」の順に画面遷移し、「Create」を押下します。

BIG-IP SelfIPsの作成 01

RouteDomainを使用する時は、「IP Address」の欄は「<IPアドレス>%<RD番号>」の書式で入力します。例えば、「192.168.10.1%12」のようになります。

「Name」「Netmask」「VLAN/Tunnel」は構成図の通りに入力します。以上の入力が完了したら「Finished」を押下します。この操作を繰り返し、構成図の通りのSelfIPを計4つ作成します。

BIG-IP SelfIPsの作成 02

コマンドラインで操作する場合は以下の通りです。

create net self SelfIP_VLAN0010 address 192.168.10.1%12/24 traffic-group traffic-group-local-only vlan VLAN0010
create net self SelfIP_VLAN0020 address 192.168.20.1%12/24 traffic-group traffic-group-local-only vlan VLAN0020
create net self SelfIP_VLAN0030 address 192.168.30.1%34/24 traffic-group traffic-group-local-only vlan VLAN0030
create net self SelfIP_VLAN0040 address 192.168.40.1%34/24 traffic-group traffic-group-local-only vlan VLAN0040

Virtual Server 作成

Route Domainの機能はNetに限らず、LTMやAFMなどの様々なBIG-IPのモジュールと連動します。操作紹介かつ疎通確認の意味を込めて、Route Domain 12とRoute Domain 34を経由させるだけのvirtual serverを作ってみましょう。

「Local Traffic」「Virtual Server」の順に画面遷移し、「Create」を押下します。

BIG-IP virtual serverの作成 01

RouteDomainを使用する時は、「Destination Address/Mask」の欄は「<IPアドレス>%<RD番号>/<サブネットマスク>」の書式で入力します。例えば、「0.0.0.0%12/0」のようになります。

必須入力である「Name」「Type」「Service Port」に何らかの値を入力します。「Type」はルーティングだけの用途で使用するので、「Forwarding(IP)」で良いでしょう。

ICMPによる疎通確認しやすいよう「Protocol」欄はデフォルト設定の「TCP」から「All Protocols」に変更します。

BIG-IP virtual serverの作成 02

画面下の方へスクロールさせ、「Finished」を押下します。

BIG-IP virtual serverの作成 03

コマンドラインで操作する場合は以下の通りです。

create ltm virtual RD0012_VS_FORWARD_ALL destination 0.0.0.0%12:any ip-forward
create ltm virtual RD0034_VS_FORWARD_ALL destination 0.0.0.0%34:any ip-forward

疎通確認

ルータからの疎通確認

Route50からServer10へ、Router50からServer30への疎通確認をします。

vyos@vy050:~$ ping 192.168.10.10 count 3
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=63 time=1.66 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=63 time=0.851 ms
64 bytes from 192.168.10.10: icmp_seq=3 ttl=63 time=8.19 ms

--- 192.168.10.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.851/3.569/8.194/3.286 ms
vyos@vy050:~$ 
vyos@vy050:~$ 
vyos@vy050:~$ ping 192.168.30.30 count 3
PING 192.168.30.30 (192.168.30.30) 56(84) bytes of data.
64 bytes from 192.168.30.30: icmp_seq=1 ttl=63 time=0.760 ms
64 bytes from 192.168.30.30: icmp_seq=2 ttl=63 time=0.860 ms
64 bytes from 192.168.30.30: icmp_seq=3 ttl=63 time=0.839 ms

--- 192.168.30.30 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2011ms
rtt min/avg/max/mdev = 0.760/0.819/0.860/0.043 ms
vyos@vy050:~$ 

RD番号を指定した疎通確認

RouteDomainから疎通確認をしたい場合は、宛先IPアドレスを「<IPアドレス>%<RD番号>」のように指定して疎通確認をします。

[root@localhost:Active:Standalone] config # ping -c 3 192.168.20.50%12     
PING 192.168.20.50%12 (192.168.20.50%12) 56(84) bytes of data.
64 bytes from 192.168.20.50%12: icmp_seq=1 ttl=64 time=0.581 ms
64 bytes from 192.168.20.50%12: icmp_seq=2 ttl=64 time=0.534 ms
64 bytes from 192.168.20.50%12: icmp_seq=3 ttl=64 time=0.520 ms

--- 192.168.20.50%12 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.520/0.545/0.581/0.026 ms
[root@localhost:Active:Standalone] config # 
[root@localhost:Active:Standalone] config # 
[root@localhost:Active:Standalone] config # 
[root@localhost:Active:Standalone] config # ping -c 3 192.168.40.50%34
PING 192.168.40.50%34 (192.168.40.50%34) 56(84) bytes of data.
64 bytes from 192.168.40.50%34: icmp_seq=1 ttl=64 time=1.14 ms
64 bytes from 192.168.40.50%34: icmp_seq=2 ttl=64 time=0.625 ms
64 bytes from 192.168.40.50%34: icmp_seq=3 ttl=64 time=0.652 ms

--- 192.168.40.50%34 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.625/0.808/1.148/0.241 ms
[root@localhost:Active:Standalone] config # 

rdsh

rdshと呼ばれるツールを使用すると、RouteDomainの移動が可能になります。まずはデフォルトの状態での挙動を確認しましょう。デフォルトの状態ではVLAN0010などのRouteDomainに対して作成したIPアドレスは見えない状態になっています。

[root@localhost:Active:Standalone] config # ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::250:56ff:fe90:3dc7  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:90:3d:c7  txqueuelen 1000  (Ethernet)
        RX packets 48464  bytes 7547509 (7.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 34446  bytes 33488866 (31.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.255.255.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1535063  bytes 127702015 (121.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1535063  bytes 127702015 (121.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo:1: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.2.0.2  netmask 255.255.255.0
        loop  txqueuelen 1000  (Local Loopback)

mgmt: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.30  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::250:56ff:fe90:3dc7  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:90:3d:c7  txqueuelen 1000  (Ethernet)
        RX packets 47589  bytes 6781388 (6.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 34481  bytes 33493956 (31.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tmm: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 127.1.1.254  netmask 255.255.255.0  broadcast 127.1.1.255
        inet6 fe80::298:76ff:fe54:3210  prefixlen 64  scopeid 0x20<link>
        inet6 fc00:f5::1  prefixlen 64  scopeid 0x0<global>
        ether 00:98:76:54:32:10  txqueuelen 1000  (Ethernet)
        RX packets 70479  bytes 3872515 (3.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 73777  bytes 15476713 (14.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tmm_bp: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 4096
        inet 127.20.0.254  netmask 255.255.0.0  broadcast 127.20.255.255
        inet6 fe80::1:23ff:fe45:fe  prefixlen 64  scopeid 0x20<link>
        ether 02:01:23:45:00:fe  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 360 (360.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost:Active:Standalone] config # 

RouteDomain12が属しているサブネットにpingを実行しても、疎通応答なしです。

[root@localhost:Active:Standalone] config # ping -c 3 192.168.20.50
PING 192.168.20.50 (192.168.20.50) 56(84) bytes of data.

--- 192.168.20.50 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms

[root@localhost:Active:Standalone] config # 

この状態から、rdshと呼ばれるツールの引数にRD番号を指定します。全くプロンプトが変わらないので、見た目は分かりづらいのですが(よくオペミスを誘発するのですが)、このコマンドの実行によりRouteDomain12からの操作が可能になります。

[root@localhost:Active:Standalone] config # rdsh 12
[root@localhost:Active:Standalone] config # 

rdshコマンド実行後は、VLAN0010などのRouteDomainに対して作成したインターフェースが見えるようになります。

[root@localhost:Active:Standalone] config # ifconfig 
VLAN0010: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.1  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::250:56ff:fe90:d6de  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:90:d6:de  txqueuelen 1000  (Ethernet)
        RX packets 3  bytes 180 (180.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 648 (648.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

VLAN0020: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.20.1  netmask 255.255.255.0  broadcast 192.168.20.255
        inet6 fe80::250:56ff:fe90:d6de  prefixlen 64  scopeid 0x20<link>
        ether 00:50:56:90:d6:de  txqueuelen 1000  (Ethernet)
        RX packets 10  bytes 924 (924.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 1572 (1.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.255.255.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tmm: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 127.1.1.254  netmask 255.255.255.0  broadcast 127.1.1.255
        inet6 fe80::298:76ff:fe54:3210  prefixlen 64  scopeid 0x20<link>
        inet6 fc00:f5::1  prefixlen 64  scopeid 0x0<global>
        ether 00:98:76:54:32:10  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9  bytes 806 (806.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

RD番号の指定なしにpingの実行が可能になります。

[root@localhost:Active:Standalone] config # ping -c 3 192.168.20.50
PING 192.168.20.50 (192.168.20.50) 56(84) bytes of data.
64 bytes from 192.168.20.50: icmp_seq=1 ttl=64 time=1.96 ms
64 bytes from 192.168.20.50: icmp_seq=2 ttl=64 time=0.494 ms
64 bytes from 192.168.20.50: icmp_seq=3 ttl=64 time=0.757 ms

--- 192.168.20.50 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.494/1.073/1.969/0.642 ms
[root@localhost:Active:Standalone] config # 
タイトルとURLをコピーしました