Назад | Перейти на главную страницу

Приложение TCP доступно удаленно, но не локально

Я пытаюсь помочь другу разобраться в этом, поэтому я не знаю всех деталей, но решил, что опубликую здесь, чтобы увидеть любые возможности.

У нас есть специальное приложение, которое обменивается данными между клиентом и сервером, используя один порт TCP, и хочет, чтобы оно было доступно как локально, так и удаленно. Странно то, что он работает, когда клиент удален (Интернет), но НЕ локально. Переадресация портов настроена в маршрутизаторе, которым является Cisco E800, и запуск сканирования портов показывает, что соответствующий TCP-порт открыт как для внутренней сети, так и для Интернета, однако приложение не будет подключаться локально. Он ДЕЙСТВИТЕЛЬНО подключается удаленно, поэтому мы знаем, что серверное программное обеспечение настроено правильно, и т. Д. ОС на обоих концах подключения - это Windows 7 с отключенным брандмауэром Windows.

Есть ли что-нибудь еще, что мы можем попробовать, или тесты, которые мы можем провести, чтобы определить проблему? Я выполнил сканирование на обнаружение портов и запустил netstat на сервере. Он показал удаленные подключения как «установленные», а еще одно с именем машины как «прослушивание» соответствующего порта.

Извините, я не могу быть более подробным, ничего в этой проблеме не имеет смысла.

РЕДАКТИРОВАТЬ: Поскольку кажется, что все настроено правильно, правильные порты открыты и т. Д., И мы также знаем, что сервер работает правильно, потому что он работает из удаленного места, возможно, пришло время попробовать какой-то анализ / мониторинг пакетов, поэтому мы можно увидеть, что происходит в этом порту ... Есть простой способ сделать это? Таким образом, мы могли видеть, предпринимается ли попытка, есть ли какие-либо различия между локальным и удаленным запросами и т. Д.

Приложение должно прослушивать 0.0.0.0 или на IP-адресе Ethernet и IP-адресе обратной связи (127.0.0.1).

Тот факт, что отображается только один порт прослушивания, и это имя хоста, означает, что приложение прослушивает только IP-адрес Ethernet.

Проверьте конфигурацию вашего приложения и измените IP-адрес прослушивания на 0.0.0.0, затем перезапустите приложение. Запустите netstat -an и убедитесь, что изменение было применено.

Если вы хотите изменить конфигурацию приложения, вы должны использовать только IP-адрес Ethernet и никогда не пытаться подключиться с помощью localhost или 127.0.0.1

На этом маршрутизаторе настройка, которую вы ищете,

Фильтрация перенаправления NAT в Интернете

Выключи это. Эта опция не позволяет вам использовать внешний адрес для подключения изнутри.

Выключение этого параметра позволяет закрепить NAT, поэтому он будет подключаться с использованием публичного адреса как снаружи, так и внутри локальной сети.

Некоторое обсуждение этого на форуме Linksys здесь

Если вы находитесь в том же компьютере, что и сервер, возможно, вы не сможете подключиться, если попытаетесь подключиться к localhost. Использовать netstat чтобы определить, какой адрес (а) сервер слушает. Предполагая, что сервер находится на порту 12345, эта команда должна работать:

netstat -an | grep 12345 | grep LISTEN 

Если он не прослушивает 127.0.0.0, 0.0.0.0 или *, вам нужно будет подключиться к адресу, который он прослушивает. В вашей записи хостов может быть указано имя сервера с адресом 127.0.0.1, поэтому его можно использовать, если вы попытаетесь подключиться по имени.