web-dev-qa-db-ja.com

特定のconntrackエントリを削除しますか?

マルチISP構成では、特定のトラフィックをルーティングおよびNATします。 VoIP、特定のインターフェイスを介して-別のプロバイダーに。インターフェイス(またはルート)の1つが使用できなくなった場合、それを使用していたすべての接続をドロップし、後続のトラフィックを引き続き機能している接続を介してルーティングする必要があります。ステータスが変更されると、適切なiptablesとルーティングエントリをリセットしてロードしています(「shorewallrestart」です。shorewallを使用しています)。

問題は-まだ存在するconntrackエントリが原因で、古い(そして今は間違っている)外部アドレスがまだNATこれらの接続に使用されている! 'conntrack -D'の後、NAT再び期待どおりに機能します。

古い外部アドレスに属するconntrackエントリのみを削除するか、他のインターフェイスを介した接続に影響を与えない方法で問題を解決したいと思います。

例えば。 -逆接続先のすべてのconntrackエントリを削除したいdst=old.ext.ip.adr、 お気に入り

udp 17 164 src=192.168.158.3 dst=213.208.5.40 sport=5060 dport=5060 packets=178 bytes=104509 src=213.208.5.40 dst=old.ext.ip.adr sport=5060 dport=5060 packets=234 bytes=127268 [ASSURED] mark=256 secmark=0 use=2

私がすでに試したこと:

# conntrack -D -r 212.108.43.143
^C (nothing happens, it just hangs)
# conntrack -D -r 213.208.5.40 -d 212.108.43.143
Operation failed: such conntrack doesn't exist

前もって感謝します!よろしく、ズリン

3
Zrin

試してみてください

conntrack -D --src-nat --reply-dst old.ext.ip.adr
0
Igor Fuks

Clrcontrackというファイルを作成し、以下のコードを中に貼り付け、ユーザーに適切なアクセス権を与え、実行可能にし、「clrcontrack ipport」のように実行します(例:clrcontrack 192.168.56.123 80)。ポート80の確立されたすべての状態コントラックレコードをクリアする必要がありますIP。状態をターゲットにしたくない場合は、grep ESTABパーツを削除するか、それに応じて置き換えて、任意の状態をターゲットにします。

 /usr/sbin/conntrack -L |grep $1 | grep ESTAB |grep 'dport=$2' |
     awk '{ system("/usr/sbin/conntrack -D --orig-src '$1' --orig-dst " 
     substr($6,5) " -p tcp --orig-port-src " substr($7,7) " --orig-port-dst $2");}';
0
Dudus