У меня есть виртуализированная машина CentOS с программным обеспечением, которое прослушивает порт 8080. Я отключил SELinux и сбросил все iptables (так что теперь нет никаких правил). Я проверил с netstat -nap | grep 8080
что порт действительно открыт и он есть. IP-адрес 192.168.1.3.
С другой моей машины я хотел бы подключиться к этому порту с помощью программы, но это не удается. При беге nmap -p 8080 192.168.1.3
там написано, что порт закрыт!
Когда я проверяю с помощью Wireshark, я вижу, что подключающийся компьютер отправляет пакет SYN, но отвечающий компьютер (с IP 192.168.1.3) отвечает SYN / RESET и прерывает соединение и не отвечает SYN / ACK и, таким образом, продолжает передающий. Порядковый номер правильный, отправляющий компьютер отправляет 0, а принимающий получает 1.
Странно то, что другие порты могут быть обнаружены Nmap как открытые с клиентской машины, но не 8080.
Что может быть не так?
РЕДАКТИРОВАТЬ:
Хорошо, я не знаю, во что верить сейчас. Вот что я обнаружил:
Программа, которая прослушивает 8080 на «серверной машине» (назовем ее так), представляет собой настраиваемый веб-сервис, встроенный в Java (с использованием сторонних библиотек, таких как EclipseLink и т. Д.). При выполнении nmap localhost
на "серверной машине" порт может быть открыт. При выполнении nmap 192.168.1.3
с "клиентской машины" он находит порт закрытым (как описано выше).
И новое открытие: я только что сделал простое Java-приложение, которое просто использует класс ServerSocket для прослушивания на 8080, и ТОГДА порт доступен для обнаружения с «клиентской машины». Итак, это что-то с приложением веб-сервиса? Почему порт может быть обнаружен с «серверной машины» (при сканировании - с localhost), но не с «клиентской машины» при запуске веб-службы? И почему порт 8080 может быть обнаружен с ОБЕИХ машин при запуске простого java-приложения, которое прослушивает 8080?
netstat -ntpl
tcp 0 0 ::ffff:127.0.0.1:8080 :::* LISTEN 3481/java
РЕДАКТИРОВАТЬ 2:
Глупый я! Теперь я вижу, ::ffff:127.0.0.1:8080
означает, что программа доступна только с localhost! :-D
Где мне изменить, чтобы он слушал всех?
Если это старая версия centos, это может быть проблема с "/etc/hosts.{allow,deny}", но если у нее есть iptables, она, вероятно, их не использует. Проверьте, существуют ли эти файлы.
Может порт 8080 привязан где-то еще?
На хост-машине?
В любом случае, покажите конфигурацию сети, виртуальные машины в мосту?