2011年12月23日

YAMAHAルーターの「tcpflag=0x0002/0x0017」の意味

以下の設定例があります。

・自社サーバーを公開する(1)
http://jp.yamaha.com/products/network/solution/server/

ここに
ip filter 1031 pass * 192.168.10.2 tcpflag=0x0002/0x0017 * www
という設定があります。

このtcpflag=0x0002/0x0017については補足で
「最初のパケット(SYN)だけを通すフィルタです。」
という説明があります。どういうことかなと思って、調べてみました。

コマンドリファレンス(PDF)の「9.1.8 IP パケットのフィルタの設定」の章によると
tcpflag=value/mask
TCPフラグの値とmaskの値の論理積 (AND) が、valueに一致
ということらしいです。

tcpflag=0x0002/0x0017を当てはめてみます。

 URG
ACK
PSH
RST
SYN
FIN
 value(0x0020) 0 0 0 0 1 0
 mask(0x0017) 0 1 0 1 1 1

で、例えば 000010(SYNのみ) というフラグのパケットが来た場合、
対象パケット000010 と mask 010111 の論理積は 000010 になって
value 000010 と一致するのでマッチする。

他、010000(ACKのみ) が来た場合、
対象パケット010000 と mask 010111 の論理積は 010000  になって
value 000010 と一致しないのでマッチしない。

まとめると、tcpflag=0x0002/0x0017 の場合、以下の4パターンがマッチするはずです。
  • 000010 : SYN
  • 001010 : PSH,SYN
  • 100010 : URG,SYN
  • 101010 : URG,PSH,SYN

当初「最初のパケット(SYN)だけを通すフィルタです。」という記述を見たとき
短絡的にSYNビットだけがセットされているパケット、と考えてしまいました。
それならmaskが0xffffとかなるはずなので、一人で混乱していたのでまとめてみました。

※フラグの意味はこちらのサイトが参考になります。
 http://atnetwork.info/tcpip/tcpip29.html
posted by webdev at 22:59| Comment(1) | TrackBack(0) | ネットワーク | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんばんは、ブログ拝見させていただきました。
とても解りやすい説明ありがとうございました、すごく為になり助かりました。

ただ、今さらですが、一瞬あれ?と思ったので一つ訂正です。
中あたりにあるテーブルですが

value(0x0020) → value(0x0002)

かと思います。
Posted by at 2014年07月25日 23:26
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。