如何访问 Amazon Web Services 上的端口 10000?我已将端口 10,000 添加到安全组,但仍然无法访问它。
我只能在本地访问该服务。
[root@ip-172-31-15-65 ~]# curl -I http://localhost:10000
HTTP/1.0 200 Document follows
Date: Sat, 5 Apr 2014 03:03:40 GMT
Server: MiniServ/1.680
当我尝试从我的外部(到 AWS)IP 时,它不起作用。
$ curl -I http://54.186.222.91:10000
curl: (28) Connection timed out after 300138 milliseconds
这是 netstat
[root@ip-172-31-15-65 ~]# sudo netstat -tunlp |grep 10000
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 14258/perl
udp 0 0 0.0.0.0:10000 0.0.0.0:* 14258/perl
这是 iptables。这是一个全新的实例。
[root@ip-172-31-15-65 ~]# sudo iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
由于某种原因,此命令修复了这个问题。我不明白为什么,因为第 1 行和第 3 行已经全部接受了。
iptables --delete INPUT 5
以下是详细的 iptables
[root@ip-172-31-15-65 postfix]# iptables -L -nv
Chain INPUT (policy ACCEPT 3348 packets, 173K bytes)
pkts bytes target prot opt in out source destination
89357 80M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
102 5883 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
14 2248 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT 50224 packets, 17M bytes)
pkts bytes target prot opt in out source destination
答案1
危险!
请不要只是在这里关闭防火墙并认为这是一个解决方案。你的思路是对的,只是你把调试步骤变成了解决方案。我们应该怎么做呢?
我该如何真正解决这个问题?
嗯,你说得对,你只接受来自 lo 接口的所有内容。所以我们只需要在 REJECT 规则之前允许访问此端口。以下是示例规则,供您设置。我将在下面分解它们?
iptables -I INPUT 1 -p tcp --dport 10000 -j ACCEPT
iptables -A INPUT -j REJECT
/etc/init.d/iptables save
这些命令起什么作用?
第一行告诉 iptables 在第 1 行插入规则-I 1
,并允许接受所有前往端口 10000 TCP 的流量。我在此示例中使用规则一,以确保将其置于 REJECT 规则之前。(它还告诉 iptables 跳转-j
到 ACCEPT 以允许流量)
第二行告诉 iptables 附加(插入到底部)-A
以拒绝所有未在其之前的规则中明确允许的流量。这就是默认拒绝的设置方式,因为如果没有此规则,您可能就不会运行防火墙,如注释中所述。
第三行也是最后一行让 iptables 保存规则,以便它们在重启时能够持久。
我想要启用的其他服务怎么样?
使用上面的第一个示例规则来允许这些。您还应该阅读 iptables 的灵活性,因为它在规则方面功能更强大。
答案2
系统防火墙仅打开了端口 22。
运行system-config-firewall-tui
以禁用防火墙,或者开放端口 10000。
答案3
由于某种原因,此命令修复了这个问题。
iptables --delete INPUT 5
我想我明白了为什么现在即使第 1 行和第 3 行已经接受所有。-v
我看到lo
了in
列,并且lo
是接口的名称,ifconfig
其中仅用于本地连接。因此除了 22 SSH 之外没有开放任何端口。