web-dev-qa-db-ja.com

Debian 8-ブート時にIptableを更新

私の「configure openvpn server」を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スクリプトがまったく実行されていないと思いました。

4
Programster

起動時にiptablesを設定するDebianの方法は、 iptables-persistent パッケージを使用することです。

iptables-persistentパッケージをインストールし、必要なiptablesルールを設定して、netfilter-persistent saveを実行するだけです。 (コマンドはnetfilterではなくiptablesで始まることに注意してください。)

詳細は netfilter-persistentのmanページ を参照してください。

テーブルの保存方法は、Debian 7(Wheezy)以降変更されています。 Wheezyでは、invoke-rc.d iptables-persistent saveのようになります。

13
olav

ブート時に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

また、systemdで実行するには、rc.localファイルの先頭に#!/bin/shが必要です。そうしないと、Failed at step EXEC spawning /etc/rc.local: Exec format errorを実行するとSudo journalctlのようなエラーが赤で表示されます。

2
Stephen Kitt