我正在尝试在 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。