我如何将端口 80 内部转发到端口 8080?
我的目标是让 Web 应用服务器 (Glassfish) 在端口 8080 上运行,但外界可以通过端口 80 正常访问它。这样做是为了让我不必以 root 身份运行 Glassfish。
我尝试将以下规则添加到我的 /etc/sysconfig/iptables 中:
-A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
但这会导致以下错误:
Applying iptables firewall rules: iptables-restore v1.3.5: Line 21 seems to have a -t table option.
答案1
您无法像在 中那样指定表/etc/sysconfig/iptables
。每个表都用星号和表名设置。以下是您要执行的操作的框架:
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination :8080
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
您也可以使用命令手动设置您喜欢的规则iptables
,然后执行iptables-save > /etc/sysconfig/iptables
或,而不必编辑文件service iptables save
。
答案2
你很接近了
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination :8080
它必须执行 NAT,以便当答复发送回客户端时,它似乎来自端口 80,而不是 8080。