はじめに
このページは、F5 BIG-IPの機能である「Route Domain」について、自習した内容をまとめたものです。
Route Domainとは
一言で言うなら「バーチャルルータ」。
Cisco(IOS)のVRF、LinuxのNetwork NameSpaceに似た機能です。
以下のように、1台のBIG-IPにルートドメインを複数作成することにより、複数の独立したルーティングテーブルでネットワークを制御できます。
VRFやNetwork Namespaceと同じく、Route Domainでも、ルートドメインが異なれば、同じIPアドレスを利用することも可能です。
ちなみに、BIG-IPでは、実際には複数のルーティングテーブルを持つのではなく、ルーティングのレコードにドメインIDという識別子を持たせることで、実装してるようです。'(tmsh) show net route' コマンドでルーティングテーブルを表示してみると、ちょっと気持ち悪い感じがします。
root@(bigip-ve)(cfg-sync Standalone)(Active)(/Common)(tmos)# show net route
--------------------------------------------------------------------------------------------------
Net::Routes
Name Destination Type NextHop Origin
--------------------------------------------------------------------------------------------------
172.16.0.0%200/12 172.16.0.0%200/12 interface /Common/VLAN_201 connected
172.16.0.0%100/12 172.16.0.0%100/12 interface /Common/VLAN_101 connected
10.0.0.0%200/8 10.0.0.0%200/8 interface /Common/VLAN_200 connected
10.0.0.0%100/8 10.0.0.0%100/8 interface /Common/VLAN_100 connected
127.1.1.0%200/24 127.1.1.0%200/24 interface tmm%200 connected
127.1.1.0%100/24 127.1.1.0%100/24 interface tmm%100 connected
・・・
一つのルーティングテーブル上に、「x.x.x.x%ID」という形でレコードが表示されます。上記の場合、172.16.0.0%200/12 は「ルートドメイン200上の、172.16.0.0/12」という意味になります。ルーティングテーブルを分けているつもりが、1つのテーブル内で表示されるのが気持ち悪い上に、とても読みにくい。これはなんとかして欲しいところ・・・
Route Domainの利点
上記の通り、複数の、独立したルーティング情報を持つことができます。ルートドメインを分けることで、それぞれ個別に、論理的にはトラフィックが混ざることなく、ネットワークを設計・構築することができます。
ネットワークアドレスが重複することもできるので、いわゆるマルチテナントにも利用できます。
Route Domain 0
Route Domain 0は、最初から存在するルートドメインです。ルートドメインを作っていなければ、全てのVLANはこのドメインに属します。このルートドメインは削除できません。
Route Domainの設定
Route Domainを利用する場合は、まず、新しいRoute Domainを作成することが必要です。ドメインはID(番号)で区別されているので、各ドメインのIDは重複できません。また、そのRoute Domainに所属させるVLANを設定します。
(tmos)# create net route-domain RD100 { id 100 vlans add { VLAN_100 VLAN_101 } }
(tmos)# create net route-domain RD100 { id 200 vlans add { VLAN_200 VLAN_201 } }
(tmos)# list net route-domain
net route-domain 0 {
id 0
vlans {
http-tunnel
socks-tunnel
}
}
net route-domain RD100 {
id 100
vlans {
VLAN_101
VLAN_100
}
}
net route-domain RD200 {
id 200
vlans {
VLAN_200
VLAN_201
}
}
Route Domainを作成したら、そのドメイン上に作成する各種オブジェクト(Self IP, Node, Virtual Server, Routing, SNAT 等々)を作成します。この時、IPアドレスの後ろに『%ID』を付与します。
例えば、Route Domain 100上VLAN 100に、10.0.0.1/24 というSelf IPを作成する場合は、次のようになります。
(tmos)# create net self vlan100_self { address 10.0.0.1%100/8 vlan VLAN_100 }
(tmos)# list net self
net self vlan100_self {
address 10.0.0.1%100/8
traffic-group traffic-group-local-only
vlan VLAN_100
}
Route Domainを超える通信
Route Domain作成時、設定に「Strict Isolation」と「Parent Domain」という設定欄があり、それぞれ、デフォルトでは「Strict Isolation は Enabled」、「Parent Domain は None」と設定されています。
このデフォルト状態の設定であれば、他のドメインへの通信は行いません。
Strict Isolationと、Parent Domainについて
Strict Isolationが無効な場合、通信が自ドメインのルーティングにヒットしない場合は、単純に他のドメインのルーティングに回されます。この機能を無効にする場合は、注意が必要です。(個人的には、Strict Isolationを無効にする状態で、複数のRoute Domainを使う必要性がわかりません。)
Strict Isolationが有効な場合、パケットの宛先が自ドメイン内のルーティングにヒットしない場合にはParent Domainに指定したドメイン(親ドメイン)のルーティングが参照されます。そして、ヒットする経路がある場合は、親ドメイン上の宛先VLANへパケットを送信します。
Parent Domainが「None」になっているということは、そのドメインは親ドメインがないことを表します。
このParent Domainの仕組みは何に使えるのだろうと考えたのですが、例えば、インターネットとLANの境界にBIG-IPが設置されているときは、次のように使えるのかなと思います。(あくまで想像です)
この場合、Route Domain100では送信元IPが重複する可能性があるので、SNATも使用する必要があります。
Route DomainとPartition
Route Domainは便利ですが、設定の都度、IPアドレスの後ろに「%ID」をつけなければならないのが辛いところです。
Route Domainはネットワークを分離しますが、Partitionを使うと、設定の管理を分離できます。
Partitionを使用すると、Partitionごとに"Default Route Domain" を設定でき、そのPartition内の操作をするとき、Route Domainを意識する必要が(かなり)なくなります。Route Domainを使うときは、Partitionとあわせて使うのが良いのではないでしょうか。
参考URL
免責事項
本ページの内容に誤り等があり、参考にされた方がなんらかの損害を被った場合、一切の責任は負いません。