개발 중인 애플리케이션에 대해 몇 가지 테스트를 수행하고 있는데 다음을 수행할 수 있어야 합니다.아무 말 않고가능한 오류 모드를 복제하기 위해 짧은 시간 동안 나가는 UDP 패킷을 삭제합니다.
이를 수행할 수 있는 방법이 있습니까?
노트:iptables
DROP
보낸 메시지에 대해 침묵하지 않습니다!send()
통화가 끊기거나 이와 유사한 경우 이상한 이유로 인해 iptables
전화가 반환됩니다(참조EPERM
여기. 안타깝게도 목적지가 한 홉 거리에 있기 때문에 이 답변을 사용할 수 없습니다.
xtables-addons
사용된STEAL
동사 가 있어요, 그러나 몇 년 전에 제거되었으며 이유를 찾을 수 없습니다.
이제 경로 테이블에서 가짜 경로를 사용해 보았지만 불행히도 이 방법은 작동하지 않는 것 같습니다.둘 다통신 트래픽의 방향.
내가 해야 할 테스트를 위해, 나는가지다허용하다기입UDP 트래픽은 가짜 경로를 설치한 후 소스에서 여전히 패킷을 보내고 있음에도 불구하고 들어오는 패킷 스트리밍이 즉시 중지되었습니다.
답변1
가상 인터페이스를 추가하고 해당 인터페이스에 대한 경로를 설정하는 것은 어떻습니까?
# ip link add dummy0 type dummy
# ip link set dev dummy0 up
# ip route add 8.8.8.8/32 dev dummy0
# ping -c3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2015ms
항상 패킷을 모든 (이웃 또는 원격) 주소 업스트림으로 보냅니다 dummy0
.
# tshark -i dummy0
Running as user "root" and group "root". This could be dangerous.
Capturing on 'dummy0'
1 0.000000 10.10.0.59 -> 8.8.8.8 ICMP 98 Echo (ping) request id=0x1ce0, seq=1/256, ttl=64
2 1.007348 10.10.0.59 -> 8.8.8.8 ICMP 98 Echo (ping) request id=0x1ce0, seq=2/512, ttl=64
3 2.015394 10.10.0.59 -> 8.8.8.8 ICMP 98 Echo (ping) request id=0x1ce0, seq=3/768, ttl=64
답변2
경로를 추가하면 역방향 경로 필터링으로 인해 들어오는 트래픽이 중단됩니다. 간단한 해결책: 인터페이스에서 역방향 경로 필터링을 비활성화합니다.
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
(대신 수신 인터페이스를 사용하십시오.eth0
이상).
또한 대상을 사용할 수도 있습니다 REDIRECT
(그것을 수신하는 netcat에 패킷 보내기 nc -l -u -p 1234 > /dev/null
). 더 복잡한 버전은 NFQUEUE입니다.