AWSでサーバー構築をしたときに、ネットワーク状態確認のためにネットワークコマンドを初めて使いました。
その時に、これを使いこなせるようになったらかっこいいなぁと思ったので、本記事にまとめてみました。
間違いがあればご指摘をしていただけると幸いです。
環境
Linux - Ubuntu 20.04.3 LTS
ネットワークコマンドとは
接続しているネットワークの状態確認や設定変更などを行うために使用するコマンドをネットワークコマンドと言います。
特に使われるであろうネットワークコマンドを以下に示します。
コマンド | 説明 |
---|---|
ifconfig | ネットワークインターフェース(NIC)情報を確認。 |
ping | ネットワークの接続状態や応答速度を確認。 |
tracepath/traceroute | ネットワークの経路を確認。 |
nslookup | DNSサーバで名前解決を行えているかどうかを確認。 |
dig | DNSサーバで名前解決を行えているかどうかを確認。nslookupよりも詳細な情報を得られる。 |
netstat | ソケット情報、インターフェース接続状態を確認。 |
lsof | プロセスが開いているポート番号を確認。 |
route | ルーティングテーブルを確認。 |
whois | ドメイン情報を確認。 |
ifconfig
主なオプション
オプション | 説明 |
---|---|
-a | 停止(down)しているものを含め、全てのインタフェースを表示する。 |
-s | インタフェースの通信状況を簡潔に表示する。 |
使用例
# ifconfig [option]
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet XXX.XXX.XXX.XXX netmask 255.255.255.0 broadcast XXX.XXX.XXX.255
inet6 XXXX::XXXX:XXXX:XXXX:XXXX prefixlen 64 scopeid 0x20<link>
ether XX:XX:XX:XX:XX:XX txqueuelen 1000 (Ethernet)
RX packets 14024 bytes 19561658 (19.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1367 bytes 184904 (184.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 35583 bytes 33711981 (33.7 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 35583 bytes 33711981 (33.7 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ping
主なオプション
オプション | 説明 |
---|---|
-c | パケットを送る回数を指定。 |
-i | 個々のパケット送信後に待つ秒数。(default=1s) |
-w | 何秒間実行するのかを指定。 |
-v | 詳細な出力。 |
使用例
# ping [option] 通信相手
$ ping google.com
PING google.com (142.251.42.142) 56(84) bytes of data.
64 bytes from nrt12s45-in-f14.1e100.net (142.251.42.142): icmp_seq=1 ttl=115 time=28.5 ms
64 bytes from nrt12s45-in-f14.1e100.net (142.251.42.142): icmp_seq=2 ttl=115 time=28.3 ms
64 bytes from nrt12s45-in-f14.1e100.net (142.251.42.142): icmp_seq=3 ttl=115 time=28.4 ms
64 bytes from nrt12s45-in-f14.1e100.net (142.251.42.142): icmp_seq=4 ttl=115 time=28.6 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 28.258/28.437/28.637/0.138 ms
tracepath/traceroute
tracepathではUDPパケットを使用し、MTUが確認できます。
tracerouteではICMPパケットを使用します。
主なオプション
tracepath
オプション | 説明 |
---|---|
-p | 宛先ポートを指定。 |
-n | 到達経路をホスト名ではなくIPアドレスで表記。 |
traceroute
オプション | 説明 |
---|---|
-I | ICMPを使用。 |
-T | TCPを使用。 |
-d | デバッグモードで実行。 |
-p | 宛先ポートを指定。 |
-n | 到達経路をホスト名ではなくIPアドレスで表記。 |
使用例
# tracepath [option] 通信相手
$ tracepath google.com
1?: [LOCALHOST] pmtu 1500
1: XXXXXXXXXXXXXXXXXXXXXXXXXX 0.175ms
1: XXXXXXXXXXXXXXXXXXXXXXXXXX 0.252ms
2: ??? 1.872ms
^C
# traceroute [option] 通信相手
$ traceroute google.com
traceroute to google.com (XXX.XXX.XXX.XXX), 30 hops max, 60 byte packets
1 XXXXXXXXXXX (XXX.XXX.XXX.XXX) 0.382 ms 0.360 ms 0.348 ms
2 XXXXXXXXXXX (XXX.XXX.XXX.XXX) 2.304 ms 5.294 ms 3.705 ms
3 * * * (XXX.XXX.XXX.XXX) 6.171 ms
^C
nslookup
使用例
# nslookup [option] 通信相手
$ nslookup google.com
Server: XXX.XXX.XXX.XXX
Address: XXX.XXX.XXX.XXX#53
Non-authoritative answer:
Name: google.com
Address: 142.251.42.142
Name: google.com
Address: 2404:6800:4004:801::200e
dig
主なオプション
オプション | 説明 |
---|---|
-x | IPアドレスを指定して、逆引きを行う。 |
使用例
# dig [option] 通信相手
$ dig google.com
; <<>> DiG 9.16.1-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12573
;; flags: qr rd ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 0 IN A 172.217.31.142
;; Query time: 30 msec
;; SERVER: XXX.XXX.XXX.XXX#53(XXX.XXX.XXX.XXX)
;; WHEN: Thu Feb 17 16:01:18 JST 2022
;; MSG SIZE rcvd: 54
netstat
主なオプション
オプション | 説明 |
---|---|
-a | 全ての接続を表示。 |
-e | 詳細情報を表示。 |
-ee | さらに詳細情報を表示。 |
-i | すべてのネットワーク・インターフェースを表示。 |
-l | 接続待ち(LISTEN)状態のソケットのみを表示。 |
-n | ホスト名ではなく、IPアドレスを表示。 |
-r | ルーティングテーブルを表示。 |
-s | 各プロトコルの統計情報を表示。 |
使用例
# netstat [option]
$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:34245 localhost:47960 ESTABLISHED
tcp 0 0 localhost:34245 localhost:47962 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] STREAM CONNECTED 22540
unix 3 [ ] STREAM CONNECTED 20990
# 中略
unix 3 [ ] STREAM CONNECTED 19890
lsof
主なオプション
オプション | 説明 |
---|---|
-u | 指定したユーザ名またはユーザIDのみを表示。 |
-p | 指定したプロセスIDのみを表示。 |
-i | ネットワークソケットを対象とする。またはポートやIPアドレスを指定する(ex. -i:80 -i:ssh)。 |
-n | ホスト名ではなく、IPアドレスを表示。 |
-t | プロセスIDのみを表示 |
使用例
# lsof [option] [path]
$ lsof
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd unknown /path/to/cwd (readlink: Permission denied)
init 1 root rtd unknown /path/to/rtd (readlink: Permission denied)
init 1 root txt unknown /path/to/txt (readlink: Permission denied)
# 省略
route
主なオプション
オプション | 説明 |
---|---|
-n | ホスト名ではなく、IPアドレスを表示。 |
-e | テーブルの表示にnetstatのフォーマットを使用。 |
-ee | より詳しい情報を表示。 |
使用例
# route [option]
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default XXXXXXX 0.0.0.0 UG 0 0 0 eth0
XXX.XXX.XXX.XXX 0.0.0.0 255.255.255.0 U 0 0 0 eth0
whois
主なオプション
オプション | 説明 |
---|---|
-h | 使用するWHOISサーバを指定。 |
-p | 使用するポート番号を指定。(default=43) |
-H | 免責事項を表示しない。 |
使用例
# whois [option] 対象ドメイン
$ whois google.co.jp
[ JPRS database provides information on network administration. Its use is ]
[ restricted to network administration purposes. For further information, ]
[ use 'whois -h whois.jprs.jp help'. To suppress Japanese output, add'/e' ]
[ at the end of command, e.g. 'whois -h whois.jprs.jp xxx/e'. ]
Domain Information:
a. [Domain Name] GOOGLE.CO.JP
g. [Organization] Google Japan G.K.
l. [Organization Type] GK
m. [Administrative Contact] YN47525JP
n. [Technical Contact] SH36113JP
p. [Name Server] ns1.google.com
p. [Name Server] ns2.google.com
p. [Name Server] ns3.google.com
p. [Name Server] ns4.google.com
s. [Signing Key]
[State] Connected (2022/03/31)
[Registered Date] 2001/03/22
[Connected Date] 2001/03/22
[Last Update] 2021/04/01 01:05:22 (JST)
$ whois google.com | head
Domain Name: GOOGLE.COM
Registry Domain ID: 2138514_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.markmonitor.com
Registrar URL: http://www.markmonitor.com
Updated Date: 2019-09-09T15:39:04Z
Creation Date: 1997-09-15T04:00:00Z
Registry Expiry Date: 2028-09-14T04:00:00Z
Registrar: MarkMonitor Inc.
Registrar IANA ID: 292
Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
最後に
大学ではネットワーク系を専攻しているため、そこで軽く習っていた分野と近しいものに実際に触れられたのが面白かったです。(講義でもこういうのやって欲しかった、、、)
今回は単純なコマンドの使い方や何のためのコマンドかの説明がメインでしたが、いつかそれぞれのコマンドについてより詳しく調べて記事を書こうかなと思います。