2018年6月8日金曜日

Policy based routing on CentOS 7

v6プラスの導入以降、ネットワーク環境はIPoE接続とPPPoE接続を併用しています。
実際のアドレスとは違いますが、次のような構成になっています。
  • PPPoE BBルータ (192.168.0.1/23)
  • IPoE BBルータ (192.168.1.1/23)
192.168.0.0/24で利用していたものに、192.169.1.0を追加し、同セグメントにするためサブネットマスクを/23に変更した形になります。
IPoEの経路は速くて良いのですが、外部から接続できるようにNATも利用するためPPPoEの経路もなくせません。

ということで、新PCでは、デフォルトゲートウェイはIPoEのBBルータを利用し、NAT通信はPPPoEのルータを経由するようポリシーベースルーティングの設定をすることにしました。

ネットワック環境は次のようになります。
# nmcli con show
NAME                    UUID                                  TYPE      DEVICE
bridge-br0              4a45b8de-49cc-4c50-8b8d-eeeeeeeeeeee  bridge    br0
bridge-slave-enp0s31f6  417d8d8a-31d3-4f91-b64e-ffffffffffff  ethernet  enp0s31f6
enp4s0                  b91dc271-b52b-4363-a74d-bbbbbbbbbbbb  ethernet  enp4s0
enp5s0                  0584bdaf-5f78-44f1-a941-cccccccccccc  ethernet  enp5s0
....
# ip route
default via 192.168.1.1 dev enp5s0 proto static metric 102
192.168.0.0/23 dev enp5s0 proto kernel scope link src 192.168.0.100 metric 102
192.168.0.0/23 dev br0 proto kernel scope link src 192.168.0.101 metric 425
....
#
enp5s0に192.168.0.100/23、br0に192.168.0.101/23、デフォルトゲートウェイに192.168.1.1が設定してあります。
この環境で192.168.0.101で受けた接続は、192.168.0.1を経由するルートとなるように設定します。

まず、NetworkManagerでルーティングルールが扱えるように次のパッケージをインストールして有効化します。
# yum install NetworkManager-dispatcher-routing-rules
....
# systemctl enable NetworkManager-dispatcher
これで、/etc/sysconfig/network-scripts/rule-NAMEファイルが使えるようになったので設定ファイルを作成していきます。
まずは、ルーティングテーブルIDと名前を/etc/iproute2/rt_tablesに追加します。
# cat /etc/iproute2/rt_tables
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
100     pppoe-rt
末尾の100 pppoe-rtを追加しています。
次にbr0に割り当てている192.168.0.101からの通信が上記で設定したルーティングテーブルを参照してルーティングするように設定します。
/etc/sysconfig/network-scripts/route-bridge-br0を次のように作成します。
# cat /etc/sysconfig/network-scripts/route-bridge-br0
default via 192.168.0.1 dev br0 table pppoe-rt
192.168.0.0/23 dev br0 table pppoe-rt
ルーティングポリシーのルールを/etc/sysconfig/network-scripts/rule-bridge-br0に作成します。
# cat /etc/sysconfig/network-scripts/rule-bridge-br0
from 192.168.0.101/32 table pppoe-rt priority 100

念のため、リブート後に自動設定されることを確認します。
# ip route
default via 192.168.1.1 dev enp5s0 proto static metric 102
192.168.0.0/23 dev enp5s0 proto kernel scope link src 192.168.0.100 metric 102
192.168.0.0/23 dev br0 proto kernel scope link src 192.168.0.101 metric 425
.....
# ip rule show
0:      from all lookup local
100:    from 192.168.0.101 lookup pppoe-rt
32766:  from all lookup main
32767:  from all lookup default
#
# ip route show table pppoe-rt
default via 192.168.0.1 dev br0
192.168.0.0/23 dev br0 scope link

以上

0 件のコメント:

コメントを投稿