как закрыть установленное сетевое соединение в linux и osx

как закрыть установленное сетевое соединение в linux и osx

Я делал это в мире 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)

Связанный контент