Contents
概要
Policy Based Routing(PBR)は特定の条件に応じて、参照するルーティングテーブルを変更できます。複数のネットワークアダプタを持つホストでは、通常は同じ宛先のルーティングを設定できませんが、Policy Based Routingを使用することで可能になります。
前提条件
OS
CentOS Stream 8を使用します。
SELinux
有効です。無効にする場合はこちらを参照して下さい。
Firewalld
無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。
ネットワーク構成
想定するネットワーク構成は下記の通りです。Policy Based Routingはens35で受信した戻り通信のみに適用されます。自発通信はens34が使用されます。
設定
ens34
ens34は下記の設定とします。Policy Based Routingの確認のみの為、最低限の設定としていますが、DNS等は必要に応じて設定して下さい。
[root@centos ~]# nmcli connection modify con-ens34 ipv4.method manual ipv4.addresses 192.168.100.2/24 ipv4.gateway 192.168.100.1 [root@centos ~]# nmcli connection up con-ens34
ens35
ens35のデフォルトルートはPolicy Based Routingを使用します。Policy Based Routingはデフォルトとは別のルーティングテーブルを使用し、本稿ではtable=5000としています。また、ens35のIPアドレス(192.168.101.2)から発信された場合のみtable=5000を参照するルーティングルールを設定しています。priorityはルールの優先度です。
[root@centos ~]# nmcli connection modify con-ens35 ipv4.method manual ipv4.addresses 192.168.101.2/24 [root@centos ~]# nmcli connection modify con-ens35 ipv4.routes "0.0.0.0/0 192.168.101.1 table=5000" ipv4.routing-rules "priority 100 from 192.168.101.2 table 5000" [root@centos ~]# nmcli connection up con-ens35
Policy Based Routing確認
ルーティングルールを確認します。下記の通り、192.168.101.2から発信された場合はルーティングテーブル:5000を参照するようになります。ちなみにルーティングテーブル名称は数字である必要はないので、分かり易い名前を付けると良いでしょう。
[root@centos ~]# ip rule list 0: from all lookup local 100: from 192.168.101.2 lookup 5000 32766: from all lookup main 32767: from all lookup default
ルーティングテーブル:5000の内容は下記の通りです。
[root@centos ~]# ip route list table 5000 default via 192.168.101.1 dev ens35 proto static metric 104 192.168.101.1 dev ens35 proto static scope link metric 104
/etc/sysconfig/network-scripts/route-ens35が作成されます。
[root@centos ~]# cat /etc/sysconfig/network-scripts/route-ens35
ADDRESS0=0.0.0.0
NETMASK0=0.0.0.0
GATEWAY0=192.168.101.1
OPTIONS0="table 5000"