В OSX, если я наберу netstat, я могу видеть определенные вещи, которые имеют установленное соединение. Я не хочу изменять какие-либо настройки, чтобы закрыть их, я просто хочу иметь возможность закрыть все порты, которые я выберу в терминале. Как ты это делаешь?
2 ответа
Вы не можете закрыть открытый сокет, как это. В идеале вы просто убили бы процесс, который установил соединение.
Проверьте ваши соединения с помощью lsof (netstat не будет показывать процесс), отфильтровывая вывод с любым желаемым состоянием соединения:
lsof -i
lsof -i | grep LISTEN
lsof -i | grep ESTABLISHED
Или, чтобы получить порт, например, 17500:
lsof -i:17500
Тогда просто убей процесс. Например:
$ lsof -i | grep "Skype"
Skype     438 werner    9u  IPv4 0xffffff801dd0c640      0t0  UDP localhost:52218
Skype     438 werner   42u  IPv4 0xffffff80231a7a08      0t0  TCP *:29429 (LISTEN)
Skype     438 werner   43u  IPv4 0xffffff8022e18a40      0t0  UDP *:29429
Убить скайп:
killall Skype
Обратите внимание, что это не помешает установлению соединений - то, что вы должны указать в настройках брандмауэра.
Можно также использовать команды fuser или netstat .
Синтаксис fuser
fuser -k -n protocol portno
Пример:
$ fuser -k -n udp 7777
7777/udp:            11774
Номер 11774 - это пид.
пример netstat :
$ sudo netstat -ap | grep :9050
tcp        0      0 localhost:9050          *:*       LISTEN      1613/tor
Число 1613 - это pid, а "tor" - это имя процесса.
Как только у вас есть pid, просто завершите его, используя команду kill или killall
убить пид
или же
killall -9 имя_команды
