无法在正在侦听的端口上远程登录 Web 服务器
Posted
技术标签:
【中文标题】无法在正在侦听的端口上远程登录 Web 服务器【英文标题】:Unable to telnet web server on a port that's listening 【发布时间】:2014-11-18 23:19:05 【问题描述】:我正在我的网站上实现套接字并将套接字绑定到网站的 IP 地址,但是当我在该端口上远程登录网站时,它无法连接。正在创建套接字并且网站正在侦听传入连接,没有错误,但在尝试 telnet 网站时显示错误。如果我将代码更改为在 127.0.0.1
上收听,它可以正常工作。
该网站正在侦听端口6662
,这是一个非官方的 IRC 端口。什么没有发生?
我执行以下操作来远程登录网站。
telnet www.nameofwebsite.com 6662
telnet ipofwebsite 6662
它尝试连接然后失败并显示错误消息:无法在端口 6662 上打开与主机的连接:连接失败
结尾脚本小而简单。
<?php
set_time_limit(0);
error_reporting(E_NOTICE);
$address = "ipofwebsite"; // if i change this to 127.0.0.1 and telnet localhost 6662, it works.
$port = 6662;
# root socket
$root = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
# reuse socket
if( socket_set_option($root, SOL_SOCKET, SO_REUSEADDR, 1) == false )
echo socket_strerror(socket_last_error());
# bind socket
if( socket_bind($root, $address, $port) === false )
echo socket_strerror(socket_last_error());
# listen on the socket
if( socket_listen($root) === false )
echo socket_strerror(socket_last_error());
# accept a connection
if( ( $client = socket_accept($root) ) === false )
echo socket_strerror(socket_last_error());
echo "Connection accepted<br />";
socket_close($root);
?>
它一直在监听,但不接受任何 telnet 连接。
【问题讨论】:
卡巴斯基安装和更新..可以吗?但它允许连接到本地主机 可能是你的服务器阻塞了 6662 端口 你在哪里运行这个脚本?浏览器还是cli?我认为套接字仅在第一次超时之前打开,然后脚本将结束并关闭套接字。你可能需要一个while(true)
循环来保持它的打开,这里有一个很好的php监听服务器示例php.net/manual/en/function.stream-socket-server.php#Hcom44501
@andrew,我想在浏览器上运行它。
@RoelVeldhuizen,我尝试了几个不同的端口
【参考方案1】:
如果你的服务器是 Windows 服务器,请试试这个:https://www.tomshardware.com/news/how-to-open-firewall-ports-in-windows-10,36451.html.
如果您的系统是 Linux,请尝试运行如下命令:
iptables -I INPUT -p tcp -m tcp --dport your_port_number -j ACCEPT
service iptables save
如果是CentOS 7,也可以运行如下命令
firewall-cmd --zone=public --add-port=your_port_number /tcp --permanent
firewall-cmd --reload
【讨论】:
以上是关于无法在正在侦听的端口上远程登录 Web 服务器的主要内容,如果未能解决你的问题,请参考以下文章