私の「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スクリプトがまったく実行されていないと思いました。
起動時に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
のようになります。
ブート時に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
のようなエラーが赤で表示されます。