2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ネットワークコマンド 【Linux】

Posted at

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

最後に

大学ではネットワーク系を専攻しているため、そこで軽く習っていた分野と近しいものに実際に触れられたのが面白かったです。(講義でもこういうのやって欲しかった、、、)

今回は単純なコマンドの使い方や何のためのコマンドかの説明がメインでしたが、いつかそれぞれのコマンドについてより詳しく調べて記事を書こうかなと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?