[uRPFとは]
受信したパケットの送信元IPアドレスとルーティングテーブルの情報を基に、
パケットをフィルタリングする機能。
送信元IPアドレスがルーティングテーブルに存在しているかを確認し、
存在する場合はパケット転送を行い、存在しない場合は破棄する。
[uRPFモード]
uRPFには以下3つのモードがある。
・Loose Mode
→受信したパケットの送信元IPアドレスがルーティングテーブルに存在するか確認し、
存在する場合はパケットを転送、存在しない場合はパケットを破棄する。
・Strict Mode
→受信したパケットの送信元IPアドレスと受信したインターフェースの組み合わせが
ルーティングテーブルに存在するか確認し、存在する場合はパケットを転送
存在しない場合はパケットを破棄する。
・VRF Mode
→受信したパケットに対応するVRFインスタンスごとにLoose Modeと同様の処理を行う。
(前提として機器がVRFに対応している必要あり。)
[処理順序]
uRPFと ACLを適用している場合は以下の順で処理される。
1. インバウンドACLの処理
2. uRPFの処理
3. ルーティング処理
4. アウトバウンドACLの処理
[uRPF設定]
(config-if)#ip verify unicast source reachable-via { any | rx } [ allow-default ] [ allow-self-ping ] [ ACL番号 ]
▼パラメータ詳細
・{ any | rx }
→uRPFモードの指定
・any:Loose Mode
・rx:Strict Mode
・allow-default
→受信したパケットの送信元アドレスの確認にデフォルトルートを含める。
・allow-self-ping
→ルータ自身からのpingを許可する。
※uRPFが有効なインターフェースは、
デフォルトで自身のアドレスへのpingを破棄する。
・ACL番号
→uRPFによるチェックで破棄対象となったパケットを
再チェックするためのACL番号を指定。
ACLで許可されたパケットはuRPFで破棄対象となっても許可される。
正直文章だけ読んでもよくわからなかったのでGNS3でラボを作ってみた。
▼ラボ構成
これで1.1.1.1のPCから10.0.0.254までのPingを打ってみた結果、
想定通り疎通NG。
一応uRPFの設定外して疎通OKになるか試してみたら、、
疎通NGとなった。
よく考えたら1.1.1.0/24向けの戻りルートがないので
Ping通るはずがないですね…
不正なUDP通信をブロックするための機能なのか??と
推測しつつも、ラボ設定の正当性に若干疑問が残る状態で終了。
uRPFの設定入れるくらいなら素直にACL入れたほうが
分かりやすい気がするがどうなんだろう…