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

Заставить процесс прослушивать 0.0.0.0 (или не 127.0.0.1)

Оба рассматриваемых блока относятся к RHEL5.

У меня есть RPC-сервер python, работающий на порту localhost 8000. Когда клиент, работающий на той же машине, пытается подключиться, все работает отлично. Когда удаленный клиент пытается подключиться, мы не получаем ответа.

netstat показывает, что процесс выполняется с адресом 127.0.0.1:8000, что кажется проблемой, если я хочу разрешить удаленные соединители.

Я перенаправил порты на маршрутизаторе и с помощью tcpdump могу наблюдать, как вызовы RPC поступают на порт 8000, но все они терпят неудачу, и сервер RPC никогда не получает сообщения.

Конфигурация сервера позволяет мне указать имя хоста: server = SimpleXMLRPCServer (("localhost", 8000))

Попытка нашего домена вместо localhost по-прежнему приводит к 127.0.0.1, поскольку наш файл / etc / hosts выглядит так:

127.0.0.1      localhost.localdomain localhost
127.0.0.1  staging.<ourdomain>.com

Затем я изменил / etc / hosts на:

127.0.0.1  localhost.localdomain localhost
192.168.1.140 staging.<ourdomain>.com testserver

Я изменил локальный IP-адрес на IP-адрес сервера, но все равно ничего. netstat покажет IP из файла hosts в строке staging..com.

Как мне заставить процесс работать на ::: 8000 или 0.0.0.0:8000, или любой перестановке, которая позволит удаленному клиенту подключиться?

По умолчанию прослушивать все порты (ipv6 + ipv4)

0.0.0.0 = bind all ipv4

Вы пробовали изменить его, чтобы слушать "0.0.0.0"?

server = SimpleXMLRPCServer(("0.0.0.0", 8000))

Краткий контрольный список: вывод команды netstat -ln отображает службу прослушивания на :: 8000? еще лучше lsof Если нет, измените код, чтобы прослушивать все интерфейсы или конкретный рассматриваемый интерфейс.

Iptables отключен?

Можете ли вы подключиться к этому порту и IP с другого хоста в той же подсети? Это исключит промежуточный брандмауэр или другие проблемы с вашим входящим подключением.

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

Брандмауэр?

остановка службы iptables

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

После этого просто откройте порт.