Не совсем понятно, о чем ты спрашиваешь. Что вы подразумеваете под «открытым»? Вы имеете в виду, что какой-то сервер прослушивает этот порт? Или вы имеете в виду, что это разрешено системным брандмауэром? Или что?
Дэвид Шварц
Я думаю, что порт заблокирован на моем сервере и хочу разблокировать / открыть его снова.
Джеймс Андерсон
14
netstat -an | grep PORTNUMBER | grep -i listenЕсли вывод пуст, порт не используется.
automatix
Ответы:
187
Вы можете проверить, прослушивает ли процесс порт TCP или UDP с помощью netstat -tuplen.
Чтобы проверить, доступны ли некоторые порты извне (это, вероятно, то, что вам нужно), вы можете использовать сканер портов, такой как Nmap, из другой системы. Запуск Nmap на том же хосте, который вы хотите проверить, совершенно бесполезен для вашей цели.
GNU NetStat знает параметры -t, -u, -p, -l, -e, и -n. Благодаря парсеру параметров это можно выразить как -tuplen. linux.die.net/man/8/netstat
Йоси
3
Кроме того, telnetкоманда обычно поддерживает только TCP, так что вам не повезло, если служба, которую вы хотите проверить, работает по другому протоколу.
Йоси
1
да, я использовал Windows, поэтому путаница.
Декстер
2
nc является (лучшей) альтернативой telnet. Он также поддерживает UDP.
Цветомир Димитров
1
Используйте его с Судом: sudo netstat -tuplen. Это даст вам процессы, принадлежащие не только вам, но и другим, и распечатает дополнительную информацию (например, PID / Имя программы), если они еще не отображаются как пользователь без полномочий root.
Джон Ред
102
Самый быстрый способ проверить, открыт ли порт TCP (включая любые имеющиеся у вас аппаратные брандмауэры), - набрать с удаленного компьютера (например, с вашего рабочего стола):
telnet myserver.com 80
Который будет пытаться открыть соединение с портом 80 на этом сервере. Если вы получаете тайм-аут или отрицаете, порт не открыт :)
говорит, что он не распознает "телнет" как команду ...
Джеймс Андерсон
6
«yum install telnet» для установки клиентского пакета telnet.
CJC
8
Написано выше:if you get a time out or deny, the port is not open
Индастриал
2
Что делать, если у вас нет разрешения на установку telnet? Есть еще один стандартный инструмент?
KC Baltz
3
Я попробовал «telnet myhost 22» и получил тайм-аут. Но я могу ssh в эту машину. ?!
Торстен Бронджер
30
Итак, в общем, у вас есть сервер, на который вы можете войти. Вы хотите увидеть, если что-то прослушивает какой-то порт. От имени пользователя root запустите:
netstat -nlp
это покажет список процессов, прослушивающих порты TCP и UDP. Вы можете отсканировать (или grep) его для интересующего вас процесса и / или номеров портов, которые вы ожидаете увидеть.
Если ожидаемого вами процесса нет, вам следует запустить этот процесс и снова проверить netstat. Если процесс существует, но он прослушивает интерфейс и порт, который вы не ожидали, то есть проблема конфигурации (например, это может быть прослушивание, но только на интерфейсе обратной связи, поэтому вы увидите 127.0.0.1:3306 и нет других строк для порта 3306, в случае конфигурации по умолчанию для MySQL).
Если процесс запущен и он прослушивает ожидаемый вами порт, вы можете попробовать запустить «telnet» к этому порту с вашего Macbook в вашем офисе / доме, например,
telnet xxxxxxxxxxxx.co.uk 443
Это проверит, если (при условии стандартных портов), что есть веб-сервер, настроенный для SSL. Обратите внимание, что этот тест с использованием telnet будет работать, только если процесс прослушивает порт TCP. Если это порт UDP, вы можете также попробовать использовать любой клиент, который вы собираетесь использовать для подключения к нему. (Я вижу, что вы использовали порт 224. Это masqdialer, и я понятия не имею, что это такое).
Если служба есть, но вы не можете получить к ней доступ извне, то есть брандмауэр, блокирующий вас. В этом случае запустите:
iptables -L -n
Это покажет все правила брандмауэра, определенные в вашей системе. Вы можете опубликовать это, но, как правило, если вы не разрешаете все в цепочке INPUT, вам, вероятно, потребуется явно разрешить трафик на рассматриваемом порту:
iptables -I INPUT -p tcp --dport 224 -j ACCEPT
Или что-то вдоль этих линий. Не запускайте команды брандмауэра вслепую, основываясь на том, что незнакомец сказал вам в Интернете. Подумай, что ты делаешь.
Если ваш брандмауэр на коробке разрешает трафик, который вы хотите, то ваша хостинговая компания может использовать брандмауэр (например, они разрешают только SSH (22 / tcp), HTTP (80 / tcp) и HTTPS (443 / tcp) и отрицание всего другого входящего трафика). В этом случае вам необходимо открыть билет службы поддержки, чтобы решить эту проблему, хотя я полагаю, что в вашей cPanel может быть что-то, что может это позволить.
netstat -an | grep PORTNUMBER | grep -i listen
Если вывод пуст, порт не используется.Ответы:
Вы можете проверить, прослушивает ли процесс порт TCP или UDP с помощью
netstat -tuplen
.Чтобы проверить, доступны ли некоторые порты извне (это, вероятно, то, что вам нужно), вы можете использовать сканер портов, такой как Nmap, из другой системы. Запуск Nmap на том же хосте, который вы хотите проверить, совершенно бесполезен для вашей цели.
источник
-t
,-u
,-p
,-l
,-e
, и-n
. Благодаря парсеру параметров это можно выразить как-tuplen
. linux.die.net/man/8/netstattelnet
команда обычно поддерживает только TCP, так что вам не повезло, если служба, которую вы хотите проверить, работает по другому протоколу.sudo netstat -tuplen
. Это даст вам процессы, принадлежащие не только вам, но и другим, и распечатает дополнительную информацию (например, PID / Имя программы), если они еще не отображаются как пользователь без полномочий root.Самый быстрый способ проверить, открыт ли порт TCP (включая любые имеющиеся у вас аппаратные брандмауэры), - набрать с удаленного компьютера (например, с вашего рабочего стола):
Который будет пытаться открыть соединение с портом 80 на этом сервере. Если вы получаете тайм-аут или отрицаете, порт не открыт :)
источник
if you get a time out or deny, the port is not open
Итак, в общем, у вас есть сервер, на который вы можете войти. Вы хотите увидеть, если что-то прослушивает какой-то порт. От имени пользователя root запустите:
это покажет список процессов, прослушивающих порты TCP и UDP. Вы можете отсканировать (или grep) его для интересующего вас процесса и / или номеров портов, которые вы ожидаете увидеть.
Если ожидаемого вами процесса нет, вам следует запустить этот процесс и снова проверить netstat. Если процесс существует, но он прослушивает интерфейс и порт, который вы не ожидали, то есть проблема конфигурации (например, это может быть прослушивание, но только на интерфейсе обратной связи, поэтому вы увидите 127.0.0.1:3306 и нет других строк для порта 3306, в случае конфигурации по умолчанию для MySQL).
Если процесс запущен и он прослушивает ожидаемый вами порт, вы можете попробовать запустить «telnet» к этому порту с вашего Macbook в вашем офисе / доме, например,
Это проверит, если (при условии стандартных портов), что есть веб-сервер, настроенный для SSL. Обратите внимание, что этот тест с использованием telnet будет работать, только если процесс прослушивает порт TCP. Если это порт UDP, вы можете также попробовать использовать любой клиент, который вы собираетесь использовать для подключения к нему. (Я вижу, что вы использовали порт 224. Это masqdialer, и я понятия не имею, что это такое).
Если служба есть, но вы не можете получить к ней доступ извне, то есть брандмауэр, блокирующий вас. В этом случае запустите:
Это покажет все правила брандмауэра, определенные в вашей системе. Вы можете опубликовать это, но, как правило, если вы не разрешаете все в цепочке INPUT, вам, вероятно, потребуется явно разрешить трафик на рассматриваемом порту:
Или что-то вдоль этих линий. Не запускайте команды брандмауэра вслепую, основываясь на том, что незнакомец сказал вам в Интернете. Подумай, что ты делаешь.
Если ваш брандмауэр на коробке разрешает трафик, который вы хотите, то ваша хостинговая компания может использовать брандмауэр (например, они разрешают только SSH (22 / tcp), HTTP (80 / tcp) и HTTPS (443 / tcp) и отрицание всего другого входящего трафика). В этом случае вам необходимо открыть билет службы поддержки, чтобы решить эту проблему, хотя я полагаю, что в вашей cPanel может быть что-то, что может это позволить.
источник
Я использую комбо из
netstat
иlsof
:Чтобы увидеть, используется ли порт, и что его использует.
источник
Если вы подключены к системе и можете запустить команду от имени пользователя root, вы можете проверить вывод iptables.
в этом списке будут перечислены правила брандмауэра, а также какие порты являются целевыми открытыми
ACCEPT
и любые явно закрытые целевые портыREJECT
.источник
firewall-cmd --query-port=port/protocol
, напримерfirewall-cmd --query-port=80/tcp
.lsof -i :ssh
выведет список всех процессов с открытым портом ssh, как прослушивающих, так и активных соединений.источник
sudo
если он не возвращает никакого вывода.