Я пытаюсь отбросить входящие пакеты интерфейса с определенной вероятностью, используя iptables.
Я использовал:
sudo iptables -A INPUT -m statistic --mode random --probability 0.1 -j DROP
И все работает как положено. Однако, поскольку я также хочу указать интерфейс, я попробовал:
sudo iptables -A INPUT -m statistic --mode random --probability 0.1 -i eth1 -j DROP
, но когда я это сделал, правило просто игнорируется.
Каким будет правильный способ отбрасывать входящие пакеты интерфейса с помощью iptables или другого инструмента?
Похоже на ошибку.
Интересно то, что он работает для IPv6: alice
ping bob
, в котором действует правило отбрасывания:
Во-первых, без правило (отредактировано для удаления реальных адресов!)
alice# ping6 -f bob
PING XXXX 56 data bytes
.^C
--- XXXX ping statistics ---
4798 packets transmitted, 4797 received, 0% packet loss, time 4274ms
rtt min/avg/max/mdev = 0.435/1.143/203.132/6.988 ms, pipe 17, ipg/ewma 0.890/0.679 ms
Установить правило на bob
:
bob# ip6tables -i eth1 -A INPUT -m statistic --mode random --probability 0.1 -j DROP
Запустить тест еще раз на alice
:
alice# $ sudo ping6 -f bob
PING XXXX 56 data bytes
.......................................................^C
--- XXXX ping statistics ---
1003 packets transmitted, 906 received, 9% packet loss, time 2324ms
rtt min/avg/max/mdev = 0.461/0.907/21.699/0.993 ms, pipe 2, ipg/ewma 2.319/0.811 ms
Я постараюсь не забыть проверьте источник позже. Между тем, мы должны сообщить об ошибке.