我计划为我的 CentOS VM 启用 iptables。已配置以下规则。但对于 GCM(Google Cloud Messaging)命令,它无法从 GCM 服务器收到回复。如果我禁用 iptables,它就可以正常工作。
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5228 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5229 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 5230 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -j ACCEPT
有人能告诉我 GCM 工作的确切端口吗?我在很多地方都看到过 5228、5229 和 5230,但是它们不起作用。
答案1
如果你要连接正在监听端口 5228、5229 和 5230 的服务,则相关iptables
规则应该是--sport <port>
,而不是--dport <port>
,因为你要接受来自从服务到您的机器,并且这些端口将具有您所连接的源端口,以及为传出连接选择的随机高端口的目标端口。
执行此类操作的更常见方法是允许所有相关/已建立的连接流量返回,并让 conntrack 处理棘手的部分。鉴于您正在运行默认接受链OUTPUT
,我认为您并不太担心运行严格的策略,因此我想不出任何您不想通过 conntrack 运行返回流量的理由。