保持从 80 到 8080 的端口路由

Ph0*_*n1x 26 iptables networking routing 12.04 13.10

我使用通过 ubuntu 工作的亚马逊 EC2 实例。默认情况下,根据安全限制,我无法将我的应用程序绑定到端口 80,所以我只是将其绑定到端口 8080,然后通过以下命令设置从端口 80 到 8080 的路由重定向:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080
Run Code Online (Sandbox Code Playgroud)

但是我发现当我重新启动服务器时,此设置不再有效,直到我再次调用此命令。

所以我的问题是即使系统重新启动,如何启用端口的重定向工作?

nux*_*nux 20

你可以把这个命令加进去/etc/rc.local,重启后会自动执行。

  • 这有效,但真正的答案是下面@MeOMy 的答案。 (2认同)

小智 16

请改用iptables-save命令。

防火墙规则永远不应该进入rc.local脚本。rc.local是最后要执行的事情。如果已将阻止规则放入rc.local,则攻击者可以在很短的时间范围内利用未到位的规则。

虽然这种情况可能无关紧要,但最好还是不要养成可能会在以后咬你的坏习惯。

  • 答案是不完整的。`iptables-save > some-file-path` 保存规则,然后你可以通过 `rc.local` 中的 `iptables-restore < some-file-path` 恢复它们。或者安装 `iptables-persistent`,它在作为服务启动期间执行此操作。 (3认同)
  • 运行“sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080”和“sudo iptables-save”。但是路由在重新启动时被重置。我是否误解了如何做到这一点? (2认同)

小智 6

以下是官方 iptables 文档教给我们的内容。看这里

将这两行添加到/etc/network/interfaces

pre-up iptables-restore < /etc/iptables.rules
post-down iptables-save > /etc/iptables.rules
Run Code Online (Sandbox Code Playgroud)

该行将post-down iptables-save > /etc/iptables.rules保存下次启动时要使用的规则。