持久化端口路由从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