如何使用 iptables 将端口 80 和 443 重定向到 8080 和 8443?

cwd*_*cwd 5 linux iptables tomcat

我正在查看名为 DSpace 的 Tomcat 6 web 应用程序的文档,特别是关于在标准端口上运行运行 DSpace(http:// 为 80,https:// 为 443)

我正在尝试使用“方法 1”,它使用 iptables 将流量从端口 80 和 443 重定向到 8080 和 8443,以便摆脱:8080url 中的 。

这些是文档给出的命令:

/sbin/iptables -t nat -I PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 8080
/sbin/iptables -t nat -A OUTPUT -p tcp -d _[server_ip_address|server_ip_address]_ --dport 80 -j  REDIRECT --to-port 8080
/sbin/iptables -t nat -I PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-ports 8443
Run Code Online (Sandbox Code Playgroud)

我认为第二行需要更改一些内容,特别是该部分-d _[server_ip_address|server_ip_address]_- 但我不确定是什么。我已经阅读了该man页面,iptables但我没有任何运气。

我尝试更改-d _[server_ip_address|server_ip_address]_为:

-d _[127.0.0.1|127.0.0.1]_ 
Run Code Online (Sandbox Code Playgroud)

并且:

-d _[54.224.121.116|54.224.121.116]_
Run Code Online (Sandbox Code Playgroud)

并且:

-d _[ec2-54-224-112-116.compute-1.amazonaws.com|ec2-54-224-112-116.compute-1.amazonaws.com]_
Run Code Online (Sandbox Code Playgroud)

我得到的错误包括Bad argument 'REDIRECT'和也

host/network '_127.0.0.1' not found
Run Code Online (Sandbox Code Playgroud)

谁能帮我发现我做错了什么?

更新:我认为重定向可以在没有第二行的情况下工作,但我仍然不确定它的预期目的是什么......

Gil*_*il' 6

我认为您只是对该页面上的标点符号感到困惑。在_[一些标记的残留物,不是的一部分iptables语法。此外,该|字符不能用于分隔 IP,您需要使用,(逗号)。

/sbin/iptables -t nat -A OUTPUT -p tcp -d 54.224.121.116,54.224.121.116 --dport 80 -j  REDIRECT --to-port 8080
Run Code Online (Sandbox Code Playgroud)