转发端口从 80 到 9000 不起作用

转发端口从 80 到 9000 不起作用

我正在尝试在 Ubuntu 14.04 上托管一个应用程序,并想将流量从 80 重定向到 9000。

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 9000

已经运行了这些命令但没有任何效果...

lala:/etc/init.d$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:9000

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

有什么建议吗?我已经这样做了一段时间,但重启了服务器后它就不再工作了,嗯

如果我访问 www.domain:9000 它就可以工作

答案1

sudo iptables -L -vt nat

向我展示了我在 iptables 中应用了多少条 PREROUTING 规则,以及

iptables -t nat -D PREROUTING 1 

我删除了意外复制的路由规则 80->8080。

答案2

考虑使用简单防火墙,而不是尝试直接制定链式规则。在此处查看 ufw 的用法:

https://help.ubuntu.com/lts/serverguide/firewall.html

在 /etc/ufw/before.rules(文件顶部)中添加过滤器部分:

*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9000
COMMIT

另外,检查你的 sysctl 设置:

sudo vim /ufw/sysctl.conf 

确保端口转发已启用。

net.ipv4.ip_forward=1

保存文件,然后重新启动 ufw。

相关内容