web-dev-qa-db-ja.com

NAT nftablesとの接続を表示する

Nftablesでnat発信接続を追跡する方法。多かれ少なかれ使用された出力アドレスであるnat statsを調べる必要があるだけです。

root@nat-1:~# nft list table nat
table ip nat {
    chain post {
            type nat hook postrouting priority 100; policy accept;
            ip saddr 10.0.0.0/8 oif "bond0.926" snat to 19.246.159.1-19.246.159.7
    }

    chain pre {
            type nat hook prerouting priority -100; policy accept;
    }
}

netstat-natはiptablesで機能しますが、nftablesでは機能しなくなりました。

netstat-nat -S
Could not read info about connections from the kernel, make sure netfilter is enabled in kernel or by modules.

もちろんtcpdumpを使用することもできますが、もっと便利なユーティリティがあるはずです;-)

1
Tomato

iptablesまたはnftablesはNATを実行していません:netfilterが実行しています。 iptablesおよびnftablesは、netfilterへのフックを使用して、いくつかの「順序」を指定しています新しいNAT状態を作成します。完了したら、すべてがnetfilterによって直接処理されます(これが、両方のiptablesの理由です) およびnftables、natテーブル/タイプの最初のパケットのみが表示されます。したがって、最後にNAT state keeperはnetfilterとそのconntrackサブシステムです。

現在、netstat-natはカーネルが提供するファイル/proc/net/nf_conntrackを使用してconntrack情報を表示します。このファイルが利用できない場合(例:完全なroot特権がない、/procのこの部分をマッピングしていないコンテナで実行されているなど)エラーが発生する可能性があります。なぜそうでないのかはわかりませんが、とにかく、ここに特定のconntrackバックエンドツールがあります: conntrack (from conntrack-tools )これは、 /procではなく、新しいAPI( netlink )。そのマンページから、同等のコマンド(もちろん、完全に異なる出力)は次のようになります。

conntrack -L -n

[〜#〜]コマンド[〜#〜]
[...]
-L --dump
コネクション追跡または期待値の一覧
[...]
-E、-event
リアルタイムのイベントログを表示します。
[...]

FILTER PARAMETERS
[...]
-n、-src-nat
フィルターソースNAT接続。

イベントモードを使用して、ソースNAT=状態をリアルタイムで追跡することもできます。

conntrack -E -n 
2
A.B