見出し画像

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

サーバー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)


最後に


今回でネットワークは最後となります

何か障害が発生した際に学習した内容が生かせるかや、この内容をパッと思い出すことができるかと考えると難しい部分があるかもしれないですが

体系立てて覚えていって使える知識として脳内に保存していきたいと思います



この記事が気に入ったらサポートをしてみませんか?