Debian 8 - 启动时更新 Iptables

Debian 8 - 启动时更新 Iptables

我正在将“配置 openvpn 服务器”从 ubuntu 14 移植到 debian 8。到目前为止,除了本节之外,它运行良好:

# Set up iptables to forward packets for vpn and do this upon startup.
echo 'iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
exit 0' > /etc/rc.local

看来 debian 8 不使用此/etc/rc.local文件,因此我的 VPN 服务器在重新启动后将无法正确转发流量。我必须手动调用该脚本,或执行命令。

在启动时更新 iptables 的“debian 8 way”是什么?


更新

阅读完该/etc/rc.local内容后,我确保将权限设置为 755 并将脚本更新为如下:

/bin/echo "starting..." > /root/rc.local.log
/sbin/iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
/sbin/iptables -A FORWARD -j REJECT
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
/bin/echo "completed successfully" >> /root/rc.local.log

exit 0

然后我创建了一个空的/root/rc.local.log并在重新启动之前授予它777权限。该文件仍然是空的,让我认为 /etc/rc.local 脚本根本没有被执行。

答案1

Debian 在启动时设置 iptables 的方法是使用iptables-持久性包裹。

只需安装该iptables-persistent软件包,按照您的需要设置 iptables 规则,然后运行netfilter-persistent save​​. (请注意,该命令以netfilter并不是iptables.)

请参阅netfilter-persistent 的手册页更多细节。

自 Debian 7 (Wheezy) 以来,保存表的方法发生了变化。在 Wheezy 中,人们会做类似的事情invoke-rc.d iptables-persistent save

答案2

iptables对于 Debian 8启动时的设置方式,我没有明确的答案,但rc.local应该可行。

对于systemd,rc.local由 处理/lib/systemd/system/rc-local.service,它在网络后自动启动并运行/etc/rc.local start。唯一的要求是/etc/rc.local可执行:

chmod 755 /etc/rc.local

您还需要#!/bin/sh在 rc.local 文件的顶部添加它才能使用 systemd 执行,否则Failed at step EXEC spawning /etc/rc.local: Exec format error运行时会出现红色错误sudo journalctl

相关内容