今回はLPIC試験で「ネットワークのトラブルシューティング」の範囲になっているコマンドについて扱います。
実際これらのコマンドだけでどこまでトラブルシューティングができるかは微妙なところですが、実践で使用頻度が高そうなコマンドもあります。
疎通確認系コマンド
pingコマンド
LPICを受けようとしている人ならさすがに知らない人はいないでしょう。
疎通確認の王道、pingコマンドです。
通信プロトコルはICMPです。
・オプション
オプション | 内容 |
---|---|
-i | 疎通間隔を指定する(interval) |
-c | 疎通の回数を指定する |
-n | 疎通結果をアドレスで表示する |
・疎通確認の実行
[root@server1 wantan]# ping 192.168.142.134 PING 192.168.142.134 (192.168.142.134) 56(84) bytes of data. 64 bytes from 192.168.142.134: icmp_seq=1 ttl=64 time=0.291 ms 64 bytes from 192.168.142.134: icmp_seq=2 ttl=64 time=0.368 ms 64 bytes from 192.168.142.134: icmp_seq=3 ttl=64 time=0.447 ms 64 bytes from 192.168.142.134: icmp_seq=4 ttl=64 time=0.388 ms
・疎通確認の回数と間隔を指定する
以下の例では10秒間隔で3回の疎通確認を実行。
[root@server1 wantan]# ping -i 10 -c 3 192.168.142.134 PING 192.168.142.134 (192.168.142.134) 56(84) bytes of data. 64 bytes from 192.168.142.134: icmp_seq=1 ttl=64 time=0.489 ms 64 bytes from 192.168.142.134: icmp_seq=2 ttl=64 time=0.360 ms 64 bytes from 192.168.142.134: icmp_seq=3 ttl=64 time=0.410 ms --- 192.168.142.134 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 20001ms rtt min/avg/max/mdev = 0.360/0.419/0.489/0.058 ms
・結果をアドレスで表示する
ホスト名を指定してpingを実行した場合は通常ホスト名で結果が返ってきます。
[root@server1 wantan]# ping test-server PING test-server (192.168.142.134) 56(84) bytes of data. 64 bytes from test-server (192.168.142.134): icmp_seq=1 ttl=64 time=0.301 ms 64 bytes from test-server (192.168.142.134): icmp_seq=2 ttl=64 time=0.364 ms 64 bytes from test-server (192.168.142.134): icmp_seq=3 ttl=64 time=0.361 ms
「-n」オプションを付与するとアドレス表記になります。
[root@server1 wantan]# ping test-server -n PING test-server (192.168.142.134) 56(84) bytes of data. 64 bytes from 192.168.142.134: icmp_seq=1 ttl=64 time=0.833 ms 64 bytes from 192.168.142.134: icmp_seq=2 ttl=64 time=0.376 ms 64 bytes from 192.168.142.134: icmp_seq=3 ttl=64 time=0.424 ms
実践的にはどうゆうシーンで使うんだろうか。
■IPv6での疎通確認
pingコマンドでは(試験範囲内で)2種類の方法で疎通確認をすることができます。
・ping6コマンドを実行する
pingコマンドと同様のping6コマンドを使用することでIPv6の疎通確認を実行することができます。
[root@server1 wantan]# ping6 localhost PING localhost(localhost (::1)) 56 data bytes 64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.211 ms 64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.052 ms 64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.040 ms
・「-6」オプションで実行する
こちらはpingコマンドにオプションを付与することで実行します。
[root@server1 wantan]# ping -6 localhost PING localhost(localhost (::1)) 56 data bytes 64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.064 ms 64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.044 ms 64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.041 ms
tracerouteコマンド
tracerouteコマンドも比較的有名だと思います。
特定のホストやIPアドレスとの通信経路を表示します。
補足:以下の例ではWindowsホストマシンで起動したVMwareの仮想マシンからホストマシンにコマンドを実行しています。便宜上オプションなしのコマンド実行を記載していますが、そのままでは通信が通らなかったです。
tracerouteコマンドではUDPを使用しますがどうもそれがいけないみたい。実際に試すときにはICMPで通信を行う「-I」オプションを付与した。
なんかVMwareの仮想スイッチがいけないっぽいけど詳細は分からなかった。こうゆうときのトラブルシューティングではないのか。。。
なお試験的にはデフォルトではUDPで通信を行っているということは覚えておいていいかもしれませんが、オプションは試験対象外だと思われます。
・通信経路を表示する
[root@server1 wantan]# traceroute 192.168.139.1 traceroute to 192.168.139.1 (192.168.139.1), 30 hops max, 60 byte packets 1 gateway (192.168.142.2) 0.620 ms 0.574 ms 0.555 ms 2 192.168.139.1 (192.168.139.1) 0.535 ms 0.518 ms 0.655 ms
・IPv6で通信経路を表示する
基本的にはpingコマンドと同じ感じです。
[root@server1 wantan]# traceroute6 localhost traceroute to localhost (::1), 30 hops max, 80 byte packets 1 localhost (::1) 0.100 ms 0.003 ms 0.002 ms
[root@server1 wantan]# traceroute -6 localhost traceroute to localhost (::1), 30 hops max, 80 byte packets 1 localhost (::1) 0.012 ms 0.002 ms 0.003 ms
tracepathコマンド
tracepathコマンドはtracerouteコマンドと同様に対象までのネットワーク経路を示します。
途中で最大伝送単位(MTU)を提供したりroot権限でなくても実行できるという違いはありますが、試験的にはそこまで気にしなくてよさそうです。
あとはUDP以外のプロトコルで実行できなかったりと、tracerouteの方が高級コマンドな感じはします。
・ネットワーク経路を表示
[root@server1 wantan]# tracepath test-server 1?: [LOCALHOST] pmtu 1500 1: test-server 0.705ms !H 1: test-server 0.362ms !H Resume: pmtu 1500
・IPv6で通信経路を表示する
こちらも6用のコマンドがあるのはpingコマンドあるいはtracerouteコマンドと同様。
「-6」オプションはこちらにはないみたいですね。
[root@server1 wantan]# tracepath6 localhost 1?: [LOCALHOST] 0.051ms pmtu 65536 1: localhost 3.209ms reached 1: localhost 0.029ms reached Resume: pmtu 65536 hops 1 back 1
[root@server1 wantan]# tracepath -6 localhost tracepath: invalid option -- '6' Usage: tracepath [-n] [-b] [-l <len>] [-p port] <destination>
ネットワーク全般管理系コマンド
ネットワーク系コマンドにも多機能なものがあり分類が難しいものはこちらにぶち込みました。。
netstatコマンド
netstatコマンドはネットワーク機能に関する表示します。
多様なオプションがあるのでそちらをうまく使うことになります。
・主要オプション一覧
オプション | 内容 |
---|---|
-a | 全てのソケット情報を表示 |
-c | 1秒ごとにリアルタイム表示 |
-i | ネットワークインタフェースの統計情報表示 |
-n | アドレスやポートを数値表示 |
-p | PIDとプロセスを表示 |
-r | ルーティングテーブルを表示 |
-t | TCPポートのみ表示 |
-u | UDPポートのみ表示 |
・デフォルト実行
[root@server1 wantan]# netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 36 server1.test:ssh 192.168.142.1:59228 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 3 [ ] DGRAM 8997 /run/systemd/notify unix 2 [ ] DGRAM 8999 /run/systemd/cgroups-agent unix 5 [ ] DGRAM 9017 /run/systemd/journal/socket unix 17 [ ] DGRAM 9019 /dev/log *****省略*****
・接続待ちしているTCPポートを調べる
よく使われるやつですね。
実践的にもそのまま覚えてしまってもいいと思います。
[root@server1 wantan]# netstat -ant 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 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 36 192.168.142.11:22 192.168.142.1:59228 ESTABLISHED tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN tcp6 0 0 :::3306 :::* LISTEN
・接続待ちしているUDPポートを調べる
同様にUDPポートを調べる。
[root@server1 wantan]# netstat -anu Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:68 0.0.0.0:*
・ルーティングを表示する
他のコマンドでも可能ですが、「-r」オプションで実行することでルーティング情報を表示することができます。
[root@server1 wantan]# netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default gateway 0.0.0.0 UG 0 0 0 ens33 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33 192.168.142.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
■ssコマンド
ssコマンドはnetstatコマンドの後継として同様のことができます。
[root@server1 wantan]# ss -ant State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 128 127.0.0.1:631 *:* LISTEN 0 100 127.0.0.1:25 *:* ESTAB 0 0 192.168.142.11:22 192.168.142.1:59228 ESTAB 0 0 192.168.142.11:22 192.168.142.1:60010 LISTEN 0 128 [::]:22 [::]:* LISTEN 0 128 [::1]:631 [::]:* LISTEN 0 100 [::1]:25 [::]:* LISTEN 0 80 [::]:3306 [::]:*
ncコマンド
ncコマンドはネットワーク上でcatコマンドと同様のことを実行できます。
私はややイメージがしにくかったですが、対象のIPのポートに対して通信状態の表示や、テキストの送信を行うことができます。
リッスンを行うことで簡易的なサーバとしても機能します。
・オプション
オプション | 内容 |
---|---|
-l | 指定ポートをリッスンする |
-p | ポート番号を指定 |
-u | UDPで使用する |
-o | ファイルに結果を出力 |
・リッスン状態で実行する
まずはポートを指定してリッスン状態で実行してみます。
[root@server1 wantan]# nc -l -p 22222
・疎通確認を行う
もう一つプロンプトを開き、先ほどリッスン状態にしたポートに対して疎通確認を行います。
入力待ちの状態になるので、適当な文字列を入力してみます。
[root@server1 wantan]# nc localhost 22222 test.. wantan
するとリッスン状態にしたncコマンドの方にも同様の文字列が表示されていることが確認できると思います。
[root@server1 wantan]# nc -l -p 22222 test.. wantan
routeコマンド
routeコマンドはその名の通りルーティング全般の管理を行うコマンドです。
サブコマンドなしで実行することでルーティングテーブルが表示され、「add」サブコマンドでルーティングの追加、「del」サブコマンドで削除を行うことができます。
・ルーティングテーブルの表示
表示は原則「netstat -r」の表示とほぼ同様になります。
後述する同じようにルーティングテーブルを表示する「ip route show」とは表示形式が異なります。
[root@server1 wantan]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default gateway 0.0.0.0 UG 100 0 0 ens33 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.142.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
■Flagについて
Flagの文字は以下の状態を表しています。
U:経路が有効
H:宛先がホスト
G:ゲートウェイを使用
!:経路が無効
・ルーティングの追加
ルーティングの追加は以下のような書式で行います。
[root@server1 wantan]# route add -net 192.168.139.0 netmask 255.255.255.0 gw 192 .168.142.2
・ルーティングの削除
基本的には「add」だった部分を「del」にすることでルーティングの削除を行うことができます。
[root@server1 wantan]# route del -net 192.168.139.0 netmask 255.255.255.0 gw 192 .168.142.2
ipコマンド
ipコマンドはインタフェースやルーティングなどネットワークに関する幅広い設定を管理するコマンドです。
書式としては以下のようになります。
ip [オブジェクト] [サブコマンド]
・主要オブジェクト
オブジェクト | 内容 |
---|---|
addr | IPアドレス |
link | ネットワークデバイス |
neighbour | ARPキャッシュ |
route | ルーティング |
・サブコマンド
サブコマンド | 内容 |
---|---|
add | 追加 |
del | 削除 |
show | 表示 |
・IPアドレス情報の表示
[root@server1 wantan]# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:24:a6:01 brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 brd 192.168.1.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet 192.168.142.11/24 brd 192.168.142.255 scope global noprefixroute dynamic ens33 valid_lft 1279sec preferred_lft 1279sec inet6 fe80::f5ef:f740:af9c:23e8/64 scope link noprefixroute valid_lft forever preferred_lft forever
・IPアドレスの追加(設定)
[root@server1 wantan]# ip addr add 192.168.142.12/24 dev ens33
・データリンク層情報の表示
[root@server1 wantan]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 00:0c:29:24:a6:01 brd ff:ff:ff:ff:ff:ff
・ARPキャッシュ情報の表示
[root@server1 wantan]# ip neighbour show 192.168.142.1 dev ens33 lladdr 00:50:56:c0:00:08 DELAY 192.168.142.254 dev ens33 lladdr 00:50:56:f5:cf:d5 REACHABLE 192.168.142.2 dev ens33 lladdr 00:50:56:e8:1a:33 STALE
・ルーティング情報の表示
[root@server1 wantan]# ip route show default via 192.168.142.2 dev ens33 proto dhcp metric 100 192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.2 metric 100 192.168.142.0/24 dev ens33 proto kernel scope link src 192.168.142.11 metric 100
ifconfigコマンド
ifconfigコマンドはIPアドレスの確認などに使用される、インタフェースの管理コマンドになります。
LinuxシステムでIPアドレスを確認するコマンドとしては有名ですかね。
ifconfigコマンドではパラメータにより各種管理を行います。
・主要パラメータ
パラメータ | 内容 |
---|---|
netmask | サブネットマスクの設定 |
up | インタフェースを有効化 |
down | インタフェースを無効化 |
・インタフェース情報の表示
[root@server1 network-scripts]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::f5ef:f740:af9c:23e8 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:24:a6:01 txqueuelen 1000 (Ethernet) RX packets 4093 bytes 317044 (309.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2047 bytes 398001 (388.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
・IPアドレスの設定
[root@server1 network-scripts]# ifconfig ens39 192.168.142.12 netmask 255.255.255.0
・前回(第十二回)
www.wantanblog.com
・次回(第十四回)
www.wantanblog.com