Ubuntu 26.04 で複数 NIC や複数セグメントを扱うと、宛先だけでなく通信元アドレスによって出口を分けたい場面があります。そのときに使うのが Policy Based Routing です。
通常のデフォルトルート 1 つで済むなら、Policy Based Routing は不要です。この記事では、必要になる場面と、Netplan での基本的な考え方を整理します。
Policy Based Routing が必要になる場面
- 管理用 NIC とサービス用 NIC の出口を分けたい
- 複数の上流ルータを使い分けたい
- 送信元 IP に応じて戻り経路を合わせたい
- 外部公開用と内部通信用の経路を分けたい
通常のルーティングを確認する
まず通常のルーティングで解決できるかを確認します。Policy Based Routing は強力ですが、設定を複雑にしやすいので、必要な場合だけ使います。
ip route
ip rule
ip route get 8.8.8.8Netplan の基本例
次は、ens192 の送信元アドレスから出る通信を別ルーティングテーブルへ向ける例です。
network:
version: 2
ethernets:
ens160:
addresses:
- 192.0.2.10/24
routes:
- to: default
via: 192.0.2.1
ens192:
addresses:
- 198.51.100.10/24
routes:
- to: default
via: 198.51.100.1
table: 100
routing-policy:
- from: 198.51.100.10/32
table: 100テーブル番号を管理する
ルーティングテーブル番号は、運用で意味が分かるように管理しておくと後から見やすくなります。必要に応じて /etc/iproute2/rt_tables に名前を付けます。
grep -v "^#" /etc/iproute2/rt_tables | sed -n '1,120p'設定を反映する
sudo netplan generate
sudo netplan try
# 問題がなければ
sudo netplan apply反映後に確認する
反映後は ip rule とテーブル別のルートを確認します。
ip rule
ip route show table main
ip route show table 100
ip route get 8.8.8.8 from 198.51.100.10注意点
Policy Based Routing は firewall、NAT、サービスの待ち受けアドレス、戻り経路と絡みます。単に外へ出るだけでなく、戻りの通信が同じ経路で戻るかを確認することが重要です。
まとめ
Policy Based Routing は複数 NIC 構成を細かく制御するための仕組みです。Ubuntu 26.04 では Netplan から設定できますが、通常のルーティングで済む構成か、送信元ごとに出口を分ける必要があるかを先に判断することが大切です。
Ubuntu 26.04 Policy Based Routing の基本



