Iptables 端口重定向--为什么需要打开两个端口?

Iptables 端口重定向--为什么需要打开两个端口?

我正在使用 iptables 重定向使 RHEL7 上的 Tomcat 可在端口 443 上访问(用于 https 流量),如所述这里。重要的规则应该是那三条:

 iptables -A INPUT -p tcp --dport 443 -i eth3 -j ACCEPT
 iptables -A INPUT -p tcp --dport 8443 -i eth3 -j ACCEPT
 iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-port 8443
 iptables -A INPUT -m state --state ESTABLISHED,RELATED -i eth3 -j ACCEPT
 # Drop all other incoming packets on the interface eth3
 iptables -A INPUT -i eth3 -j DROP

所以我不明白的是为什么我需要规则来向外部开放端口 8443?当我关闭它并仅打开 443 时,它不起作用。据我所知,重定向应该在内部发生,不是吗?或者可以以某种方式进行不同的配置?

备注:eth3 是我确实需要保护的一个接口。还有其他接口,但那些只是内部接口。

答案1

我想我自己已经搞明白了:预路由显然发生在实际接受/丢弃规则被触发之前。因此,请求从 443 重定向到 8443,并且规则仅适用于重定向的流量。因此,我不必使用接受规则打开端口 443。重定向似乎无论如何都会“打开”它。因此可以省略第一条规则(接受 443)。

答案2

我不使用 Tomcat,但你在 server.xml 文件中检查过 Tomcat 的端口吗?当我读到http://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html#Edit_the_Tomcat_Configuration_File看起来可能使用端口 8443 作为标准。编辑它是一个连接器端口,而不是内部重定向。

相关内容