11.10 中的 telnet 拒绝网络上任意端口的流量

11.10 中的 telnet 拒绝网络上任意端口的流量

我编写了一个python脚本来监听2626端口并执行了该脚本。

本地主机正在监听的证明

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

端口 2626 上的 telnet 拒绝远程机器的连接的原因可能是什么?我该如何修复它?

答案1

该输出显示您的程序正在监听127.0.0.1。监听套接字(开放端口)要么绑定到特定接口(如本例所示),要么绑定到所有接口(在这种情况下,您将看到0.0.0.0“任何地址”的符号)。绑定到127.0.0.1仅意味着只有通过该接口的连接才会进入监听套接字,从而进入您的程序。如果您使用的是 python 的socket库,请在调用中绑定到您的外部 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 '^]'.

答案2

127.0.0.1:2626netstat 输出的结果表明你的 python 脚本只接受 上的连接。127.0.0.1如果你希望能够接受来自任何地址的连接,请让它接受0.0.0.0

相关内容