手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Reverse Path Filtering の基本設定 – 複数インターフェイスと PBR で rp_filter を確認する

Ubuntu 26.04 で複数 NIC や Policy Based Routing を使う場合、経路設計だけでなく rp_filter も確認する必要があります。rp_filter は Reverse Path Filtering の設定で、受信したパケットの送信元へ戻る経路が妥当かどうかを Linux kernel が確認する仕組みです。

単一 NIC のサーバーでは意識しなくても問題になりにくい設定ですが、複数 NIC、複数 VLAN、PBR、非対称経路を使う環境では、正しい通信まで落としてしまうことがあります。この記事では、Ubuntu 26.04 Server で rp_filter を確認し、どのような場面で調整が必要になるのかを整理します。

Ubuntu 26.04 サーバー管理ガイドに戻る
この記事で確認すること
参考書籍
参考書籍
ストーリーで覚える Linux CLI 入門
Ubuntu Server のネットワーク確認、CLI 操作、設定ファイル管理を押さえたい場合の参考書籍です。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

rp_filter とは何か

rp_filter は、Reverse Path Filtering を制御する Linux kernel の設定です。受信したパケットについて、送信元アドレスへ戻る経路を kernel が確認し、その経路が受信 interface と整合しない場合にパケットを破棄することがあります。

これは、送信元アドレスを偽装したパケットを抑制するためには有効です。一方で、複数 NIC や PBR のように、行きと戻りの経路が単純ではない構成では、正常な通信まで不正な経路に見えることがあります。

観点内容
目的送信元アドレスの妥当性を経路から確認する
利点明らかに不自然な送信元を持つ通信を落としやすい
注意点複数 NIC や非対称経路で正常通信を落とすことがある
確認対象net.ipv4.conf.*.rp_filter

複数 NIC と PBR で問題になる理由

複数 NIC のサーバーでは、受信した interface と、送信元へ戻る時に使う interface が一致しないことがあります。たとえば、管理用 NIC とサービス用 NIC を分けている環境で、main table の default route が管理用 NIC 側にある場合、サービス用 NIC で受けた通信の戻り経路が管理用 NIC 側に見えることがあります。

PBR を使えば送信元ごとに routing table を分けられますが、rp_filter の設定が厳しすぎると、PBR で意図した通信を kernel が先に落としてしまうことがあります。つまり、PBR の設計と rp_filter の設計は分けて考えられません。

  • 複数 NIC で管理用とサービス用を分けている
  • VLAN ごとに gateway が異なる
  • 送信元 IP ごとに PBR で出口を分けている
  • Firewall や NAT の前後で戻り経路が非対称になる
  • 閉域網、管理網、公開網を 1 台のサーバーで扱っている

このような構成では、通信が通らない時に Firewall だけを見るのではなく、rp_filter も確認する必要があります。

現在の設定を確認する

まず、現在の rp_filter、IP アドレス、route、rule を確認します。Ubuntu の既定値は環境や構成によって変わる可能性があるため、前提として実機の値を確認します。

コマンド
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.default.rp_filter
sysctl -a | grep '\.rp_filter'
ip address
ip route
ip rule

alldefault、各 interface の値を分けて確認します。all は全体の挙動に関係し、default は新しく作成される interface の初期値に関係します。実際の interface ごとの値も必ず確認します。

コマンド
sysctl net.ipv4.conf.enp1s0.rp_filter
sysctl net.ipv4.conf.enp2s0.rp_filter
ip route get 10.0.20.10
ip route get 10.0.20.10 from 10.0.20.20

rp_filter の値を理解する

rp_filter の値は、一般的に次のように理解します。

意味考え方
0無効Reverse Path Filtering を行わない
1strict mode送信元へ戻る最適経路が受信 interface と一致することを求める
2loose mode送信元へ何らかの経路があれば許容する

単一 NIC で経路が単純なサーバーでは、strict mode が問題になりにくい場合があります。一方、複数 NIC や PBR を使うサーバーでは、strict mode が正常な通信を落とす原因になることがあります。そのため、複数 NIC のサーバーでは loose mode や無効化を検討する場面があります。

ただし、何も考えずに無効化すればよいわけではありません。rp_filter は送信元アドレス偽装への対策にも関係します。どの interface でどの通信を受けるのか、Firewall や ACL でどこまで制御しているのかを合わせて判断します。

sysctl で設定する

複数 NIC や PBR のサーバーで loose mode にする例です。ここでは alldefault、対象 interface を明示します。

設定ファイル例
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.enp1s0.rp_filter = 2
net.ipv4.conf.enp2s0.rp_filter = 2
コマンド
sudo tee /etc/sysctl.d/99-rp-filter.conf >/dev/null <<'EOF'
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.enp1s0.rp_filter = 2
net.ipv4.conf.enp2s0.rp_filter = 2
EOF
sudo sysctl --system

interface 名は環境に合わせます。複数 VLAN や bridge、bonding を使う環境では、実際に通信を受ける interface の rp_filter を確認します。

通信と経路を確認する

設定後は、rp_filter の値だけでなく、送信元ごとの route、rule、実際の通信を確認します。

コマンド
sysctl -a | grep '\.rp_filter'
ip rule
ip route show table main
ip route show table 100
ip route show table 200
ip route get 8.8.8.8 from 10.0.20.20
ss -lntup

通信が落ちる場合は、tcpdump で受信 interface と送信 interface を分けて確認します。パケットが入ってきているのにアプリケーションへ届かない、または応答が出ない場合は、Firewall、PBR、rp_filter のどこで落ちているのかを切り分けます。

コマンド
sudo tcpdump -ni enp1s0 host 10.0.20.10
sudo tcpdump -ni enp2s0 host 10.0.20.10
journalctl -k -n 100 --no-pager

設計としてどう扱うか

rp_filter は、単に有効か無効かで決めるものではありません。ネットワーク設計として、どの interface で受け、どの経路で戻すのかを決めた上で、その設計に合う値を選ぶものです。

  • 単一 NIC で経路が単純なサーバーでは strict mode でも問題になりにくい
  • 複数 NIC で戻り経路が分かれる場合は loose mode を検討する
  • PBR を使う場合は、ip rulerp_filter を合わせて確認する
  • 無効化する場合は、Firewall、ACL、経路設計で送信元を制御する
  • 設定値だけでなく、実際の packet path を確認する

重要なのは、rp_filter を通信障害時の場当たり的な設定変更として扱わないことです。複数 NIC や PBR を採用するなら、Reverse Path Filtering も同じネットワーク設計の一部として扱う方が安全です。

まとめ

Ubuntu 26.04 で複数 NIC、複数 VLAN、Policy Based Routing を使う場合、rp_filter の確認は重要です。rp_filter は送信元アドレスの妥当性を経路から確認する仕組みですが、非対称経路では正常な通信を落とす原因にもなります。

単純なサーバーでは意識しにくい設定ですが、管理網、公開網、内部網、ストレージ網を分ける構成では、PBR と合わせて設計する必要があります。通信が通らない時は、Firewall や route だけでなく、Reverse Path Filtering も確認対象に含めます。

関連する記事
Ubuntu 26.04 Reverse Path Filtering の基本設定 – 複数インターフェイスと PBR で rp_filter を確認する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る