예: 유니캐스트 RPF 구성(라우터에서)
이 예는 수신 트래픽을 필터링하기 위해 고객 에지 인터페이스에서 유니캐스트 RPF를 구성하여 서비스 거부(DoS) 및 분산 서비스 거부(DDoS) 공격으로부터 수신 인터페이스를 방어하는 방법을 보여줍니다.
요구 사항
디바이스 초기화 이외의 특별한 구성은 필요하지 않습니다.
개요
이 예에서 디바이스 A는 OSPF를 사용하여 디바이스 D에 연결되는 링크의 접두사를 광고합니다. 디바이스 B에는 유니캐스트 RPF가 구성되어 있습니다. OSPF는 디바이스 B와 디바이스 C 간의 링크 및 디바이스 A와 디바이스 C 간의 링크에서 활성화되지만, 디바이스 A와 디바이스 B 간의 링크에서는 활성화되지 않습니다. 따라서 디바이스 B는 디바이스 C를 통해 디바이스 D에 대한 경로를 학습합니다.
DHCP 또는 BOOTP가 사용되는 환경에서 수신 필터링을 사용하는 경우 소스 주소가 0.0.0.0이고 대상 주소가 255.255.255.255인 패킷이 적절한 경우 라우터의 릴레이 에이전트에 도달할 수 있는지 확인해야 합니다.
이 예제에는 실패 필터도 포함되어 있습니다. 패킷이 유니캐스트 RPF 검사에 실패하면 실패 필터를 평가하여 패킷을 수락해야 하는지 여부를 결정합니다. 이 예제의 실패 필터를 사용하면 디바이스 B의 인터페이스가 DHCP(Dynamic Host Configuration Protocol) 패킷을 수락할 수 있습니다. 필터는 원본 주소가 0.0.0.0이고 대상 주소가 255.255.255.255인 모든 패킷을 받아들입니다.
구성
CLI 빠른 구성
이 예를 빠르게 구성하려면, 아래 명령을 복사하여 텍스트 파일로 붙여 넣은 다음 모든 라인브레이크를 제거하고, 네트워크 구성을 일치하는 데 필요한 세부 사항을 변경한 다음, 계층 수준에서 명령을 CLI로 [edit]
복사해 붙여 넣습니다.
디바이스 A
set interfaces fe-1/2/0 unit 1 family inet address 10.0.0.1/30 set interfaces fe-0/0/2 unit 5 family inet address 10.0.0.5/30 set interfaces fe-0/0/1 unit 17 family inet address 10.0.0.17/30 set interfaces fe-0/1/1 unit 25 family inet address 10.0.0.25/30 set interfaces fe-1/1/1 unit 29 family inet address 10.0.0.29/30 set protocols ospf export send-direct set protocols ospf area 0.0.0.0 interface fe-0/1/1.25 set protocols ospf area 0.0.0.0 interface fe-1/1/1.29 set policy-options policy-statement send-direct from protocol direct set policy-options policy-statement send-direct from route-filter 10.0.0.16/30 exact set policy-options policy-statement send-direct then accept
디바이스 B
set interfaces fe-1/2/0 unit 2 family inet rpf-check fail-filter rpf-special-case-dhcp set interfaces fe-1/2/0 unit 2 family inet address 10.0.0.2/30 set interfaces fe-1/1/1 unit 6 family inet rpf-check fail-filter rpf-special-case-dhcp set interfaces fe-1/1/1 unit 6 family inet address 10.0.0.6/30 set interfaces fe-0/1/1 unit 9 family inet rpf-check fail-filter rpf-special-case-dhcp set interfaces fe-0/1/1 unit 9 family inet address 10.0.0.9/30 set interfaces fe-0/1/0 unit 13 family inet rpf-check fail-filter rpf-special-case-dhcp set interfaces fe-0/1/0 unit 13 family inet address 10.0.0.13/30 set protocols ospf area 0.0.0.0 interface fe-0/1/1.9 set protocols ospf area 0.0.0.0 interface fe-0/1/0.13 set routing-options forwarding-table unicast-reverse-path active-paths set firewall filter rpf-special-case-dhcp term allow-dhcp from source-address 0.0.0.0/32 set firewall filter rpf-special-case-dhcp term allow-dhcp from destination-address 255.255.255.255/32 set firewall filter rpf-special-case-dhcp term allow-dhcp then count rpf-dhcp-traffic set firewall filter rpf-special-case-dhcp term allow-dhcp then accept set firewall filter rpf-special-case-dhcp term default then log set firewall filter rpf-special-case-dhcp term default then reject
디바이스 C
set interfaces fe-1/2/0 unit 10 family inet address 10.0.0.10/30 set interfaces fe-0/0/2 unit 14 family inet address 10.0.0.14/30 set interfaces fe-1/0/2 unit 21 family inet address 10.0.0.21/30 set interfaces fe-1/2/2 unit 26 family inet address 10.0.0.26/30 set interfaces fe-1/2/1 unit 30 family inet address 10.0.0.30/30 set protocols ospf area 0.0.0.0 interface fe-1/2/0.10 set protocols ospf area 0.0.0.0 interface fe-0/0/2.14 set protocols ospf area 0.0.0.0 interface fe-1/2/2.26 set protocols ospf area 0.0.0.0 interface fe-1/2/1.30
디바이스 D
set interfaces fe-1/2/0 unit 18 family inet address 10.0.0.18/30
디바이스 E
set interfaces fe-1/2/0 unit 22 family inet address 10.0.0.22/30
디바이스 A 구성
단계별 절차
다음 예제에서는 구성 계층의 다양한 수준을 탐색해야 합니다. CLI 탐색에 대한 정보는 구성 모드에서 CLI 편집기 사용의 내용을 참조하십시오.
디바이스 A 구성:
인터페이스를 구성합니다.
[edit interfaces] user@A# set fe-1/2/0 unit 1 family inet address 10.0.0.1/30 user@A# set fe-0/0/2 unit 5 family inet address 10.0.0.5/30 user@A# set fe-0/0/1 unit 17 family inet address 10.0.0.17/30 user@A# set fe-0/1/1 unit 25 family inet address 10.0.0.25/30 user@A# set fe-1/1/1 unit 29 family inet address 10.0.0.29/30
OSPF를 구성합니다.
[edit protocols ospf] user@A# set export send-direct user@A# set area 0.0.0.0 interface fe-0/1/1.25 user@A# set area 0.0.0.0 interface fe-1/1/1.29
라우팅 정책을 구성합니다.
[edit policy-options policy-statement send-direct] user@A# set from protocol direct user@A# set from route-filter 10.0.0.16/30 exact user@A# set then accept
디바이스 A 구성을 완료하면 구성을 커밋합니다.
[edit] user@A# commit
디바이스 B 구성
단계별 절차
다음 예제에서는 구성 계층의 다양한 수준을 탐색해야 합니다. CLI 탐색에 대한 정보는 구성 모드에서 CLI 편집기 사용의 내용을 참조하십시오.
디바이스 B 구성:
인터페이스를 구성합니다.
[edit interfaces] user@B# set fe-1/2/0 unit 2 family inet address 10.0.0.2/30 user@B# set fe-1/1/1 unit 6 family inet address 10.0.0.6/30 user@B# set fe-0/1/1 unit 9 family inet address 10.0.0.9/30 user@B# set fe-0/1/0 unit 13 family inet address 10.0.0.13/30
OSPF를 구성합니다.
[edit protocols ospf area 0.0.0.0] user@B# set interface fe-0/1/1.9 user@B# set interface fe-0/1/0.13
유니캐스트 RPF를 구성하고 옵션인 실패 필터를 적용합니다.
[edit interfaces] user@B# set fe-1/2/0 unit 2 family inet rpf-check fail-filter rpf-special-case-dhcp user@B# set fe-1/1/1 unit 6 family inet rpf-check fail-filter rpf-special-case-dhcp user@B# set fe-0/1/1 unit 9 family inet rpf-check fail-filter rpf-special-case-dhcp user@B# set fe-0/1/0 unit 13 family inet rpf-check fail-filter rpf-special-case-dhcp
(선택 사항) 패킷이 RPF 검사에 실패할 경우 평가되는 실패 필터를 구성합니다.
[edit firewall filter rpf-special-case-dhcp] user@B# set term allow-dhcp from source-address 0.0.0.0/32 user@B# set term allow-dhcp from destination-address 255.255.255.255/32 user@B# set term allow-dhcp then count rpf-dhcp-traffic user@B# set term allow-dhcp then accept user@B# set term default then log user@B# set term default then reject
(선택 사항) RPF 검사에서 고려할 활성 경로만 구성합니다.
이것이 기본 동작입니다.
[edit routing-options forwarding-table] user@B# set unicast-reverse-path active-paths
디바이스 B 구성을 완료하면 해당 구성을 커밋합니다.
[edit] user@B# commit
결과
, show interfaces
, show protocols
, show routing-options
, 및 show policy-options
명령을 show firewall
실행하여 구성을 확인합니다. 출력에 의도한 구성이 표시되지 않으면 이 예의 지침을 반복하여 구성을 수정하십시오.
디바이스 A
user@A# show interfaces fe-1/2/0 { unit 1 { family inet { address 10.0.0.1/30; } } } fe-0/0/2 { unit 5 { family inet { address 10.0.0.5/30; } } } fe-0/0/1 { unit 17 { family inet { address 10.0.0.17/30; } } } fe-0/1/1 { unit 25 { family inet { address 10.0.0.25/30; } } } fe-1/1/1 { unit 29 { family inet { address 10.0.0.29/30; } } }
user@A# show protocols ospf { export send-direct; area 0.0.0.0 { interface fe-0/1/1.25; interface fe-1/1/1.29; } }
user@A# show policy-options policy-statement send-direct { from { protocol direct; route-filter 10.0.0.16/30 exact; } then accept; }
디바이스 B
user@B# show firewall filter rpf-special-case-dhcp { term allow-dhcp { from { source-address { 0.0.0.0/32; } destination-address { 255.255.255.255/32; } } then { count rpf-dhcp-traffic; accept; } } term default { then { log; reject; } } } user@B# show interfaces fe-1/2/0 { unit 2 { family inet { rpf-check fail-filter rpf-special-case-dhcp; address 10.0.0.2/30; } } } fe-1/1/1 { unit 6 { family inet { rpf-check fail-filter rpf-special-case-dhcp; address 10.0.0.6/30; } } } fe-0/1/1 { unit 9 { family inet { rpf-check fail-filter rpf-special-case-dhcp; address 10.0.0.9/30; } } } fe-0/1/0 { unit 13 { family inet { rpf-check fail-filter rpf-special-case-dhcp; address 10.0.0.13/30; } } }
user@B# show protocols ospf { area 0.0.0.0 { interface fe-0/1/1.9; interface fe-0/1/0.13; } }
user@B# show routing-options forwarding-table { unicast-reverse-path active-paths; }
CLI 빠른 구성에 표시된 대로 디바이스 C, 디바이스 D 및 디바이스 E에 구성을 입력합니다.
확인
구성이 올바르게 작동하고 있는지 확인합니다.
유니캐스트 RPF가 활성화되었는지 확인
목적
디바이스 B의 인터페이스에 유니캐스트 RPF가 활성화되어 있는지 확인합니다.
행동
user@B> show interfaces fe-0/1/0.13 extensive Logical interface fe-0/1/0.13 (Index 73) (SNMP ifIndex 553) (Generation 208) Flags: SNMP-Traps 0x4000 Encapsulation: ENET2 Traffic statistics: Input bytes : 999390 Output bytes : 1230122 Input packets: 12563 Output packets: 12613 Local statistics: Input bytes : 998994 Output bytes : 1230122 Input packets: 12563 Output packets: 12613 Transit statistics: Input bytes : 396 0 bps Output bytes : 0 0 bps Input packets: 0 0 pps Output packets: 0 0 pps Protocol inet, MTU: 1500, Generation: 289, Route table: 22 Flags: Sendbcast-pkt-to-re, uRPF RPF Failures: Packets: 0, Bytes: 0 Addresses, Flags: Is-Preferred Is-Primary Destination: 10.0.0.12/30, Local: 10.0.0.13, Broadcast: 10.0.0.15, Generation: 241
의미
uRPF 플래그는 이 인터페이스에서 유니캐스트 RPF가 활성화되었음을 확인합니다.
소스 주소가 차단되었는지 확인
목적
ping
명령을 사용하여 디바이스 B가 예기치 않은 소스 주소의 트래픽을 차단하도록 합니다.
행동
디바이스 A에서 10.0.0.17을 소스 주소로 사용하여 디바이스 B의 인터페이스를 ping합니다.
user@A> ping 10.0.0.6 source 10.0.0.17 PING 10.0.0.6 (10.0.0.6): 56 data bytes ^C --- 10.0.0.6 ping statistics --- 3 packets transmitted, 0 packets received, 100% packet loss
의미
예상대로 ping 작업이 실패합니다.
소스 주소가 차단 해제되었는지 확인
목적
ping
명령을 사용하여 RPF 검사가 비활성화될 때 디바이스 B가 트래픽을 차단하지 않도록 합니다.
행동
인터페이스 중 하나에서 RPF 검사를 비활성화합니다.
ping 작업을 다시 실행합니다.
user@B> deactivate interfaces fe-1/1/1.6 family inet rpf-check user@A> ping 10.0.0.6 source 10.0.0.17 PING 10.0.0.2 (10.0.0.2): 56 data bytes 64 bytes from 10.0.0.2: icmp_seq=0 ttl=63 time=1.316 ms 64 bytes from 10.0.0.2: icmp_seq=1 ttl=63 time=1.263 ms ^C --- 10.0.0.2 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 1.263/1.289/1.316/0.027 ms
의미
예상대로 ping 작업이 성공합니다.