iptables-restore回復ルールを使用してエラーを無視する

iptables-restore回復ルールを使用してエラーを無視する

回復中にエラーを無視できるかどうかを知りたいです。

私のルールには、次のような多くの行があります。

-A mychain -s somehost.com -j DROP

私のルールはダイナミックリストから来ており、somehost.comが一時的にオフラインであるか、ルーティングできないか、それと似ている場合、iptables-restoreはルールの復元を拒否し、次のエラーを引き起こす可能性があります。

iptables-restore v1.6.0: host/network 'somehost.com' not found
Error occurred at line: 342
Try 'iptables-restore -h' or 'iptables-restore --help' for more information.

さて、ホストにアクセスできない場合は、その行をiptables無視できることを願っていました。somehost.com

これを行うためにいくつかのフラグを追加できますかiptables-restore

ベストアンサー1

DNS名はiptablesルールに使用できますが、これはベストプラクティスではありません。さらに理由があります。主な理由は、iptablesがルールのロード中に解析を実行するためです。 DNS名は後で変更される可能性があり、ホストはそれを認識しません。

ご存知のように、iptablesには次のものだけが必要です。DNS名解決成功。したがって、DNS名が存在しない場合、ルールのロードはエラーで終了します。

スクリプトを生成し、その中で名前解決を確認できます。

#!/bin/bash

host_check=$( dig -t A somehost.com +short 2>/dev/null | wc -l )

if (( $host_check > 0 ))
        then sed -i '/.*somehost\.com/s/^#//' file
        else sed -i 's/.*somehost\.com/#&/' file
fi

このスクリプトは名前解決を確認します。名前が解決されると(出力は1つ以上の行になります)、スクリプトは各行から特定のDNS名を含むコメントを削除します。それ以外の場合、sciptはDNS名を含む各行にコメントを追加します。

file- これはiptables-save > fileコマンドのiptablesスクリプトです。

確認したら、次のようにルールをロードできます。iptables-restore < file


この方法を使用しないことをお勧めします。iptablesルールでDNS名を拒否する方法を見つける必要があります。

おすすめ記事