持久化端口路由从80到8080
我使用通过ubuntu工作的amazon EC2实例。 默认情况下,根据安全限制,我无法将我的应用程序绑定到端口80,因此我只需将其绑定到端口8080,然后通过以下命令将路由重定向从端口80设置为8080:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080
但我发现当我重新启动服务器时,此设置不再有效,直到我再次调用此命令。
所以我的问题是即使重新启动系统,如何启用端口的重定向工作?
您可以在/etc/rc.local
添加此命令,以便在重新启动后自动执行。
请改用iptables-save命令。 防火墙规则永远不应该进入rc.local脚本。 rc.local是最后要执行的东西。 如果已将块规则放入rc.local,则攻击者可以利用规则不到位的小时间段。 虽然这种情况可能无关紧要,但最好不要陷入可能会在以后咬你的坏习惯。
以下是官方ipttable的文档如何教我们。 看这里
在/ etc / network / interfaces中添加以下两行:
pre-up iptables-restore < /etc/iptables.rules post-down iptables-save > /etc/iptables.rules
“post-down iptables-save> /etc/iptables.rules”这一行将保存下次启动时使用的规则。
我在/etc/network
中的Ubuntu 16.04上发现了一组目录,它们将在网络初始化和关闭期间的不同时间运行脚本:
if-down.d if-post-down.d if-pre-up.d if-up.d interfaces.d
所以我发现我可以像往常一样转储配置:
$ sudo sh -c "iptables-save > /etc/iptables.rules"
然后我创建了一个文件`/etc/network/if-pre-up.d/restore:
#!/bin/sh iptables-restore < /etc/iptables.rules
...并将其标记为可执行文件
$ sudo chmod 755 /etc/network/if-pre-up.d/restore