ネットワークデバック方法
概要
ネットワーク関連でバックする時に使用する便利なコマンドについてメモする。
なお、ここに記載されているものは「Amazon Web Services 基礎からのネットワーク&サーバー」がベースになっている。
デバックの流れ
ネットワークにつながっていないときは、実際にネットワーク接続処理が走る順番で、上から順に確認すると良い。
- Wifi などの物理的な接続に問題がないか
-
nslookup
またはdig
を使用して DNS に問題ないか -
ping
を使用してネットワーク接続に問題ないか -
telnet
またはnetcat
を使用して アプリケーションが動作に問題ないか -
cpdump
やwiresharsk
を使用してパッケットのやりとりに問題ないか
TCP/IP で見るとこんな関係性。
層 | コマンド |
---|---|
ネットワークインターフェース層 | 物理接続確認 |
インターネット層 | ping |
トランスポート層 |
telnet , netcat
|
アプリケーション層 |
tcpdump , wireshark
|
また、プライベートネットワーク内で構築されたデータベースサーバーが意図してる IP アドレス経由でインターネット通信を行なっているかを確認するときは、traceroute
を使用する
各コマンドの説明
nslookup
$ nslookup google.com
出力
$ nslookup google.com
Server: x.x.x.x
Address: x.x.x.x#53 // 53はポート番号
Non-authoritative answer:
Name: google.com
Address: 142.250.207.14
DNS サーバーに問い合わせて、IP アドレスを確認するコマンド。
「Non-authoritative」記載されているのは、権威サーバーでなくキャッシュサーバーから取得してることを示す。
dig
$ dig google.com
出力
$ dig google.com
; <<>> DiG 9.10.6 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41942
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 230 IN A 142.250.207.14
;; Query time: 23 msec
;; SERVER: x.x.x.x#53(x.x.x.x)
;; WHEN: Mon Nov 20 11:27:00 JST 2023
;; MSG SIZE rcvd: 55
nslookup と同じ DNS サーバーに問い合わせて、IP アドレスを確認するコマンド。
dig の方がより詳細な情報を得ることができる。
ping
$ ping google.com
出力
$ ping google.com
PING google.com (142.250.207.46): 56 data bytes
64 bytes from 142.250.207.46: icmp_seq=0 ttl=116 time=13.256 ms
64 bytes from 142.250.207.46: icmp_seq=1 ttl=116 time=17.763 ms
64 bytes from 142.250.207.46: icmp_seq=2 ttl=116 time=22.924 ms
...
指定したドメイン名もしくは IP アドレスがネットワークにつながっているかを確認するコマンド。
ICMP(Internet Control Message Protocol)プロトコルを使用するため、このプロトコルを拒否しているホストやファイヤウォールでは失敗することがある。
つまり、失敗したとしてもネットワークにはつながってる可能性があることに注意。
telnet
$ telnet www.google.com 80
出力
$ telnet www.google.com 80
Trying 142.250.207.36...
Connected to www.google.com.
Escape character is '^]'.
GET / HTTP/1.1
HTTP/1.1 200 OK
Date: Mon, 20 Nov 2023 02:41:58 GMT
Expires: -1
...
指定したドメイン名や IP アドレス上の Port でアプリケーションが動いてるかどうか確認するコマンド。
http アプリケーションや SMTP アプリケーションなどが正常に動作してるかを確認するために使用する。
netcat
$ nc google.com 80
出力
$ nc google.com 80
GET / HTTP/1.1
HTTP/1.1 200 OK
Date: Mon, 20 Nov 2023 02:55:21 GMT
Expires: -1
...
telnet と同様、指定したドメイン名や IP アドレス上の Port でアプリケーションが動いてるか確認することができる。
他にも、ファイル転送や、チャットサーバーになることもできる。
tcpdump
$ sudo tcpdump // すべて
$ sudo tcpdump tcp // 特定のプロトコル
$ sudo tcpdump port 80 // 特定のポート
$ sudo tcpdump src google.com // 特定ドメイン名
詳細
$ sudo tcpdump src google.com
tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pktap, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
12:08:45.425815 IP nrt13s55-in-f14.1e100.net > 192.168.11.5: ICMP echo reply, id 42676, seq 0, length 64
12:08:46.433483 IP nrt13s55-in-f14.1e100.net > 192.168.11.5: ICMP echo reply, id 42676, seq 1, length 64
12:08:47.430309 IP nrt13s55-in-f14.1e100.net > 192.168.11.5: ICMP echo reply, id 42676, seq 2, length 64
別ターミナルで ping を打ってる
パケットをキャプチャすることができる。
特定のプロトコルやポート、IP アドレスでフィルタリングできる。
GUI で確認したい場合は、Wireshark を使用する。
traceroute
$ traceroute google.com
出力
$ traceroute google.com
traceroute to google.com (x.x.x.x), 64 hops max, 52 byte packets
1 buffalo.setup (192.168.11.1) 2.781 ms 1.957 ms 2.210 ms
2 * * *
3 10.202.115.131 (10.202.115.131) 19.043 ms 24.820 ms 28.257 ms
4 172.25.27.233 (172.25.27.233) 17.235 ms 18.564 ms 24.907 ms
5 10.1.11.229 (10.1.11.229) 14.250 ms 24.343 ms 26.657 ms
6 nfgw1-be1.at-dc.zaq.ad.jp (220.152.46.18) 19.562 ms 20.426 ms 15.518 ms
7 142.250.167.52 (142.250.167.52) 19.446 ms
142.250.163.198 (142.250.163.198) 26.201 ms
142.250.167.52 (142.250.167.52) 18.827 ms
8 * * *
9 172.253.66.202 (172.253.66.202) 26.330 ms
nrt13s54-in-f14.1e100.net (142.250.207.14) 15.750 ms
172.253.75.94 (172.253.75.94) 17.449 ms
...
指定したドメイン名または IP アドレスに辿り着くまでに、どのようなルートでアクセスしているのかを確認する方法。
プライベートネットワーク内で構築されたデータベースサーバーが意図してる IP アドレス経由でインターネット通信を行なっているかを確認する時に便利。
ただし、ping 同様 ICMP プロトコルをが制限されていると、結果を正しく表示することができない。
Discussion