CentOS8に入門してみる(ネットワーク管理・トラブルシュート)
前回までネットワークの設定系を主に見ていきましたが、今回からはネットワーク管理やトラブルシュートの解析で使うコマンド達を学習します
どんな事象が発生していてどういうお手当てをすべきか迅速に判断できるように体系立てて覚えていきたいと思います
pingコマンド
ネットワークの疎通確認に使用します
下記はgoogleへpingコマンドを利用して疎通確認を行う例です
[vagrant@centuser ~]$ ping -c 5 10.0.2.15
PING 10.0.2.15 (10.0.2.15) 56(84) bytes of data.
64 bytes from 10.0.2.15: icmp_seq=1 ttl=64 time=0.038 ms
64 bytes from 10.0.2.15: icmp_seq=2 ttl=64 time=0.087 ms
64 bytes from 10.0.2.15: icmp_seq=3 ttl=64 time=0.089 ms
64 bytes from 10.0.2.15: icmp_seq=4 ttl=64 time=0.050 ms
64 bytes from 10.0.2.15: icmp_seq=5 ttl=64 time=0.047 ms
--- 10.0.2.15 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 142ms
rtt min/avg/max/mdev = 0.038/0.062/0.089/0.022 ms
-c n を指定して回数を指定しています
回数指定しなければcontrol + cするまでpingコマンドが実行され続けます
下は疎通に失敗した状況です
[vagrant@centuser ~]$ ping -c 5 10.0.2.200
PING 10.0.2.200 (10.0.2.200) 56(84) bytes of data.
From 10.0.2.15 icmp_seq=1 Destination Host Unreachable
From 10.0.2.15 icmp_seq=2 Destination Host Unreachable
From 10.0.2.15 icmp_seq=3 Destination Host Unreachable
From 10.0.2.15 icmp_seq=4 Destination Host Unreachable
From 10.0.2.15 icmp_seq=5 Destination Host Unreachable
--- 10.0.2.200 ping statistics ---
5 packets transmitted, 0 received, +5 errors, 100% packet loss, time 116ms
pipe 4
失敗理由として考えられるのは
・ファイアウォールによって疎通確認を制限されている
・ローカルホスト or 宛先IPがネットワークに接続されていない
・宛先のシステムがpingを応答しないよう制限している
・宛先のシステムがシャットダウンしている
などです
ipコマンド
ipコマンドはネットワークの設定を行う際にも確認などに使っていました
従来のifconfigやrouteやnetstatコマンドを使用してきましたが、現在はipコマンドへの集約が進んでいるそうです(ipコマンド積極的に使用しようと思います)
$ ip オブジェクト サブコマンド デバイス
オブジェクト
・address : IPアドレス
・link : ネットワークデバイス
・neighbour : ARPテーブル
※ARPテーブル・・・IPアドレスとMACアドレス(ネットワーク機器に割り当てられたアドレス)の対応表。イーサネット上の通信はIPアドレスではなくMACアドレスで行われる。IPアドレスが最終地点だとするとMACアドレスは最終地点までに経由する途中地点(ネットワーク機器)
・route : ルーティングテーブル
※ルーティングテーブル・・・異なるネットワークにパケットを送信する際の最適経路が設定されたテーブル
オプション
・list/show : 表示する
・add : 設定する
eth1のの情報を表示
まずlinkを使用してeth1のデータリンク層の情報を表示させてみます
※データリンク層・・・どのMACアドレスからどのMACアドレスに伝送するデータなのかを判定する部分。そのデータが破損していないか通信中にチェックが可能
下記の例ではMACアドレスの表示を行っています
[vagrant@centuser ~]$ ip link show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:c0:1b:10 brd ff:ff:ff:ff:ff:ff
IPアドレスの情報を表示させるには上記のlink部分をaddressに差し替えればOKです
[vagrant@centuser ~]$ ip address show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:c0:1b:10 brd ff:ff:ff:ff:ff:ff
inet 192.168.56.101/24 brd 192.168.56.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fec0:1b10/64 scope link
valid_lft forever preferred_lft forever
ARPテーブルやルーティングテーブルの情報も表示させてみます
[vagrant@centuser ~]$ ip route show
default via 10.0.2.2 dev eth0 proto dhcp metric 100
default via 192.168.56.254 dev eth1 proto static metric 101
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15 metric 100
192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.101 metric 101
[vagrant@centuser ~]$ ip neighbour show
10.0.2.200 dev eth0 FAILED
10.0.2.3 dev eth0 lladdr 52:54:00:12:35:03 STALE
192.168.56.1 dev eth1 lladdr 0a:00:27:00:00:02 STALE
10.0.2.2 dev eth0 lladdr 52:54:00:12:35:02 REACHABLE
少し脱線しますが、static routeについて私が少し理解しにくかった部分がありましたので、絵を描いてみました
サーバー1からサーバー3への通信はそれぞれ設定されたデフォルトゲートウェイを通して実現しています
サーバー1からサーバー2の通信に関してはデフォルトゲートウェイが既に設定されている為、static routeを設定しています
サーバー1には192.168.4.0.24に行くには192.168.3.254のゲートウェイを通ってくださいねという設定をし、サーバー2には192.168.3.0/24に行くには192.168.4.254/24のゲートウェイを通ってくださいという設定をし、お互いに通信ができるようになっています
(この理解であってますかね・・・今思いましたがサーバー2とサーバー3の名称逆にすれば良かったですが後の祭りです)
ポート確認
開いているポート=接続を待ち受けているサービスを確認するにはssコマンドを利用します
ssコマンドのオプション
-a : 全てのソケット
-l : 待ち受けている(リッスンしている)ソケット
-t : tcpの情報
-u : udpの情報
-n : 名前解決せずに数字numericのまま表示
-p : PIDやプロセス名も表示(管理者権限)
-4 : IPv4のみ表示
-6 : IPv6のみ表示
[vagrant@centuser ~]$ ss -atl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 128 [::]:ssh [::]:*
lsofコマンドを利用して確認することもできます
こちらは管理者権限で実行します
[vagrant@centuser ~]$ sudo lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
chronyd 881 chrony 6u IPv4 22193 0t0 UDP centuser:323
chronyd 881 chrony 7u IPv6 22194 0t0 UDP localhost:323
sshd 2852 root 5u IPv4 30859 0t0 TCP centuser:ssh->_gateway:52987 (ESTABLISHED)
sshd 2866 vagrant 5u IPv4 30859 0t0 TCP centuser:ssh->_gateway:52987 (ESTABLISHED)
sshd 3007 root 5u IPv4 31834 0t0 TCP *:ssh (LISTEN)
sshd 3007 root 7u IPv6 31836 0t0 TCP *:ssh (LISTEN)
NetworkMa 3436 root 25u IPv4 63685 0t0 UDP centuser:bootpc->_gateway:bootps
sshd 4465 root 5u IPv4 64573 0t0 TCP centuser:ssh->_gateway:60979 (ESTABLISHED)
sshd 4468 vagrant 5u IPv4 64573 0t0 TCP centuser:ssh->_gateway:60979 (ESTABLISHED)
最後に
今回でネットワークは最後となります
何か障害が発生した際に学習した内容が生かせるかや、この内容をパッと思い出すことができるかと考えると難しい部分があるかもしれないですが
体系立てて覚えていって使える知識として脳内に保存していきたいと思います
この記事が気に入ったらサポートをしてみませんか?