나가는 패킷을 자동으로 삭제하는 방법은 무엇입니까?

나가는 패킷을 자동으로 삭제하는 방법은 무엇입니까?

개발 중인 애플리케이션에 대해 몇 가지 테스트를 수행하고 있는데 다음을 수행할 수 있어야 합니다.아무 말 않고가능한 오류 모드를 복제하기 위해 짧은 시간 동안 나가는 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입니다.

관련 정보