サーバー間でテスト等を行うときに目的のサーバーにリクエストを送っても応答が無かったりして、テストが進まない時に通信が出来ていないケースがあった。
「繋がらない」と伝えるだけではなくパケットを確認するようにということですので、やり方を備忘録として残す。
使用しているインターフェースの確認
[root@xxx-xxx]route -vn
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
x.x.x.x x.x.x.x x.x.x.x xx x x x ethxx
tcpdumpコマンドで条件を絞りたいため、通信を確認したいホストのIPとインターフェースを確認しておく。
tcpdumpコマンドをホストと出力ファイル名とインターフェースを指定して実行
上記手順で確認したインターフェースとホスト名を元にtcpdumpコマンドを実行する。
tcpdumpの構文は下記の通り。
tcpdump [ オプション ] [ EXPRESSION ]
tcpdumpを実行する。
■コマンド例
tcpdump -i ethX host XXX.XXX.XXX.XXX -w /tmp/XXX.pcap
tcpdump -nn -i any port 80 and not host XXX.XXX.XXX.XXX and not host XXX.XXX.XXX.XXX
80portで2つのipを除いてパケットを確認
tcpdump -i ethX host 127.0.0.1 -w /tmp/XXX.pcap
tcpdump -i ethX host 127.0.0.1 -w /tmp/XXX.pcap
host ○○で指定したホストにかかわるパケットをすべて表示
※この例のようにXXX.pcapと出力することでWireSharkツールで確認できる。
tcpdump -i any -n port 1813
1813ポートの全てのインターフェースをキャプチャする。IPアドレスの名前解決をしない。
1.rオプション
tcpdumpで指定したキャプチャを結果を読み込む
2.Aオプション
キャプチャデータをASCII表示
3.pオプション
自ホスト宛以外のデータをキャプチャしない
4.nnオプション
ホストアドレスに加えてポート番号等も名前に変換しない(sshと表示されるところが22と表示される)
5.nオプション
IPアドレスの名前解決をしない
6.not host XXX.XXX.XXX.XXX
※XXXのhostを含まずパケットを取る
・送信元ipアドレスを指定
tcpdump src host[src_ip]
・送信先ipアドレスを指定
tcpdump dst host[dst_ip]
・送信先ipアドレスを指定
tcpdump dst host[dst_ip]
・送信元のポート番号を指定
tcpdump src port [port_num]
anyで複数指定
tcpdump -i any -nn port 1812
- i any 複数インターフェースでキャプチャを指定したい場合のオプション
tcpdumpで取得したパケットの読み取り方
tcpdumpコマンドを実行するとコンソールに沢山情報が出るが読み取り方を知っておく必要がある。
18.40.17.200000 IP 127.0.0.1.9999 > 127.0.0.1.xxxx-acct: RADIUS, XXXXXXXX-Request (X), id: 0x11 length: 55
18.40.17.211111 IP 127.0.0.1.xxxx-acct > 127.0.0.1.9999: RADIUS, XXXXXXXX-Response (X), id: 0x11 length: 20
1. まず時間が表示される。
箇所:18.40.17.200000
2. IPヘッダが表示される
箇所:18.40.17.200000
3. 送信元IP,送信元TCPポート,宛先IP、宛先TCPポートが表示される。[ipアドレス.ポート]
箇所:IP 127.0.0.1.9999 > 127.0.0.1.xxxx-acct:
※127.0.0.1の9999ポートから127.0.0.1.xxx-acct:にリクエストが来ているということ
※その下の"127.0.0.1.xxxx-acct > 127.0.0.1.9999:"は127.0.0.1.xxx-acctから返答しているということ
4. TCPヘッダ情報が表示される。
箇所:XXXXXXXX-Request, id: 0x11 length: 55
さいご
最後まで読んでいただき、ありがとうございました。
もし、記載している内容が間違えていれば遠慮なくコメントしてください!
私自身の勉強になりますし、他の人がこの記事を見た時に間違えた情報を見ることになってしまうので💦