永久 iptables 端口转发?

永久 iptables 端口转发?

我必须设置一条规则,使我的 Web 服务器(在端口 7000 上运行)可通过端口 80 访问:

ptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000

到目前为止,一切运行良好。

但如果我重启服务器,规则就消失了。要怎么做才能使该规则永久生效?

埃利亚斯

答案1

您使用哪个 GNU/Linux 发行版?

对于 Debian/Ubuntu,简单的解决方案是将 iptables 调用添加到 post-up 挂钩中,/etc/network/interfaces如下所示:

# The primary network interface
auto eth0
iface eth0 inet dhcp
post-up iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 7000

答案2

在基于 Red Hat/Fedora 的系统上:

service iptables save

并确保该iptables服务设置为在启动时启动:chkconfig iptables on

答案3

基本上,您将 iptables 命令添加到网络启动脚本中,以便它在启动网络连接时运行。

不同发行版所需的更改文件有所不同。

如果您使用的是 Ubuntu(也许对于 Debian 和其他系统也是如此),您可以使用命令iptables-saveiptables-restore在重启时保存配置。

答案4

我建议不要反复调用 iptables,而是执行以下步骤:

[1]根据您的喜好配置 iptables(阻止、反欺骗、重定向等)

[2]保存 iptables 配置:

    iptables-save > /etc/my-iptables.conf

(或使用您喜欢的名称)

[3]创建包含以下行的脚本(例如/etc/my-iptables-init.sh):

    #!/bin/bash
    iptrest="<location_of_iptables-restore>"
    cat="/bin/cat"
    conf="/etc/my-iptables.conf"
    #
    $cat $conf | $iptrest

(有人说iptables-restore < /etc/my-iptables.con有时候不管用)

[4]可以从任意位置调用该脚本。可能是 /etc/network/interfaces 或(我偏爱的)/etc/rc.local

相关内容