我正在尝试在运行 Ubuntu 14.04 64 位的 AWS EC2 VPC 实例上为 Rust(一款游戏)设置专用服务器。按照说明,我启动了应用程序并监听其默认端口(UDP 28105,TCP 28106)。
netstat -tulpn
显示:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:28016 0.0.0.0:* LISTEN 7370/RustDedicated
udp 0 0 0.0.0.0:28015 0.0.0.0:* 7370/RustDedicated
udp 0 0 0.0.0.0:4209 0.0.0.0:* 7370/RustDedicated
这看起来似乎没问题,但尝试使用游戏客户端和远程控制台 (RCON) 连接它时,出现了连接被拒绝的情况。我怀疑这可能是典型的防火墙/安全组问题,因此出于测试目的,我将实例的安全组暴露给所有端口。仍然没有成功。
相反,我决定看看是否至少可以从应用程序正在运行的同一台机器上的 SSH 会话本地连接到它。
我运行后telnet 127.0.0.1 28106
得到了以下结果:
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
我的应用程序如何侦听此端口,但仍然拒绝来自其环回地址的连接?如您所见,它已绑定到0.0.0.0
。
如何配置它以使其不会抛出“连接被拒绝”?
编辑
sudo iptables -L
显示:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
然后我更新了它,使其允许通过以下方式进行连接:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:28016 flags:FIN,SYN,RST,ACK/SYN
ACCEPT udp -- anywhere anywhere udp dpt:28015
ACCEPT tcp -- anywhere anywhere tcp dpt:28015 flags:FIN,SYN,RST,ACK/SYN
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
答案1
在您的 netstat 中,您显示的端口是 28016 TCP 而不是 28106,UDP 是 28015 而不是 28105。
另外,在您的 telnet 中,您不是尝试连接到开放端口 (28016 TCP),而是尝试连接到您认为开放的端口 (28106 TCP)。