Если вы хотите узнать, можете ли вы создать TCP-соединение с удаленной машины, установите OpenCSW на эту и целевую машины и установите netcat на обоих. Это синтаксис использования netcat для проверки TCP-соединений:
nc -vz targetServer portNum
Например, чтобы проверить SSH на «homeServer1»:
nc -vz homeserver1 22
Это позволяет вам тестировать подключение на уровне TCP из удаленной системы. Netcat также можно настроить для прослушивания порта, а не для работы в качестве клиента. Чтобы заставить его слушать по TCP / 8443:
На сервере, на котором будет размещено приложение: nc -l homeserver1 8443
На машине, которая находится вне брандмауэра: nc -vz homeserver.fqdn 8443
Это пример успешного выполнения:
[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
Connection to ditirlns01.ncat.edu 8443 port [tcp/pcsync-https] succeeded!
Неудачное выполнение:
[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
nc: connect to ditirlns01.ncat.edu port 8443 (tcp) failed: Connection refused
nc
отчеты «Отказано в соединении», когда порт доступен, но нет прослушивателя, и «Сеть недоступна», когда запрос был переброшен брандмауэром через icmp (это означает, что на порту может быть или не быть служба) ). Если брандмауэр отбросит пакет вместо того, чтобы фактически отклонить его,nc
просто на некоторое время зависнет.Брандмауэры должны отвечать сообщением ICMP, когда они блокируют запрос. Тем не менее, это не обязательно так (вам будет интересна эта хорошая статья ).
Вы можете проверить извне, чтобы узнать, доступен ли порт через брандмауэр и, если да, прослушивает ли что-нибудь его. Вот три различных сценария, включающие tcp-запрос, который вы можете наблюдать
wireshark
, или какой-то другой анализатор пакетов, и то, что вы увидите:1) Брандмауэр отклоняет запрос
Вы получаете сообщение ICMP, и инструмент, выполняющий запрос, должен немедленно сообщить вам что-то об этом («недоступно, администратор запрещен» и т. Д.). Под «инструментом» я подразумеваю клиента, которого вы используете для отправки запроса (я использовал
telnet
). Детали сообщения 1 зависят от того, как настроен брандмауэр, но «порт недоступен», вероятно, является наиболее распространенным.«Нет маршрута к хосту» может указывать на это, но это может также указывать на более тонкие проблемы маршрутизации.
2) Брандмауэр отбрасывает пакет
Ответа нет, поэтому инструмент ждет, пока не истечет время ожидания или вам не надоест.
3) Брандмауэр разрешает пакет (или нет брандмауэра), но ничего не прослушивает порт.
Вы получаете сообщение TCP RST / ACK обратно. Я предполагаю, что протокол TCP требует этого. Другими словами, если порт ничего не прослушивает, ОС сама отправляет этот ответ. Может быть трудно отличить это от # 1 только на основании того, что сообщает инструмент, потому что он может сказать то же самое в обоих случаях (однако, наиболее вероятно, действительно различают это как "соединение отказано" против # 1, "сеть недостижима") ). Наблюдаемые в анализаторе пакетов на клиентском компьютере, сценарии № 1 (сообщение об отказе ICMP) и № 3 (сообщение TCP RST / ACK) четко различаются.
Единственным другим вариантом здесь является то, что брандмауэр пропускает пакет и что-то прослушивает, поэтому вы получаете успешное соединение.
Другими словами: если предположить, что ваша сеть в целом работает правильно, если вы получаете # 1 или # 2, это означает, что брандмауэр активно препятствует доступу к порту. # 3 произойдет, если ваш сервер не работает, но порт доступен, и, конечно, (неявное) # 4 - успешное соединение.
источник
Вы можете использовать команду,
netstat
чтобы увидеть, открыт ли порт и прослушивается.пример
Выходные данные показывают процессы (самый дальний справа столбец) , которые прослушивают порты TCP. Номера портов - это числа, которые следуют за двоеточиями после IP-адресов (0.0.0.0:111 будет, например, портом 111).
IP-адреса показывают локальные и внешние адреса . Local будет вашей системой, в то время как Foreign будет любыми адресами, либо подключающимися к вашему TCP-порту, либо вы подключаетесь к одному из их TCP-портов.
Так что в случае с портом 22 это демон ssh, работающий в моей системе, который слушает соединения. Как только кто-то пытается подключиться к
ssh
демону, он разветвляет свою копию и отодвигает это подключение к другому порту, оставляя TCP-порт 22 открытым для дополнительных подключений, когда они входят.источник
netstat -a -P tcp -f inet | awk '/LISTEN$/ {print $0}'
Конфигурация и состояние конфигурации брандмауэра зависят от брандмауэра / ОС.
Что вы можете сделать, это попробовать это с server2:
источник
Недавно я получил тот же запрос и пришел к теме. Мне удалось сканировать открытые порты на FW с помощью команды nc, например, когда я запрашиваю вывод:
По сути, если я получаю «тайм-аут», это означает, что порт не открыт на FW.
источник
Вы можете использовать онлайн-инструмент, такой как www.firewallruletest.com, чтобы увидеть, могут ли внешние хосты устанавливать соединения tcp.
источник