我已经打开了路由器上的端口25565
(又名“我的世界”服务器端口)。我已经在此服务器上托管了一个网站:
togtja@togtja_server:/$ sudo iptables -nL | grep 80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 /* 'dapp_Apache%20Full' */
当运行服务器时,我仔细检查端口是否正在监听:
/**Some other ports as well such as 22 from ssh**/
apache2 1926 root 4u IPv6 29136 0t0 TCP *:80 (LISTEN)
apache2 1926 root 6u IPv6 29140 0t0 TCP *:443 (LISTEN)
apache2 1927 www-data 4u IPv6 29136 0t0 TCP *:80 (LISTEN)
apache2 1927 www-data 6u IPv6 29140 0t0 TCP *:443 (LISTEN)
apache2 1928 www-data 4u IPv6 29136 0t0 TCP *:80 (LISTEN)
apache2 1928 www-data 6u IPv6 29140 0t0 TCP *:443 (LISTEN)
java 3159 togtja 52u IPv6 41266 0t0 TCP *:25565 (LISTEN)
但是,当我运行telnet
或nc
在端口上时:
togtja@togtja_server:/$ nc -z -v -w5 my_ip 25565
nc: connect to my_ip port 25565 (tcp) timed out: Operation now in progress
如果我尝试其他应该关闭的端口,我会直接被拒绝
togtja@togtja_server:/$ nc -z -v -w5 my_ip 1337
nc: connect to my_ip port 1337 (tcp) failed: Connection refused
但是,如果我尝试 localhost,我就可以通过
togtja@togtja_server:/$ nc -z -v -w5 localhost 25565
Connection to localhost 25565 port [tcp/*] succeeded!
正如预期的那样,它拒绝本地未开放的端口:
togtja@togtja_server:/$ nc -z -v -w5 localhost 1337
nc: connect to localhost port 1337 (tcp) failed: Connection refused
我相信我可能当我设置网络服务器时,已锁定所有端口,除了那些明确接受的端口,但不知道这些设置在哪里,或者这是否是问题所在。注意:我正在运行 ubuntu 18.04 服务器(没有 GUI)。
编辑:
为了澄清这一点,我还在nc my_ip
不同网络上的电脑上运行命令,以验证它不仅可以在本地服务器上运行
答案1
问题是我设法将 IP 表的默认策略设置为DROP
.所以当打电话时sudo iptables -L
,我得到:
Chain INPUT (policy DROP)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
所以我为我的端口运行添加了一个例外:
sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT
INPUT
,可能是FORWARD
或OUTPUT
取决于您想要为其制定规则期望。
要将整个表链更改为一个策略,您可以执行以下操作:
sudo iptables -P INPUT ACCEPT
,这将使 INPUT 的默认策略被接受