iptables - インターフェイスが表示される前にインターフェイスルールを追加します。

iptables - インターフェイスが表示される前にインターフェイスルールを追加します。

起動時にLinuxルーターにいくつかのiptablesルールを追加するために/ etc / rc.localを使用していますが、いくつかのルールは追加されません。まだインターフェイスがないからだそうです。

これが私がそこに持っているものです:

sudo /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
sudo /sbin/iptables -A FORWARD -i ppp0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo /sbin/iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT

起動時にppp0インターフェイスが表示されるまでに時間がかかるように見え、ppp0インターフェイスが存在しないため、iptablesはルールの追加を拒否する可能性があります。 iptablesにルールを追加するように強制する方法はありますか?ルールを追加する前にインターフェイスが存在するのを待つために、スクリプトにループを導入する前にこれを確認する必要があると思います。

また、インターフェイスが消えてルールを追加した後に戻っても、iptablesはルールを削除しないことを観察しました(私の場合は良い動作です)。

ベストアンサー1

すべてのDebianベースのディストリビューションでpost-up使用してください。/etc/network/interfacesこれにより、スクリプトが起動した直後にスクリプトを実行できますifup。詳しくはマニュアルページinterfaces

注:post-downもちろん、ルールを削除するためにも使用できます。

システムが一部のスクリプトを介してppp0を起動しても動作しない場合は、上記のタスクに対応するサブフォルダ*.dでフックスクリプトを使用できます。など/etc/networkのいくつかの変数がスクリプトに提供されます。マニュアルページは非常に詳細です。IFACEADDRFAM

一方、up==post-updown==内部では、正しいサブフォルダはそれぞれとpost-downです。if-down.dif-up.d

/etc/network/interfacessource宣言されたインターフェイスを起動するプロセスを「デバッグ」するには、ifup(8)詳細を参照してください。特にあなたは欲しいでしょうifup -nvl(そしてインターフェース名も同じでしょう)。プロセスを模倣するだけなので、許可なく実行することもできます。

可能な警告

これはDebianベースですが、Network Managerベースの設定には適用されません。ところで、ルーターに言及すれば、ネットワーク管理者が主導する可能性はほとんどないと思います。

おすすめ記事