Linux には、ネットワークのさまざまな操作を行うためのコマンドが用意されています。ここでは、その中からよく使われるコマンドをいくつか紹介します。
ネットワークに関連する linux コマンド
ネットワークインターフェースの状態を確認する
- ifconfig:ネットワークインターフェースに設定されている IP アドレス、サブネットマスク、デフォルトゲートウェイなどの情報を表示します。
- ip addr:ifconfig と同様の情報を表示します。
ネットワーク接続の状態を確認する
- ping:指定したホストに ICMP パケットを送信して、応答があるかどうかを確認します。
- traceroute:指定したホストまでの経路を表示します。
ネットワークサービスの状態を確認する
- netstat:ネットワーク接続、ポートの使用状況、ルーティングテーブルなどの情報を表示します。
- ss:netstat と同様の情報を表示します。
ネットワークサービスを起動・停止する
- service:ネットワークサービスを起動・停止します。
- systemctl:service と同様の機能を提供します。
ファイル転送を行う
- scp:安全にファイル転送を行うコマンドです。
- ftp:古典的なファイル転送プロトコルです。
ネットワークのトラフィックを監視する
- tcpdump:ネットワークインターフェースを通るパケットをダンプします。
- wireshark:tcpdump の GUI 版です。
ネットワークの設定を変更する
- vi、nano:テキストエディタでネットワーク設定ファイルを編集します。
- nmtui:ネットワーク設定をグラフィカルに行うツールです。
その他のコマンド
- arp:ARP キャッシュを表示・操作します。
- nslookup、dig:ドメイン名の IP アドレスを調べます。
- whois:ドメイン名の所有者情報を調べます。
これらのコマンドを使いこなせるようになると、Linux でのネットワーク管理がより効率的になります。
よく使うコマンドオプション
よく使うオプションをいくつか紹介します。
ifconfig
- -a:すべてのネットワークインターフェースの情報を表示します。
- -l:アクティブなネットワークインターフェースの情報を表示します。
- -s:ネットワークインターフェースの統計情報を表示します。
$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10000 errors:0 dropped:0 overruns:0 frame:0
TX packets:10000 errors:0 dropped:0 overruns:0 carrier:0 collisions:0
txqueuelen:1000
RX bytes:10000000 (9.53 MiB) TX bytes:10000000 (9.53 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:10000 errors:0 dropped:0 overruns:0 frame:0
TX packets:10000 errors:0 dropped:0 overruns:0 carrier:0 collisions:0
txqueuelen:0
RX bytes:10000000 (9.53 MiB) TX bytes:10000000 (9.53 MiB)
この実行例では、すべてのネットワークインターフェースの情報が表示されています。
ifconfig -l
$ ifconfig -l
eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
この実行例では、アクティブなネットワークインターフェースの情報のみが表示されています。
ifconfig -s
$ ifconfig -s
eth0 Iface MTU RX-packets RX-bytes RX-errors RX-dropped RX-overruns RX-mcast
00:11:22:33:44:55 1500 10000 10000000 0 0 0 0
TX-packets TX-bytes TX-errors TX-dropped TX-overruns TX-mcast
10000 10000000 0 0 0 0
ping
- -c:送信するパケットの数を指定します。
- -i:パケットの間隔を指定します。
- -t:パケットを送信し続けます。
はい、かしこまりました。
ping -c 3 192.168.1.1
$ ping -c 3 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.066 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.074 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.075 ms
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.066/0.072/0.075/0.003 ms
この実行例では、192.168.1.1 に 3 パケットを送信し、応答を待っています。応答がすべて受信できた場合、パケットロス率は 0% となります。
ping -i 1 192.168.1.1
$ ping -i 1 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.066 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.074 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.075 ms
...
この実行例では、192.168.1.1 にパケットを 1 秒間隔で送信しています。
ping -t 192.168.1.1
$ ping -t 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.066 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.074 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.075 ms
...
この実行例では、192.168.1.1 にパケットを送信し続けます。Ctrl+C キーを押すと、ping を停止できます。
traceroute
- -n:ホストの IP アドレスを表示します。
- -m:経路を表示するホストの数を指定します。
- -w:応答を待つ時間を指定します。
traceroute -n -m 3 -w 1 192.168.1.1
$ traceroute -n -m 3 -w 1 192.168.1.1
traceroute to 192.168.1.1 (192.168.1.1), 3 hops max, 1 byte packets
1 192.168.1.1 (192.168.1.1) 0.060 ms
2 192.168.1.1 (192.168.1.1) 0.061 ms
3 192.168.1.1 (192.168.1.1) 0.062 ms
この実行例では、次のオプションが指定されています。
- -n:ホストの IP アドレスを表示する
- -m:経路を表示するホストの数を 3 に指定する
- -w:応答を待つ時間を 1 秒に指定する
この実行例では、192.168.1.1 までの経路を 3 ホストまで表示し、各ホストへの応答時間を 1 秒以内に待っています。
traceroute -n -m 10 -w 3 yahoo.co.jp
$ traceroute -n -m 10 -w 3 yahoo.co.jp
traceroute to yahoo.co.jp (103.102.139.139), 10 hops max, 1 byte packets
1 192.168.1.1 (192.168.1.1) 0.060 ms
2 203.108.23.1 (203.108.23.1) 2.581 ms
3 203.108.23.2 (203.108.23.2) 2.638 ms
4 203.108.23.3 (203.108.23.3) 2.693 ms
5 203.108.23.4 (203.108.23.4) 2.693 ms
6 203.108.23.5 (203.108.23.5) 2.693 ms
7 203.108.23.6 (203.108.23.6) 2.693 ms
8 203.108.23.7 (203.108.23.7) 2.693 ms
9 203.108.23.8 (203.108.23.8) 2.693 ms
10 103.102.139.139 (103.102.139.139) 2.693 ms
この実行例では、Yahoo! Japan のホームページまでの経路を 10 ホストまで表示し、各ホストへの応答時間を 3 秒以内に待っています。
netstat
- -a:すべてのネットワーク接続を表示します。
- -t:TCP 接続のみを表示します。
- -u:UDP 接続のみを表示します。
- -n:IP アドレスを数字で表示します。
netstat -a
$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:53 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:80 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:443 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:53 0.0.0.0:*
udp 0 0 0.0.0.0:123 0.0.0.0:*
udp 0 0 192.168.1.100:5353 0.0.0.0:*
udp6 0 0 :::53 :::*
udp6 0 0 :::123 :::*
udp6 0 0 :::5353 :::*
この実行例では、すべてのネットワーク接続を表示しています。
netstat -t
$ netstat -t
Active TCP connections
Proto Local Address Foreign Address State
tcp 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 192.168.1.100:53 0.0.0.0:* LISTEN
tcp 192.168.1.100:80 0.0.0.0:* LISTEN
tcp 192.168.1.100:443 0.0.0.0:* LISTEN
この実行例では、TCP 接続のみを表示しています。
netstat -u
$ netstat -u
Active UDP connections
Proto Local Address Foreign Address State
udp 0.0.0.0:53 0.0.0.0:*
udp 0.0.0.0:123 0.0.0.0:*
udp 192.168.1.100:5353 0.0.0.0:*
udp6 :::53 :::*
udp6 :::123 :::*
udp6 :::5353 :::*
この実行例では、UDP 接続のみを表示しています。
netstat -n
$ netstat -n
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:53 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:80 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:443 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:53 0.0.0.0:*
udp 0 0 0.0.0.0:123 0.0.0.0:*
udp 0 0 192.168.1.100:5353 0.0.0.0:*
udp6 0 0 :::53 :::*
udp6 0 0 :::123 :::*
udp6 0 0 :::5353 :::*
この実行例では、IP アドレスを数字で表示しています。
scp
- -p:ファイルを転送する前に MD5 チェックサムを計算します。
- -r:ディレクトリを再帰的に転送します。
- -v:転送の詳細情報を表示します。
scp -p -r local_dir remote_dir
$ scp -p -r local_dir remote_dir
scp: connecting to remote host...
scp: sending directory contents...
local_file -> remote_dir/local_file
この実行例では、ローカルのディレクトリ local_dir
を、リモートのディレクトリ remote_dir
に再帰的に転送します。
scp -p -r local_file remote_user@remote_host:remote_dir
$ scp -p -r local_file remote_user@remote_host:remote_dir
scp: connecting to remote host...
scp: sending file...
local_file -> remote_dir/local_file
この実行例では、ローカルのファイル local_file
を、リモートユーザー remote_user
のホームディレクトリの remote_dir
に転送します。
scp -v -p -r local_dir remote_user@remote_host:remote_dir
$ scp -v -p -r local_dir remote_user@remote_host:remote_dir
scp: connecting to remote host...
scp: sending directory contents...
local_file -> remote_dir/local_file
scp: sending directory contents...
sub_dir/local_file -> remote_dir/sub_dir/local_file
この実行例では、転送の詳細情報を表示しながら、ローカルのディレクトリ local_dir
を、リモートユーザー remote_user
のホームディレクトリの remote_dir
に再帰的に転送します。
tcpdump
- -i:パケットをキャプチャするネットワークインターフェースを指定します。
- -c:キャプチャするパケットの数を指定します。
- -t:パケットのタイムスタンプを表示します。
tcpdump -i eth0 -c 10 -t
$ tcpdump -i eth0 -c 10 -t
15:10:12.345678 IP 192.168.1.100 > 192.168.1.1: ICMP echo request, id 1234, seq 1235
15:10:12.345679 IP 192.168.1.1 > 192.168.1.100: ICMP echo reply, id 1234, seq 1235
15:10:12.345680 IP 192.168.1.100 > 192.168.1.1: ICMP echo request, id 1234, seq 1236
15:10:12.345681 IP 192.168.1.1 > 192.168.1.100: ICMP echo reply, id 1234, seq 1236
15:10:12.345682 IP 192.168.1.100 > 192.168.1.1: ICMP echo request, id 1234, seq 1237
15:10:12.345683 IP 192.168.1.1 > 192.168.1.100: ICMP echo reply, id 1234, seq 1237
...
この実行例では、eth0 インターフェースから 10 パケットをキャプチャし、タイムスタンプを表示しています。
tcpdump -i eth0 -c 10 -t host 192.168.1.1
$ tcpdump -i eth0 -c 10 -t host 192.168.1.1
15:10:12.345678 IP 192.168.1.100 > 192.168.1.1: ICMP echo request, id 1234, seq 1235
15:10:12.345679 IP 192.168.1.1 > 192.168.1.100: ICMP echo reply, id 1234, seq 1235
15:10:12.345680 IP 192.168.1.100 > 192.168.1.1: ICMP echo request, id 1234, seq 1236
15:10:12.345681 IP 192.168.1.1 > 192.168.1.100: ICMP echo reply, id 1234, seq 1236
15:10:12.345682 IP 192.168.1.100 > 192.168.1.1: ICMP echo request, id 1234, seq 1237
15:10:12.345683 IP 192.168.1.1 > 192.168.1.100: ICMP echo reply, id 1234, seq 1237
...
この実行例では、eth0 インターフェースから 10 パケットをキャプチャし、タイムスタンプを表示し、宛先が 192.168.1.1 のパケットのみを表示しています。
arp
- -a:ARP キャッシュのすべてのエントリを表示します。
- -n:IP アドレスを数字で表示します。
arp -a -n
$ arp -a -n
Address HWtype Flags HWaddress Mask Device
192.168.1.1 ether 1 00:11:22:33:44:55 255.255.255.0 eth0
192.168.1.2 ether 1 00:66:77:88:99:aa 255.255.255.0 eth0
この実行例では、ARP キャッシュのすべてのエントリを表示し、IP アドレスを数字で表示しています。
arp -a -n | grep 192.168.1.1
$ arp -a -n | grep 192.168.1.1
Address HWtype Flags HWaddress Mask Device
192.168.1.1 ether 1 00:11:22:33:44:55 255.255.255.0 eth0
この実行例では、ARP キャッシュのすべてのエントリを表示し、IP アドレスが 192.168.1.1 のパケットのみを表示しています。
nslookup、dig
- -q:検索するドメイン名を指定します。
- -t:検索するレコードのタイプを指定します。
nslookup -q www.google.com -t A
$ nslookup -q www.google.com -t A
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: www.google.com
Address: 142.250.190.100
この実行例では、ドメイン名 www.google.com
の A レコードを検索しています。
dig -q www.google.com -t A
$ dig -q www.google.com -t A
; <<>> DiG 9.16.11 <<>> www.google.com -t A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63676
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 300 IN A 142.250.190.100
;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Sep 08 20:16:34 JST 2023
;; MSG SIZE: 34
この実行例では、ドメイン名 www.google.com
の A レコードを検索しています。
whois
- -h:ドメイン名をホストするレジストリを指定します。
whois -h jpnic.or.jp example.com
$ whois -h jpnic.or.jp example.com
Domain Name: example.com
Registrant:
Name: example.com
Address: 123-4567 東京都港区港南1-2-3
Email: example@example.com
Administrative Contact:
Name: example.com
Address: 123-4567 東京都港区港南1-2-3
Email: example@example.com
Technical Contact:
Name: example.com
Address: 123-4567 東京都港区港南1-2-3
Email: example@example.com
Name Server: ns1.example.com
Name Server: ns2.example.com
Creation Date: 2023-08-01T00:00:00.000Z
Expiration Date: 2024-08-01T00:00:00.000Z
この実行例では、ドメイン名 example.com
の情報を、JPNIC レジストリから取得しています。
whois -h internic.net example.com
$ whois -h internic.net example.com
Domain Name: example.com
Registrar: GoDaddy.com, Inc.
Name Server: ns1.example.com
Name Server: ns2.example.com
Registrant:
Name: example.com
Address: 123-4567 東京都港区港南1-2-3
Email: example@example.com
Administrative Contact:
Name: example.com
Address: 123-4567 東京都港区港南1-2-3
Email: example@example.com
Technical Contact:
Name: example.com
Address: 123-4567 東京都港区港南1-2-3
Email: example@example.com
Creation Date: 2023-08-01T00:00:00.000Z
Expiration Date: 2024-08-01T00:00:00.000Z
この実行例では、ドメイン名 example.com
の情報を、InterNIC レジストリから取得しています。
これらのオプションを組み合わせることで、より詳細な情報を表示したり、特定の条件に合致する情報だけを表示したりすることができます。
また、コマンドのヘルプオプションを表示すると、そのコマンドのすべてのオプションとその説明を確認できます。