Ubuntu 16サーバーでは、NATルール(-t nat)に関連するいくつかのIptablesルールの変更をスクリプトとして作成する必要があります。 -D [ここではルール]を使用してルールを削除する一般的な方法は、-t識別子では機能しないようです。見つけて持って来なさい。関連する行番号...どのようなアイデアがありますか?
役に立つ場合は、次の規則の目的は、(デフォルトでは)ローカルMySQLデータベースの競合または再起動中にローカルホストと外部トラフィックを1つのサーバーからバックアップにリダイレクトすることです。
私のルール:
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination RMT_IP:3306
iptables -t nat -I OUTPUT -p tcp -o lo --dport 3306 -j DNAT --to-destination RMT_IP:3306
私はあきらめようとしました(効果がありました):
iptables -t nat -D POSTROUTING -j MASQUERADE
iptables -t nat -D PREROUTING -p tcp --dport 3306 -j DNAT --to-destination RMT_IP:3306
--line-numberを使用せずにこのルールを削除する方法はわかりません。
iptables -t nat -I OUTPUT -p tcp -o lo --dport 3306 -j DNAT --to-destination RMT_IP:3306
答え1
-I
(挿入)または(追加)を含むルールがある場合は、-A
ルール定義を繰り返し-D
削除できます。
特定の例では、テーブルチェーンから最初の一致OUTPUT
ルールnat
が削除されます。
iptables -t nat -D OUTPUT -p tcp -o lo --dport 3306 -j DNAT --to-destination RMT_IP:3306
答え2
ルールを簡単にオン/オフしたい場合は、別のチェーンを作成してみてはいかがでしょうか?
iptables -t nat -N MySQLnat
iptables -t nat -A MySQLnat -j DNAT --to-destination RMT_IP:3306
次に、わずかに変更された方法でルールを作成します。
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 3306 -j MySQLnat
iptables -t nat -I OUTPUT -p tcp -o lo --dport 3306 -j MySQLnat
これで、カスタムチェーンを削除してMySQL関連DNATルールを簡単に削除できます。
iptables -t nat -F MySQLnat
空のチェーンはちょうど空のチェーンに入ったチェーンと同じな-j RETURN
ので、何もせずに空のチェーンに飛び込んだチェーンを処理し続けます。
(あなたの立場では、-j MASQUERADE
POSTROUTINGチェーンに他の何も依存しないという確信がない限り、POSTROUTINGチェーンから無条件のルールを削除することに注意してください。)
MySQL DNATが再び必要な場合は、チェーンの内容を再度入れてください。
iptables -t nat -A MySQLnat -j DNAT --to-destination RMT_IP:3306