telnet отказывается от трафика на произвольном порту через сеть в 11.10

Я написал скрипт python для прослушивания на порту 2626 и выполнил скрипт.

доказательство того, что localhost прослушивается

tcp        0      0 127.0.0.1:2626          0.0.0.0:*               LISTEN

Я могу подключитесь через telnet к этому порту через localhost с помощью следующей команды:

:~$ telnet localhost 2626
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

Однако, когда я пытаюсь подключиться с удаленной машины, соединение получает отказ.

 :~$ telnet 128.251.xxx.xxx 2626
 Trying 128.251.xxx.xxx...
 telnet: Unable to connect to remote host: Connection refused

Я даже выпустила следующую команду для приема трафика на порт 2626:

 sudo iptables -A INPUT -p tcp -i eth0 --dport 2626 -j ACCEPT

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

3
задан 11 January 2012 в 19:33

2 ответа

127.0.0.1:2626 из вывода netstat указывает, что ваш скрипт python принимает только соединения на 127.0.0.1. Если вы хотите иметь возможность принимать соединения с любого адреса, разрешите ли вы принимать соединения на 0.0.0.0

6
ответ дан 25 May 2018 в 15:16
  • 1
    Спасибо! у вас обоих был правильный ответ! награда будет первым ответом. – sadmicrowave 11 January 2012 в 20:07

Этот вывод показывает, что ваша программа прослушивает только 127.0.0.1. Слушающие сокеты (открытые порты) привязаны к определенному интерфейсу, как в этом случае, или ко всем интерфейсам (в этом случае вы увидите 0.0.0.0 как обозначение для «любого адреса»). Последствия привязки к 127.0.0.1 заключаются только в том, что только соединения через этот интерфейс будут поступать в прослушивающий сокет и, следовательно, в вашу программу. Если вы используете библиотеку socket python, либо привязываетесь к вашему внешнему IP-адресу в вызове bind(), либо привязываетесь ко всем IP-адресам, например:

>>> import socket
>>> s = socket.socket()
>>> s.bind(('', 6666))
>>> s.listen(1)

, который дает результат, который вы хотите из netstat

tcp        0      0 0.0.0.0:6666            0.0.0.0:*               LISTEN

и действительно может быть подключен к другой машине

ial@roach> telnet polihale 6666
Trying 128.243.20.139...
Connected to polihale.
Escape character is '^]'.
7
ответ дан 25 May 2018 в 15:16

Другие вопросы по тегам:

Похожие вопросы: