ctmarkのようにnfmarkを見る方法はありますか?

ctmarkのようにnfmarkを見る方法はありますか?

私はこれがiptables --set-markパケットにタグを追加しないことを理解しています。MARK目標は、タグをカーネルデータ構造のパケットに関連付けることです。パケット自体は変更されません。しかし、関連タグ付きパケットを見る方法はありますか?

ctmark(targetで設定された接続タグを使用してCONNMARK)これを確認できます/proc/net/nf_conntracknfmark(パケット表示)を見るのと似たようなものを探しています。

私たちはそれを見ることができますctmark

iptables -I OUTPUT 1 -t mangle -j CONNMARK --restore-mark
iptables -I OUTPUT 2 -t mangle -m conntrack --ctorigdst 172.30.138.151 -m mark --mark 0 -j MARK --set-mark 2
iptables -A POSTROUTING -t mangle -j CONNMARK --save-mark

これにより、ファイルに接続マークが表示されます/proc/net/nf_conntrackマーク=2

ipv4     2 icmp     1 18 src=157.43.150.253 dst=172.30.138.151 type=8 code=0 id=54809 packets=4 bytes=336 src=172.30.138.151 dst=157.43.150.253 type=0 code=0 id=54809 packets=4 bytes=336 mark=2 zone=0 use=2

出力に関する質問もあります/proc/net/nf_conntrack。フィールドとはどういう意味ですかuse?見ましたuse=1use=2このウェブサイト「この接続構造の使用回数」としましょう。

答え1

質問はFwamarkそうでなければ表示(歴史的には次のように知られています。ノブマークしかし、ただ名前が変わりました。表示同時に、もはやnetfilterに依存しません。この言葉ノブマーク今は少し誤解を招くかもしれませんが、まだ更新されていないか更新できない場所がまだあります。)このタグはデータパケットにあります。ディスクバッファ、そして連続追跡マーカー(別名CTマークなど)がありますアイテムを追跡

パケットマーカーを取得する最も簡単な方法は、iptablesを介して記録することです。LOGターゲット。次のもの(洪水防止のための制限事項あり):

iptables -A INPUT -m mark ! --mark 0 -m limit --limit 8/min --limit-burst 12 -j LOG --log-prefix "IPTables-Marks: "

パケットはタグを使用して記録する必要があります。このフラグ(上記で選択した一致など、ゼロ以外の場合)はログ行の末尾に表示されます。 (OPのコメントから)例:

kern.debug kernel: [11007.886926] IPTables-Marks: IN=wlan0 OUT= MAC=e4:xx:xx:xx:97:32:28:xx:xx:xx:fb:60:08:00 SRC=192.168.8.10 DST=192.168.8.1 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=23698 DF PROTO=TCP SPT=36764 DPT=22 WINDOW=254 RES=0x00 ACK URGP=0 MARK=0x2

iptablesのように、自動化には適していますが、実装するのが難しい他の方法があります。NFLOG目的は、ネットリンクソケットでリッスンするロギングプログラムでパケット全体を「転送」することです。このプログラムは以下を使用してトークンを取得できます。nflog_get_nfmark()(以前の名前...)。tcpdumpnflog機能(試行)を聞いて選択したパケットを表示することができます。tcpdump --list-interfacesこれは時々ログデバッグよりも便利ですが、マーカーを表示させる方法がわかりません(わからないかnflog_get_nfmark()どうかはわかりません)。 libpcapに連絡してください)。

関連情報