システムが問題に遭遇する場合がありますが、そのような場合でも問題を解決し、正常かつ機能する状態に復元する方法を知っておく必要があります。このセクションでは、Linuxシステム管理者が持つべき基本的なネットワークトラブルシューティングスキルに焦点を当てます。
ネットワークトラブルシューティングの基本的な理解
ほとんどの場合、ネットワーク管理者とシステム管理者との間には大きな隔たりがあります。ネットワークの可視性が不十分なシステム管理者は通常、ネットワークのダウンタイムの原因をネットワーク管理者に責任を押し付け、一方、サーバーの知識が不足しているネットワーク管理者は、しばしばシステム管理者を端末デバイスの故障の原因として責めます。ただし、責任転嫁は問題の解決に役立ちません。職場環境では、これが同僚同士の関係を敵対的にさせる可能性があります。
システム管理者として、ネットワークトラブルシューティングの基本的な理解を持つことは、問題を迅速に解決し、一体となった働きやすい環境を促進するのに役立ちます。そのため、私たちはこのセクションをまとめ、ネットワーク関連の問題の診断時に役立ついくつかの基本的なネットワークトラブルシューティングのヒントを強調しています。
A Recap of the TCP / IP Model
LFCAシリーズの前回のトピックでは、コンピュータ内のデータの送信と各レイヤーに見られるプロトコルを示すTCP/IP概念モデルを見てきました。

もう1つ同じくらい重要な概念モデルは、OSIモデル(Open Systems Interconnection)モデルです。これは、ネットワーキングシステムとコンピューティング機能を各レイヤーに分解する7層のTCP/IPフレームワークです。
OSIモデルでは、これらの機能が次のようにレイヤーに分割されます。最下位から始まり物理層、データリンク層、ネットワーク層、トランスポート層、セッション層、プレゼンテーション層、そして最上位にアプリケーション層があります。

OSIモデルについて話す際にOSIモデルへの言及なしにネットワークのトラブルシューティングについては不可能です。このため、各レイヤーを詳しく説明し、各レイヤーで使用されるさまざまなネットワークプロトコルとそれに関連する障害のトラブルシューティング方法を調べます。
レイヤー1:物理層
これはおそらく最も見落とされがちなレイヤーの1つですが、通信が行われるためには最も重要なレイヤーの1つです。物理層には、ネットワークカード、イーサネットケーブル、光ファイバーなどの物理的なPCネットワーキングコンポーネントが含まれます。ほとんどの問題はここから始まり、主に次のような理由によって引き起こされます:
- ネットワーク/イーサネットケーブルを抜いた
- ネットワーク/イーサネットケーブルが損傷しています
- 欠損または損傷したネットワークカード
このレイヤーでは、心に浮かぶ質問は次のとおりです:
- 「ネットワークケーブルは差し込まれていますか?」
- 「物理的なネットワークリンクはアップしていますか?」
- 「IPアドレスを持っていますか?」
- 「デフォルトゲートウェイIPにpingできますか?」
- 「DNSサーバーにpingできますか?」
ネットワークインターフェースの状態を確認するには、ipコマンドを実行してください:
$ ip link show

上記の出力から、2つのインターフェースがあることがわかります。最初のインターフェース – lo
– はループバックアドレスであり、通常使用されません。ネットワークとインターネットへの接続性を提供するアクティブなネットワークインターフェースはenp0s3
インターフェースです。出力からインターフェースの状態がUPであることがわかります。
ネットワークインターフェースがダウンしている場合、状態DOWNの出力が表示されます。

その場合は、次のコマンドを使用してインターフェースをアップにできます:
$ sudo ip link set enp0s3 up

または、以下に示すifconfigコマンドを実行することもできます。
$ sudo ifconfig enp0s3 up $ ip link show

ルーターまたはDHCPサーバーからIPアドレスを取得したことを確認するには、ifconfigコマンドを実行してください。
$ ifconfig

IPv4アドレスは、inetパラメータによって示される接頭辞で表されます。例えば、このシステムのIPアドレスは192.168.2.104で、サブネットまたはネットマスクは255.255.255.0です。
$ ifconfig

また、システムのIPアドレスを確認するには、次のようにip addressコマンドを実行することもできます。
$ ip address
デフォルトゲートウェイのIPアドレスを確認するには、次のコマンドを実行してください:
$ ip route | grep default
デフォルトゲートウェイのIPアドレスは、ほとんどの場合、DHCPサーバーまたはルーターとして示されます。IPネットワークでは、デフォルトゲートウェイにpingを送信できるはずです。

使用しているDNSサーバーを確認するには、systemdシステムで次のコマンドを実行してください。
$ systemd-resolve --status

A better way to check the DNS servers in use is to run the nmcli command shown
$ ( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS

ご覧の通り、ネットワークトラブルシューティングのかなりの部分がここで行われます。
レイヤー2:データリンク層
基本的に、データリンク層はネットワーク上のデータ形式を決定します。ここで、ホスト間のデータフレームの通信が行われます。この層で主要なプロトコルはARP(アドレス解決プロトコル)です。
ARPはリンク層アドレスを発見し、レイヤー3のIPv4アドレスをMACアドレスにマッピングする責任があります。通常、ホストがデフォルトゲートウェイに接触する場合、ホストはIPアドレスを持っていますが、MACアドレスは持っていません。
ARPプロトコルは、レイヤー3とレイヤー2の間を架ける橋で、レイヤー3上の32ビットIPv4アドレスをレイヤー2上の48ビットMACアドレスに翻訳し、その逆も行います。
PCがLANネットワークに参加したとき、ルーター(デフォルトゲートウェイ)はそれに識別用のIPアドレスを割り当てます。もう一つのホストがPCに送信されるデータパケットをデフォルトゲートウェイに届けるために、ルーターはARPを要求し、IPアドレスに合わせたMACアドレスを探し出します。
各システムには独自のARPテーブルがあります。ARPテーブルを確認するには、以下のコマンドを実行します。
$ ip neighbor show

お気づきのように、ルーターのMACアドレスが記録されています。解決問題のために、コマンドが出力を返さないことに注意してください。
レイヤー3: ネットワーク/インターネットレイヤー
これは、システム管理者が熟悉しているIPv4アドレスを独自に操作するレイヤーです。ICMPやARPなど、私たちがカバーしたプロトコルと他のもの、RIP(路由情報プロトコル)を含みます。
一般的な問題には、デバイスの不正設定や、ルーターやスイッチなどのネットワークデバイスに関する問題があります。トラブルシュootingを始めるのに適切な場所は、システムがIPアドレスを選択したかどうかを確認する場所です。
$ ifconfig

pingコマンドを使用することで、インターネット接続を確認することができます。これは、ICMPechoパケットを、GoogleのDNSに送信します。-c
フラグは、送信されるパケットの数を示します。
$ ping 8.8.8.8 -c 4

出力は、GoogleのDNSからの肯定の返答を示し、0パケットの損失を示します。不十分な接続を持っている場合、tracerouteコマンドを以下のように使用して、パケットが失われているポイントを確認することができます。
$ traceroute google.com

星号(*)は、パケットが失われているかロストしているポイントを示します。
nslookupコマンドは、DNSを問い合わせて、ドメインやホスト名に割り当てられたIPアドレスを取得します。これは、前向きDNS查找と呼ばれます。
たとえば。
$ nslookup google.com
nslookupコマンドは、google.comドメインに割り当てられたIPアドレスを揭露します。
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: google.com Address: 142.250.192.14 Name: google.com Address: 2404:6800:4009:828::200e
digコマンドは、ドメイン名に割り当てられたDNSサーバーについての質問を行うためのものです。たとえば、DNS名サーバーを質問するには以下のようにします。
$ dig google.com
阶层4: 伝達層
トランスポート層は、TCPとUDPプロトコルを使用してデータの送信を処理します。おさらいですが、TCPは接続指向型のプロトコルであり、一方UDPは接続レス型です。実行中のアプリケーションは、ポートとIPアドレスで構成されるソケットでリスンします。
アプリケーションが必要とする可能性のあるブロックされたTCPポートを含む一般的な問題が発生することがあります。ウェブサーバーの実行状態を確認したい場合は、netstatまたはssコマンドを使用して、ウェブサービスがポート80でリスンしているかどうかを確認してください。
$ sudo netstat -pnltu | grep 80 OR $ ss -pnltu | grep 80

システム内で実行中のサービスがポートを使用している場合、別のサービスがそのポートを使用するように設定する必要がある場合があります。
まだ問題が解決しない場合は、ファイアウォールを確認し、興味のあるポートがブロックされていないか確認してください。
トラブルシューティングのほとんどは、これらの4つの層で行われます。セッション、プレゼンテーション、およびアプリケーション層では、トラブルシューティングはほとんど行われません。これは、これらの層がネットワークの機能においてよりアクティブな役割を果たしていないためです。ただし、これらの層で何が起こるかについて簡単に概要を把握しましょう。
レイヤー5:セッション層
セッション層は、セッションと呼ばれる通信チャネルを開き、データの送信中にそれらが開いたままであることを確保します。また、通信が終了したらそれらを閉じます。
6层次:表示層
表示層は、アプリケーション層が使用するデータを合成します。この層では、デバイスがデータを暗号化、エンコード、や압縮する方法を決め、远くの端から正しく受信できるようにします。
7层次:アプリケーション層
最後に、終端ユーザーに最も近いアプリケーション層を考えます。この層には、HTTP、HTTPS、POP3、IMAP、DNS、RDP、SSH、SNMP、NTPなどの多样的なプロトコルがあります。
結論
Linuxシステムのトラブルシューティング時に、OSIモデルを基に阶层の取り組みをすることは、最下位層から始めて、何がおかしいのか理解し、問題を狭めるのに非常に役立ちます。
Source:
https://www.tecmint.com/basic-network-troubleshooting-tips/