ルーターを守るセキュリティ機能として、CCNP ENARSIでよく問われるのがuRPFとCoPPです。uRPFは送信元アドレスを偽った通信を止め、CoPPはルーター自身に届く通信の量を制限して、ルーターが処理しきれなくなるのを防ぎます。
先に結論から
- uRPF(Unicast Reverse Path Forwarding)は、送信元アドレスを経路表で確かめ、なりすましの通信を捨てる機能です。
- strictモードは「受け取ったインターフェースから送信元に戻れるか」、looseモードは「送信元への経路がどこかにあるか」を確かめます。
- 行きと帰りで経路が違う(非対称ルーティング)環境では、strictモードだと正しい通信まで捨ててしまいます。
- CoPP(Control Plane Policing)は、MQCを使ってルーター自身への通信の量を制限します。
uRPFの仕組み

通常のルーティングは宛先アドレスを見ますが、uRPFは届いたパケットの送信元アドレスを経路表で調べます。経路表から見て「そこから来るはずがない」送信元のパケットは、なりすましと判断して捨てます。
| strictモード | looseモード | |
|---|---|---|
| 確かめる内容 | 送信元への経路が、パケットを受け取ったインターフェースを向いているか | 送信元への経路が、経路表のどこかにあるか |
| 設定 | ip verify unicast source reachable-via rx | ip verify unicast source reachable-via any |
| 向いている場所 | インターネットとの境目など、経路が1本の場所 | 非対称ルーティングがある場所 |
interface GigabitEthernet0/1
ip verify unicast source reachable-via rx
looseモードでは、デフォルトルートしかない場合、どの送信元も「経路がある」と判断されてしまう点にも注意が必要です(allow-defaultを付けない限り、デフォルトルートは確認に使われません)。確認にはshow ip interfaceやshow cef interfaceで、uRPFで捨てたパケットの数を見ます。
CoPPの仕組み

ルーターには、データを転送する部分(データプレーン)と、ルーティングプロトコルやSSHなどを処理する部分(コントロールプレーン)があります。コントロールプレーンに大量の通信が届くと、CPUが追いつかず、ルーティングプロトコルのネイバーが切れるなどの問題が起きます。CoPPは、コントロールプレーン宛ての通信を種類ごとに分け、量を制限します。
CoPPの設定例
ip access-list extended COPP-SSH
permit tcp any any eq 22
!
class-map match-all CM-SSH
match access-group name COPP-SSH
!
policy-map PM-COPP
class CM-SSH
police 64000 conform-action transmit exceed-action drop
!
control-plane
service-policy input PM-COPP
- ACLで、対象の通信(ここではSSH)を選びます。
- class-mapで、そのACLをクラスとしてまとめます。
- policy-mapで、クラスごとに上限の速度(ここでは64kbps)を決めます。
control-planeの中で、policy-mapを入力方向に適用します。
ENARSIで問われやすいポイント
- CoPPのACLでは、
permitは「このクラスに入れる」、denyは「このクラスに入れない」という意味で、通信を止めるわけではありません。 - ルーティングプロトコル(OSPFやBGPなど)のクラスを制限しすぎると、ネイバーが切れることがあります。
show policy-map control-planeで、クラスごとに一致したパケットや、捨てたパケットの数を確認できます。
ACLやQoSの基本は、ACLの種類と書き方とQoSの基本で解説しています。
よくある質問
uRPFのstrictモードとlooseモードの違いは何ですか?
strictモードは、送信元への経路が受け取ったインターフェースを向いているかを確かめます。looseモードは、送信元への経路が経路表のどこかにあれば通します。
非対称ルーティングの環境ではどちらのモードを使いますか?
looseモードを使います。strictモードだと、正しい通信まで捨ててしまうことがあります。
CoPPのACLでdenyと書くと、通信は止まりますか?
止まりません。そのクラスに入れないという意味になり、ほかのクラスの条件で扱われます。
