我正在将“配置 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