В 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 имя_команды