Linux のネットワーク関連コマンド
iptables と dnsmasq も後で追記したいです。
nc
TCPやUDPのデータが送受信ができるコマンド。
TCP で Listen は nc -l 12345
、Connect は nc localhost 12345
にする。
UDP にする時は -u
を付ける。
tcpdump
パケットをキャプチャできるコマンド。
-t
で時刻を表示しない。
-n
でIPアドレスの名前解決をしない。
-i
でキャプチャするインタフェースを指定する。-i any
だと全てのインタフェースをキャプチャする。
-A
でデータをASCIIで表示する。
別のターミナルから ping 8.8.8.8 -c 2
を実行し、ICMP パケットをキャプチャする例
$ sudo tcpdump -tn -i any icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes IP 192.168.0.10 > 8.8.8.8: ICMP echo request, id 5, seq 1, length 64 IP 8.8.8.8 > 192.168.0.10: ICMP echo reply, id 5, seq 1, length 64 IP 192.168.0.10 > 8.8.8.8: ICMP echo request, id 5, seq 2, length 64 IP 8.8.8.8 > 192.168.0.10: ICMP echo reply, id 5, seq 2, length 64 ^C 4 packets captured 4 packets received by filter 0 packets dropped by kernel
UDP でポートを指定してキャプチャする例
$ sudo tcpdump -tnlA -i any "udp and port 12345" tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes IP 127.0.0.1.37527 > 127.0.0.1.12345: UDP, length 4 E.. ..@.@.?A..........09....foo IP 127.0.0.1.37527 > 127.0.0.1.12345: UDP, length 6 E..".z@.@.<O..........09...!hello ^C 2 packets captured 4 packets received by filter 0 packets dropped by kernel
lsof
プロセスが開いているファイルを表示できるコマンド。
-i
でソケットだけを表示できる。-i:ポート番号
で絞り込みも可能。
-p
でプロセスを指定できる。
$ lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nc 1298 vagrant 3u IPv4 28252 0t0 TCP *:12345 (LISTEN) nc 1339 vagrant 3u IPv4 29509 0t0 TCP *:9999 (LISTEN) $ lsof -i:12345 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nc 1298 vagrant 3u IPv4 28252 0t0 TCP *:12345 (LISTEN) $ lsof -p 1339 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME nc 1339 vagrant cwd DIR 8,3 4096 5638785 /home/vagrant nc 1339 vagrant rtd DIR 8,3 4096 2 / nc 1339 vagrant txt REG 8,3 43664 4325590 /usr/bin/nc.openbsd nc 1339 vagrant mem REG 8,3 2029224 4328519 /usr/lib/x86_64-linux-gnu/libc-2.31.so nc 1339 vagrant mem REG 8,3 101320 4328538 /usr/lib/x86_64-linux-gnu/libresolv-2.31.so nc 1339 vagrant mem REG 8,3 96728 4328287 /usr/lib/x86_64-linux-gnu/libbsd.so.0.10.0 nc 1339 vagrant mem REG 8,3 191472 4328477 /usr/lib/x86_64-linux-gnu/ld-2.31.so nc 1339 vagrant 0u CHR 136,0 0t0 3 /dev/pts/0 nc 1339 vagrant 1u CHR 136,0 0t0 3 /dev/pts/0 nc 1339 vagrant 2u CHR 136,0 0t0 3 /dev/pts/0 nc 1339 vagrant 3u IPv4 29509 0t0 TCP *:9999 (LISTEN)
openssl s_client
openssl s_client -connect
で SSL/TLS 接続に関する情報を表示できる。
$ echo -e 'HEAD / HTTP/1.1\r\nHost: www.hatena.ne.jp\r\n\r\n' | openssl s_client -connect www.hatena.ne.jp:443 -quiet depth=2 C = US, O = Amazon, CN = Amazon Root CA 1 verify return:1 depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon verify return:1 depth=0 CN = www.hatena.ne.jp verify return:1 HTTP/1.1 200 OK Date: Tue, 13 Jul 2021 05:29:25 GMT Content-Type: text/html; charset=utf-8 Content-Length: 291348 Connection: keep-alive Server: nginx Vary: Accept-Encoding Vary: Accept-Encoding ETag: "47214-Bl7Cq7MeA3CEtqJhoXukBQe/L7k" Vary: Accept-Encoding X-Frame-Options: DENY X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block ^C