Я знаю о tcpdrop
который находится в базовом распределении. Но для этого инструмента необходимо указать номера портов. Есть ли какой-нибудь инструмент для сброса соединений по IP?
Кстати, более новые версии tcpdrop(1)
иметь -a
и -l
flags, которые делают его легко "grepable":
[savetherbtz@host ~]$ tcpdrop -l -a | grep 127.0.0.1
tcpdrop 127.0.0.1 10006 127.0.0.1 14796
tcpdrop 127.0.0.1 10006 127.0.0.1 13794
tcpdrop 127.0.0.1 10006 127.0.0.1 12996
tcpdrop 127.0.0.1 10006 127.0.0.1 12208
tcpdrop 127.0.0.1 10018 127.0.0.1 27132
tcpdrop 127.0.0.1 27132 127.0.0.1 10018
tcpdrop 127.0.0.1 10018 127.0.0.1 24355
tcpdrop 127.0.0.1 24355 127.0.0.1 10018
Что ж, вы могли бы использовать некоторые инструменты unix, чтобы дать вам правильный синтаксис tcpdrop и просто запустить его через xargs в своем собственном скрипте, я думаю. Вот уродливый пример, наверное, есть способы получше:
netstat -an | grep $IPADDR | awk '{print $4"."$5}' | awk -F '\.' '{print $1"."$2"."$3"."$4" "$5" "$6"."$7"."$8"."$9" "$10}' | xargs tcpdrop
Это использует awk, чтобы отделить две пары IP / порт, а затем склеить их вместе точкой, чтобы вы могли использовать другой awk, чтобы просто выплюнуть желаемый синтаксис порта с четырьмя точками.
Вероятно, есть более простое универсальное регулярное выражение, более понятное. $ IPADDR - это IP-адрес, который вы хотите сбросить.