質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

2回答

2468閲覧

TCP の SYN ACK の再送が行われるか確認する方法

tarotanaka0510

総合スコア22

IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

0クリップ

投稿2021/12/06 14:24

前提・実現したいこと

TCP の 3 way handshake において、サーバーが SYN パケット受信し SYN + ACK を送付後、クライアントが ACK を返さなかった場合に SYN + ACK を再送しているか確認したい。
確認方法についてや、以下の "試したこと" に関してアドバイスいただけますと幸いです。

前提条件/制約

クライアントは自社環境のため、設定の確認や変更が可能。
サーバーは現時点ではアクセス許可が下りておらず、設定の確認などができない状況。(また、詳細も不明)
そのため、外部から観測した挙動のみで判断する必要がある。

試したこと1

hping3 をクライアント側で使用し、送信元 IP を別のマシンの IP に偽装。
別マシンにて、パケットをキャプチャし、SYN + ACK が送られてくるかを確認したところ、なぜか SYN + ACK のパケットが受信できず。
(正しく、送信元 IP の偽装ができてなかった?)

試したこと2

クライアント側のファイアウォール設定で、当該サーバーからの inbound 通信を DENY
その状況で hping3 で SYN パケットを送り、返された SYN + ACK パケットがファイアウォールで破棄され、複数回 SYN + ACK が送られてくることを期待。
(パケットキャプチャは NIC でパケットを取得しているため、ファイアウォールで破棄される前のパケットが取得できる認識)

結果としては、自分から張ろうとした接続のためか、ファイアウォールでパケットが破棄できず、普通に SYN + ACK → ACK を返してしまった。

補足情報(FW/ツールのバージョンなど)

サーバー: 詳細不明。
クライアント:

  • ubuntu 18.04
  • hping3 version 3.0.0-alpha-2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

iptables で「SYN なしの ACK」を送らないようにした状態で、wireshark などのパケットキャプチャで確認するといいと思います。

[root@ubuntu]# iptables -A OUTPUT -d (サーバーIPアドレス) -p tcp --tcp-flags SYN,ACK ACK -j DROP ※"--tcp-flags" 第1引数(mask): SYN,ACK に着目 第2引数(comp): SYN なし、ACK あり

投稿2021/12/07 05:50

TaichiYanagiya

総合スコア12148

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tarotanaka0510

2021/12/07 15:25

ご助言いただきありがとうございます。 Linux は素人のため、こういった機能があることを初めて知りました。 iptables を軽く調べてみただけでも、細かく通信を制御でき便利そうだったので、これから活用していきたいと思います。
guest

0

ベストアンサー

上手くいくかは分かりませんが、下記はどうでしょうか?

・PythonのScapyを使ってSYNパケットだけ送るプログラムを書いて実行してみる

・サーバー=クライアント間に物理ファイアウォールを挟んで、「試したこと2」と同じことをやってみる

試したこと1で実現できそうな気もしますが、スイッチ等を挟んで、パケットキャプチャして確認するのが無難かと思います。

投稿2021/12/06 14:46

takutakuya

総合スコア979

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tarotanaka0510

2021/12/06 14:53

ご助言いただきありがとうございます。大変助かります。 > ・PythonのScapyを使ってSYNパケットだけ送るプログラムを書いて実行してみる こちらは時間が取れ次第やってみたいと思います。 > ・サーバー=クライアント間に物理ファイアウォールを挟んで、「試したこと2」と同じことをやってみる こちらについては、ルーターやスイッチのログ機能次第 (クライアント側でパケットをとって観測することができなくなるので) だと思うので、ルーター/スイッチ周りの仕様について調べてみたいと思います。
takutakuya

2021/12/06 15:07

ミラーポートを作れるスイッチ等を置けると良いですね
tarotanaka0510

2021/12/07 15:24

ご提案頂いたファイアウォールなどを試してもうまくいかなかったのですが、hping3 の代わりに telnet を使ったところ、想定通りに機能しました。 多分、hping3 の引数の指定などを間違っていたのかなと思います。 ご支援いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問