Я делал это в мире Windows с помощью инструмента TCPView: просто выбирайте установленное соединение (ESTABLISHED), затем выберите «Закрыть соединение». Я не могу найти способ сделать это в Mac OSX или Linux (мне нужны оба). Единственный известный мне способ — завершить процесс, который держит порт открытым.
Мой основной вариант использования — имитация перебоев в подключении для тестирования отказоустойчивости, например, при отключении кабеля или потере маршрутизатора или промежуточного программного обеспечения.
решение1
Вы можете подключиться к вашему процессу с помощью gdb и close()
дескриптора файла, соответствующего соединению. Вы можете узнать номер дескриптора файла с помощью lsof -a -i4 -p $PID
.
решение2
tcpkill -i eth0 { expression }
(основная команда/опции)tcpkill -i eth0 port 21
(Завершить все исходящие ftp-соединения (порт 21))tcpkill host 192.168.1.2
или
tcpkill host hostname.domainname.com
(Уничтожить все пакеты, приходящие на хост 192.168.1.2 или отправляемые с него)tcpkill ip host 192.168.1.2 and not 192.168.1.111
(Чтобы уничтожить все IP-пакеты между 192.168.1.2 и любым хостом, кроме 192.168.1.111)