GNU/Linux >> Linux の 問題 >  >> Linux

5Linuxネットワークのトラブルシューティングコマンド

ネットワーク構成とトラブルシューティングは、システム管理者が定期的に実行する必要のある重要なタスクです。これらのタスクのいくつかは難しい場合があります。ただし、接続の問題に対処する場合は、適切なツールを使用すると、より速く一貫した方法で結果を達成するのに役立ちます。

ipコマンド

ip コマンドは、IPアドレス、ルート、ARPテーブルなど、Linuxシステム上のネットワークオブジェクトを表示および操作するための万能ユーティリティです。これは、ネットワークを構成したり、ネットワーク接続の問題をトラブルシューティングしたりするのに便利なツールです。

ip コマンドは、古い net-toolsで提供されていた多くのコマンドの機能を置き換えます ifconfigなどのパッケージ 、 route 、および arp 、しかしそれは他の多くの機能を追加します。

最も基本的な形式では、 ipを実行するだけです。 アドレス、リンク、ルートなどの操作するネットワークオブジェクトと、アクションを実行するサブコマンドを提供します。サブコマンドを指定しない場合、多くのオブジェクトはデフォルトで showになります そのオブジェクトに関連する情報を表示するサブコマンド。

基本的な構文は次のとおりです。

  ip  [COMMAND]   

たとえば、すべてのネットワークデバイスのリンクステータスを確認するには、 ip link showを実行します。 :

  $ ip link1:lo: 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:002:enp1s0: mtu 1500qdiscfq_codel状態UPモードDEFAULTグループデフォルトqlen1000link / ether 52:54:00:b5:c7:2b brd ff:ff: ff:ff:ff:ff  

show はデフォルトのサブコマンドです。iplinkを実行しても同じ結果を得ることができます。 またはipl (多くのオブジェクトは略語を認識します。)

ip コマンドは多くのオブジェクトを管理します。主なものは次のとおりです。

  • リンク またはl -ネットワークデバイスのステータスを制御します
  • アドレス またはa -デバイスのIPアドレスを操作します
  • ルート またはr -ルーティングテーブルエントリを処理します
  • 隣人 またはn -ARPテーブルエントリを制御します

ip help を実行すると、オブジェクトとコマンドの完全なリストを表示できます。 。

ipコマンドのいくつかの便利な例

ネットワーク統計を表示する-s 人間が読める形式の-h 特定のネットワークインターフェースの場合:

  $ ip -s -h l show dev enp1s02:enp1s0: mtu 1500qdiscfq_codel状態UPモードDEFAULTグループデフォルトqlen1000link / ether 52:54:00:b5: C7:2B BRD FF:FF:FF:FF:FF:FF RX:バイトパケットエラー担体は19.9M 60.9k 0 0 0 0 をcollsnsドロップ:バイトパケットエラーがオーバーランMCAST 820M 303K 0 182K 0 TXがドロップ 

すべてのインターフェースのIPアドレスを表示します:

  $ ip a1:lo: 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 inet127.0.0.1/8スコープホストlovalid_lftforever Preferred_lft forever inet6::1/128スコープホストvalid_lftforeverPreferred_lft forever2:enp1s0: mtu 1500 qlen 1000 link / ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff inet 192.168.122.169/24 brd 192.168.122.255 scope global noprefixroute enp1s0 valid_lft forever Preferred_lft forever inet6 fe80 :: 7ecf:5cc8:5c1f:1009/64スコープリンクnoprefixroute valid_lft forever Preferred_lft forever  

単一のインターフェースのIPアドレスを表示します(例: enp1s0 ) :

  $ ip a show dev enp1s0  

インターフェイスに別のIPアドレスを追加します( sudoが必要です またはroot ユーザー):

  $ sudo ip a change 192.168.122.170 dev enp1s0  

ルーティングテーブルを表示します:

  $ ip routedefault via 192.168.122.1devenp1s0プロト静的メトリック100192.168.122.0/24devenp1s0プロトカーネルスコープリンクsrc192.168.122.169メトリック100 

ルートを追加する(デフォルトゲートウェイ):

  $ sudo ip route add default via 192.168.122.1 dev enp1s0  

ip コマンドは、Linuxシステムでネットワークオプションを構成するための低レベルのインターフェイスです。トラブルシューティングツールとしては便利ですが、ネットワークを設定するのは難しい場合があります。このため、多くのディストリビューションは、同じタスクを実行するためのより高いレベルのインターフェースを提供します。次に、NetworkManager設定ツールnmcliを見てみましょう。 、ネットワークを構成するための統合された方法を提供します。

nmcliツール

Network Managerは、RHELやFedoraを含む多くのLinuxディストリビューションでデフォルトで利用可能なネットワーク構成アプリケーションです。 Network Managerはデーモンとして実行され、その目標は、ネットワーク構成をより簡単かつ自動化するための高レベルのインターフェースを提供することです。

デスクトップLinuxまたはグラフィカルインターフェイスを備えたサーバーのユーザーは、NetworkManagerGUIクライアントを使用してネットワークを構成するのが一般的です。ヘッドレスサーバーを使用している場合、またはシェルスクリプトを介して構成を自動化したい場合は、 nmcli ツールが便利です。

NetworkManagerとnmcli は、多くのネットワークオプションを確認および構成できる汎用性の高い組み合わせです。 nmcliの基本構文 は:

  nmcli  [COMMAND] [ARGUMENTS]   

最も一般的なオブジェクトは次のとおりです。

  • 一般 -NetworkManagerのステータスと権限を表示します
  • ネットワーキング -ネットワークの表示、有効化、無効化
  • ラジオ -WiFiとWWANを表示、有効化、無効化します
  • デバイス -ネットワークデバイスのステータスを表示および操作します
  • 接続 -NetworkManager接続プロファイルを管理します

1つのブログ投稿ですべてのオプションを網羅することは不可能です。 nmcliの使用方法の例をいくつか確認してみましょう 一般的なネットワーク構成タスク用。その他の例については、公式のnmcli-examplesページまたは man nmcli-examplesのmanページを参照してください。 。

ネットワークデバイスのステータスを確認します:

  $ nmcli device statusDEVICE STATE CONNECTION enp1s0 ethernet connected enp1s0enp7s0 ethernet disconnected --lo loopback unmanaged- 

すべての接続プロファイルを表示する:

  $ nmcli con show NAMEUUIDTYPEデバイスenp1s01bb35a4a-ad02-4cad-978a-4a97ea9527cbethernet 

特定の接続に関する詳細を表示します(例: enp1s0 ):

  $ nmcli connection show enp1s0  

接続から特定のパラメータを取得します(IPアドレスやDNSなど):

  $ nmcli -g ip4.address、ip4.dns connection show enp1s0192.168.122.169/24192.168.122.1  

接続パラメータを変更します。たとえば、DHCPから手動接続に切り替えます。

  $ sudo nmcli con mod enp1s0 ipv4.method manual ipv4.addresses 192.168.122.169/24 ipv4.dns 192.168.122.1 ipv4.gateway 192.168.122.1  

接続を再開して、新しいオプションを有効にします。

  $ sudo nmcli con down enp1s0 $ sudo nmcli con up enp1s0  

新しい接続プロファイルを追加します:

  $ sudo nmcli connection add con-name enp7s0 ifname enp7s0 type ethernet ip4 192.168.64.88/24  

nmcli また、接続プロファイルをインタラクティブに編集することもできます。このインターフェースは、タブを介してヘルプとオートコンプリートを提供します キー。利用可能な多くのオプションをガイドします。 nmcli connection edit CONNECTION-NAMEを使用してエディターをアクティブ化します :

  $ sudo nmcli connection edit enp7s0 ===| nmcliインタラクティブ接続エディター|===既存の「802-3-イーサネット」接続の編集:「enp7s0」「タイプ」「ヘルプ」または「?」使用可能なコマンドの場合。「print」と入力してすべての接続プロパティを表示します。「describe[
]」と入力してプロパティの詳細を説明します。次の設定を編集できます:connection、802-3-ethernet(ethernet) 、802-1x、dcb、sriov、ethtool、match、ipv4、ipv6、tc、proxy。 


エディターでは、 setを使用して特定のパラメーターを定義できます。 指図。 タブを使用します 利用可能なすべてのオプションを表示するには、キーのオートコンプリート:

nmcli>セットのIPv4
アドレスは、DHCPタイムアウトDNS-検索失敗する可能性がありroutesdadタイムアウトDHCPホスト名、フラグDNSゲートウェイ法ルートtabledhcp-クライアントID DHCP-IAID DNSをホスト名がDHCP -オプションignore-auto-dnsnever-defaultrouting-rulesdhcp-fqdndhcp-send-hostname dns-priority set 192.168. 

次に、印刷できます 現在の値:

  nmcli> print ipv4.addresses ipv4.addresses:192.168.64.88/24、192.168.64.90/24  

変更が完了したら、保存 それらを接続に接続し、終了 操作を完了するには:

  nmcli> saveConnection'enp7s0'(94170029-5620-4f90-ad78-704b21480b1a)正常に更新されました。nmcli>終了 

最後に、接続を再開して変更を有効にします。

NetworkManagerとnmcli ネットワーク構成の完全なソリューションです。これまで使用したことがない場合は、いくつかの基本的なコマンドから始めて、徐々により複雑な設定に移動してください。特定のタスクを実行するには、マニュアルページと例を参照してください。

次に、名前解決から始めて、ネットワークのトラブルシューティングに役立ついくつかのコマンドを確認しましょう。

nslookupコマンド

接続の問題を管理する場合、DNS名前解決が頭痛の種になることがよくあります。 nslookup ユーティリティは、DNS名の解決を確認およびトラブルシューティングするのに役立ちます。

このコマンドは、 bind-utilsで使用できます。 RHEL8およびFedoraシステムのパッケージ。 dnfを使用してインストールします :

  $ sudo dnf install -y bind-utils  

特定のホストの名前解決をすばやく確認するには、 nslookupを使用します 引数としてホスト名を使用します。このコマンドは、名前解決にデフォルトのDNS構成を使用します:

  $ nslookup redhat.comServer:192.168.122.1Address:192.168.122.1#53権限のない回答:名前:redhat.comAddress:209.132.183.105  

名前解決が失敗した場合は、3番目の引数としてアドレスを指定することにより、解決に代替の名前サーバーを使用できます。

  $ nslookup redhat.com 192.168.0.9Server:192.168.0.9Address:192.168.0.9#53権限のない回答:名前:redhat.comAddress:209.132.183.105  

この情報は、問題が特定のサーバーによるものなのか、それとももっと広範囲なものなのかを特定するのに役立つため、トラブルシューティングに役立ちます。

ホスト名の代わりにIPアドレスを指定することで、逆引きDNSクエリを実行することもできます。

  $ nslookup 209.132.183.105105.183.132.209.in-addr.arpa name=redirect.redhat.com。 

nslookup ユーティリティは、DNS名の解決に関連するネットワークの問題のトラブルシューティングに役立つ便利なツールです。次に、ローカルネットワークソケットのトラブルシューティングを見てみましょう。

ssユーティリティ

ネットワーク接続の問題をトラブルシューティングする際のもう1つの一般的なタスクは、接続が確立されているか、特定のサービスがサーバーで利用可能かどうかを判断することです。

ss コマンド、ソケット統計の略 は、ネットワークソケット情報を表示する便利なツールです。これは、 netstatの最新の代替品です。 同様の機能を提供しますが、いくつかの追加機能が含まれています。

ssを使用する ソケットタイプTCP、UDP、およびUNIX用に確立されたすべてのネットワークソケットの完全なリストを表示するオプションはありません。

 $ ssNetid州のRecv-Q送信-Qローカルアドレス:ポートピアアドレス:Portu_str ESTAB 0 0 * 25812 * 25811u_str ESTAB 0 0 /実行/ systemdに/雑誌/ STDOUT 23604 * 23603 ... TRUNCATED OUTPUTu_str ESTAB 0 0 * 22566 * 22171icmp6 UNCONN 0 0 *:IPv6にICMP *:* ICMP6 UNCONN 0 0 *:IPv6にICMP *:*のTCP ESTAB 0 192.168.122.169:ssh 192.168.122.1:45626  

デフォルトのコマンドは確立されたすべてのネットワーク接続を表示するため、このリストは、1000を超えるエントリがあるビジー状態のマシンでは広範囲に及ぶ可能性があります。トラブルシューティングに役立つように、 ss いくつかのフィルタリングオプションを提供します。

次のコマンドラインパラメータを使用して、特定のソケットタイプのソケット情報を表示できます。 -t TCPの場合、 -u UDPの場合、および -x UNIXの場合。

たとえば、 ss -tを使用してTCPソケット情報を表示します。 :

 $ SS -tStateのRecv-Q送信-Qローカルアドレス:ポートピアアドレス:PortESTAB 0 0 192.168.122.169:ssh 192.168.122.1:45626 

送信元または宛先のホスト名またはIPアドレスでリストをフィルタリングすることもできます。たとえば、宛先IPアドレス192.168.122.1に対して確立された接続のリストは次のとおりです。

 192.168.122.1Netid州のRecv-Q送信-QローカルアドレスDST $ SS:ポートピアアドレス:Porttcp ESTAB 0 0 192.168.122.169:ssh 192.168.122.1:45626 

これらのコマンドは、一般的なネットワーク接続またはネットワーク内の特定のホスト間のトラブルシューティングに役立ちます。 ssのもう1つの実用的なアプリケーション ネットワークサービスが正しいアドレスとポートを使用してローカルマシンでリッスンしているかどうかを確認することです。リスニングソケットを確認するには、オプション -lを使用します :

 $ SS -lNetid州のRecv-Q送信-Qローカルアドレス:ポートピアアドレス:Portnl UNCONN 0 0 rtnl:NetworkManagerを/ 909 * NL UNCONN 0 0 rtnl:システムD-解決/ 1122 * ... TRUNCATED OUTPUTudp UNCONN 0 0 0.0.0.0:hostmon 0.0.0.0:*udp UNCONN 0 0 127.0.0.53%LO:ドメイン0.0.0.0:udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:*udp UNCONN 0 0 [::]:hostmon [::]:* UNCONN 0 UDP 0 [::1]:323 [::]:* LISTEN TCP 0 128 0 .0.0.0:SSH [::]:hostmon:0 128 [::]試聴TCP SSHは0 128 0.0.0.0:hostmon 0.0.0.0:*tcp 0が128 [::]聞く0.0.0.0:*tcp [::]:*  

上記と同じフィルタリングオプションを使用して、特定のソケットタイプをフィルタリングできます。たとえば、すべてのリスニングTCPソケットを一覧表示するには、次のように入力します。

 $ SS -ltStateのRecv-Q送信-Qローカルアドレス:ポートピアアドレス:PortLISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*LISTEN 0 128 0.0.0.0:hostmon 0.0.0.0:LISTEN 0 128 [::]:SSH [::]:LISTEN 0 128 [::]:hostmon [::]: 

sshのようにサービス名を表示する代わりに またはhostmon ss -nを使用してポート番号を表示できます オプション:

 $ SS -ltnStateのRecv-Q送信-Qローカルアドレス:ポートピアアドレス:PortLISTEN 0 128 0.0.0.0:22 0.0.0.0:LISTEN 0 128 0.0.0.0:5355 0.0.0.0:LISTEN 0 128 [::]:22 [::]:LISTEN 0 128 [::]:5355 [::]: 

最後に、もう1つの便利なオプションは -pです。 ユーザー名やプロセスID(PID)などのプロセス関連情報を表示します。一部のサービスでは、 sudoを介して昇格された特権が必要になる場合があります またはrootとして プロセス情報を一覧表示するには:

<前>の $ sudoのSS -tnlpStateのRecv-Q送信-Qローカルアドレス:ポートピアアドレス:PortLISTEN 0 128 0.0.0.0:22 0.0.0.0:*ユーザー:(( "SSHD"、PID =919、FD =5))が0 128 0.0.0.0:5355 0.0.0.0:*ユーザLISTEN:(( "システムD-解決" を、PID =1122 FD =13))0 128 LISTEN [::]:22 [::]: * users:(( "sshd"、pid =919、fd =7))LISTEN 0 128 [::]:5355 e:=15-=" ))

ss toolは、ネットワークのトラブルシューティングタスクに不可欠なsysadminツールボックスのコマンドです。次に、 tracepathを見てみましょう。 ホスト間のネットワーク接続を追跡します。

tracepathコマンド

tracepath コマンドは、ローカルホストとリモートホスト間のネットワーク接続パスを表示し、それらの間のトラフィックのルーティングに使用されるすべてのルーターを識別するネットワークトラブルシューティングツールです。

リモートホストのネットワークサービスに接続できない場合は、 tracepath 問題がどこにあるかを判断するのに役立ちます。

tracepath tracerouteの代わりになります 、同様の機能を提供します。主な違いは、 tracepath トレースにICMPプロトコルの代わりにランダムUDPポートを使用するため、実行に昇格された特権は必要ありません。

基本的な使用法として、宛先ホストのホスト名またはIPアドレスを指定します。オプション-nを提供することもできます 名前の代わりにルーターのIPアドレスを表示するには:

  $ tracepathの-n sat65server 1?:[LOCALHOST] PMTU 1500 1:192.168.122.1 0.415ms 1:192.168.122.1 0.299ms 2:192.168.10.10 0.904ms 3:192.168.88.1 1.127ms 4:192.168 .0.95 2.020ms再開:pmtu 1500  

tracepathの場合 ネットワークホップに接続できません。応答なしと表示されます。 。デフォルトでは、試行される最大ホップ数は30であり、通常はこれで十分です。オプション-mで変更できます 。

特定のホップの後に応答を受け取らないとします。これは、トラブルシューティングタスクの次に進むべき場所の良い指標です。 tracepath いくつかの理由でトラフィックがブロックされる可能性があるため、情報は明確ではありません。ただし、問題を絞り込み、解決策に集中するのに役立ちます。

セキュリティ上の理由から、インターネット上の多くのルーターはトラフィックをブロックするため、 tracepath インターネットサービスとの接続を追跡するのにそれほど有用ではないかもしれません。ローカルネットワークのトラブルシューティングには引き続き役立ちます。

次は何ですか?

この記事では、Linuxシステムの5つの重要なネットワーク構成およびトラブルシューティングツールについて説明しました。これらのツールは強力であり、1つの投稿でカバーするのが難しい多くのオプションを提供します。それらをチェックして、ドキュメントとマニュアルページを見て、ワークフローに組み込む方法を確認することをお勧めします。

tcpdump など、他にも便利なLinuxネットワークツールがあります。 、 nmap 、およびFirewall-cmd 。これらのツールは、他のEnableSysadminの記事で説明されています。

[ネットワークの管理が難しいですか? RedHatの無料の本であるNetworkAutomationforEveryoneをチェックしてください。 ]


Linux
  1. Linuxでのハードウェア問題のトラブルシューティング

  2. 私のお気に入りの8つの実用的なLinuxコマンド

  3. Linuxネットワークのトラブルシューティングとデバッグ?

  1. AからZのLinuxコマンド

  2. Linuxの検索コマンド

  3. Linuxエコーコマンド

  1. 2020年にLinuxを使用する5つの理由

  2. 5Linuxルーキーの間違い

  3. ネットワーク診断用の10のLinuxコマンド