1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

tcpdump で tos(DSCP) が入っているパケットだけをキャプチャする

Last updated at Posted at 2020-10-21

tcpdumpでdscpを見たい

L3DSRを使ってる会社にいるもので。 L2DSR → L3DSR の変更作業をしたときに使った。L3DSR パケットがLBから来てるか動作確認に便利。

 tcpdump -v -i eth0 "tcp[tcpflags] & (tcp-syn) != 0" and ip[1]!=0

解説

-v # これつけないとtosが見えない

-i eth0 # LBからはprivate IP宛に来るので、そのinterfaceを指定

"tcp[tcpflags] & (tcp-syn) != 0" # いったんSYNパケットだけに絞り込んでいる

ip[1]!=0  # これがtosがあるもの限定にしているところ。下の画像を参照

ip[1] の意味

image.png

http://darenmatthews.com/blog/?p=1199

特定のDSCP(TOS)だけにフィルタする

tcpdump -v -i eth0 and "(ip and (ip[1] & 0xfc) >> 2 == 0x05)"

こんな感じで 0x05 の DSCPがあるものだけ見たかったんだけど、これでひっかかるパケットは全部 tos 0x14 になってて、ふむぅとなった。でも0x05のところを違うのにすると引っかからないので取れてると思うんだけど。bit計算苦手すぎて何もわからない

→ 小林というスーパーエンジニアに教えてもらいました! quitaにしてよかった!

ToS field 8bitのうち先頭6bitを使うのがDSCPなので、

DSCP: 00101 = Decimal 5 = Hex 0x05
ToS: 0010100 = Decimal 20 = Hex 0x14

それだ!!!! DSCPとToSは違うんだった! だからビットシフト >> してるtcpdumpが出てくるのか。
ありがとうございました!!!

以下はメモ

NIC > tcpdump > iptables なので、L3DSRで使う DSCP は tcpdumpで見れる。LBからくるパケットにDSCPが立っている。

image.png

https://hirose31.hatenablog.jp/entry/20090401/1238585753

packet flow

  1. client が LB に SYN を投げる
  2. LB が DSCP=0xN にして server private IP へ。この時点でsrcがclientになっている
  3. serverの中
    4. NIC:eth0 が受け取る
    5. tcpdump にわたす
    6. iptables にわたす
    7. DSCPを見て、DADDRを書き換え
    8. このときDSCPは書き換えてないみたい、たぶん
    9. DADDRが eth1 宛なので、違う NIC にforwardする(ここの動きがよくわかってない) *1
    10. iptablesを出る
    11. NIC:eth1(これがDADDRのVIPを持ってる) が受け取る
    12. iptablesに入る
    13. 特に設定ないのでスルー
    14. iptableを出る
    15. processにわたす

*1 このNIC間転送の動きはよくわかってないけどたぶんこういうことなんじゃないだろうか。想像。
image.png

http://xkr47.outerspace.dyndns.org/netfilter/packet_flow/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?