BCP38について_uRPFの動作

最近話題のBCP38(RFC2827)について

Network Ingress Filtering
IP偽装されたパケットの転送を防ぐためのフィルタが定義されています。

文書の中でフィルタは
・イングレスアクセスリスト
  送信元プレフィックスを利用したアクセスリスト。
  更新する必要がある為、維持管理が大変。
・uRPF
  経路情報を利用して送信元IPをチェックする。
等が定義されています。

この中で今回はuRPFの動作について書こうと思います。

uRPF(Unicast Reverse Path Forwarding)

前述の通り、経路情報を参照して送信元IPの正当性をチェックします。
モードは下記2通りありますが、今回はStrictモードの動作について。
Strictモード・・・ルート情報/受信IFをチェック
Looseモード・・・ルート情報のみをチェック(マルチホーミング環境に有効 詳しくはBCP84

構成

構成図を使って具体的な動作を説明します。
Customer_AはISP_Aから10.1.1.0/24のアドレスを割り当ててもらっています。
言い換えるとISP_AのPEは"10.1.1.0/24 via Customer_AのCE"という経路情報を持っています。

f:id:kashigeru:20140128092442j:plain

ISP_AはCustomer_Aからは割り当てた10.1.1.0/24の範囲以外の送信元IPパケットが
来るはずはないので来たら拒否すべきです。(IP偽装されていると判断)
そこでISP_AのGi0/0でuRPF Strictモードを有効にします。

Cisocの場合(Strictモード)

 PE(config-if)#ip verify unicast source reachable-via rx

設定確認

PE#show cef interface gigabitEthernet 0/0

 GigabitEthernet0/0 is up (if_number 1)
  Corresponding hwidb fast_if_number 1
  Corresponding hwidb firstsw->if_number 1
  Hardware idb is GigabitEthernet0/0
  IP unicast RPF check is enabled  ←enableになっている

動作確認(IP偽装されてない通常の場合)
Customer_A内のルータから送信元IPを10.1.1.100にしてCustomer_Bの172.16.1.100へ
pingを打ってみます。

R2#ping 172.16.1.100 source 10.1.1.100

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.100, timeout is 2 seconds:
!!!!!

疎通確認OKです。
PEの経路情報に10.1.1.0/24があり、且つ受信IFがGi0/0のため、チェックを通過します。

動作確認(IP偽装の場合)
次にCustomer_A内のルータから送信元IPを1.1.1.1にしてCustomer_Bの172.16.1.100へ
pingを打ってみます。

R2#ping 172.16.1.100 source 1.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.100, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1
.....
Success rate is 0 percent (0/5)

疎通がとれません。
PEの経路情報に1.1.1.1がないため、uRPFチェックにかかります。
ではパケットがDROPされているか確認します。

  
PE#sh ip int gigabitEthernet 0/0
GigabitEthernet0/0 is up, line protocol is up
              ・  
              ・  
  Policy routing is disabled
  Network address translation is disabled
  BGP Policy Mapping is disabled
  WCCP Redirect outbound is disabled
  WCCP Redirect inbound is disabled
  WCCP Redirect exclude is disabled
  IP verify source reachable-via RX
  5 verification dropsdropされている  
 
PE#sh ip traffic
IP statistics:
  Rcvd:  22 total, 0 local destination
         0 format errors, 0 checksum errors, 0 bad hop count
         0 unknown protocol, 0 not a gateway
         0 security failures, 0 bad options, 0 with options
  Opts:  0 end, 0 nop, 0 basic security, 0 loose source route
         0 timestamp, 0 extended security, 0 record route
         0 stream ID, 0 strict source route, 0 alert, 0 cipso, 0 ump
         0 other
  Frags: 0 reassembled, 0 timeouts, 0 couldn't reassemble
         0 fragmented, 0 fragments, 0 couldn't fragment
  Bcast: 0 received, 0 sent
  Mcast: 0 received, 0 sent
  Sent:  0 generated, 16 forwarded
  Drop:  1 encapsulation failed, 0 unresolved, 0 no adjacency
         0 no route, 5 unicast RPF, 0 forced drop  ←dropされている

このようにuRPFを有効にするのは簡単なので有効にするのもいいかもしれません。
ただISP側でやるのか、Customer側でやったほうがいいのか難しいところです。
今のところ我々はCustomer側なのですが実施していません。

広告を非表示にする