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

17初心者向けの最高のLinuxネットワークおよびトラブルシューティングコマンド

ネットワーク構成、診断、および一般的なLinuxのトラブルシューティング システム管理の重要な部分。 Linuxシステムを使用する開発者でも、Linuxネットワークコマンドに関する知識 追加の利点です。

具体的には、DevOpsエンジニアになるか、SREに参加する場合は、すべてのLinuxトラブルシューティングコマンドを知っておくことが不可欠です。 彼らはあなたの日々の活動の一部になるからです。

この投稿では、重要なLinuxネットワークおよびトラブルシューティングコマンドについて説明します。 Linuxシステムでネイティブに利用可能です。

Linuxのネットワークおよびトラブルシューティングコマンドとして最適なものは何ですか?

以下は、ネイティブで使用可能なトラブルシューティングコマンドのリストです。

コマンド 説明
hostname サーバーのホスト名を確認して設定します。
host ホストDNSの詳細を取得するには
ping ICMPプロトコルを使用してリモートサーバーに到達できるかどうかを確認します。パケットの往復時間も表示されます。
curl データの転送に使用されるクロスプラットフォームユーティリティ。いくつかのネットワークの問題のトラブルシューティングに使用できます。
wget ファイルをダウンロードするためのユーティリティ。プロキシ接続と接続のトラブルシューティングに使用できます。
ip ifconfigの代わり 。システムネットワークインターフェースに関する情報を構成および取得するために使用できます
arp arpキャッシュを表示および管理するためのユーティリティ。
ss/netstat 主にポートとUnixソケットの接続とPIDを確認するために使用されます。
tracerout e このユーティリティはICMPプロトコルを使用して、宛先サーバーの読み取りに関係するホップを検出します。また、ホップ間の時間も表示されます。
mtr mtrはpingの組み合わせです およびtraceroute 。また、中間ホストや応答性などの追加情報も提供します。
dig ドメイン名に関連付けられたDNSレコードを取得するのに役立ちます。
nslookup digに似たコマンド。
nc TCP/UDPソケットをデバッグするためのユーティリティ。
telnet ポートのリモート接続をテストするために使用できます
route すべてのルートテーブル情報を取得するのに役立ちます
tcpdump このユーティリティは、ネットワークパケットをキャプチャし、ネットワークの問題を分析するのに役立ちます。
lsof 開いているすべてのファイルとそれを開いたプロセス情報を一覧表示します

各コマンドを理解し、それを使用してLinuxのトラブルシューティングを行う方法を見てみましょう。

重要な注意: この投稿で言及されているすべてのコマンド/ユーティリティには、多くのオプションとフラグがあります。すべてのコマンドにはマニュアルページがあり、それを使用して、ユースケースに必要なフラグとオプションを識別できます。たとえば、ipの場合 コマンドの場合は、man ipと入力するだけです。 ターミナルで、そのコマンドに関するすべての詳細を取得します。

1。ホスト名

Hostnameコマンドは、マシンのホスト名を表示し、ホスト名を設定するために使用されます。

hostname

hostnameコマンドを使用して、マシンの新しいホスト名を設定できます。たとえば、

sudo hostname temp.com

hostname」を使用してホスト名を設定した場合 」コマンドを実行すると、マシンを再起動すると、ホスト名がホスト名ファイルで指定された名前に変更されます(例:/ etc / hostname)。

したがって、ホスト名を永続的に変更する場合は、/etc/hostsを使用できます。 サーバー上に存在するファイルまたは関連するホスト名ファイル。

  1. Ubuntuマシンの場合、 /etc/hostnameで変更できます ファイル。
  2. RHEL、CentOS、Fedoraの場合は、 /etc/sysconfig/networkで変更できます。 ファイル。

2。ホスト

ホストコマンドは、IPまたはDNS名の逆引き参照用です。

たとえば、IPが接続されたDNSを検索する場合は、次のようにhostコマンドを使用できます。

host 8.8.8.8

逆の操作を行って、ドメイン名に関連付けられているIPアドレスを見つけることもできます。たとえば、

host devopscube.com

3。 ping

pingネットワークユーティリティは、リモートサーバーが到達可能かどうかを確認するために使用されます。これは主に、接続の確認とネットワークのトラブルシューティングに使用されます。

以下の詳細を提供します。

  1. 送受信されたバイト数
  2. パケットの送信、受信、および紛失
  3. おおよそのラウンドトリップ時間(ミリ秒単位)

Pingコマンドの構文は次のとおりです。

ping <IP or DNS>

たとえば、

ping devopscube.com

IPアドレスにpingを送信するには

ping 8.8.8.8

ctrl + cを使用せずにping出力を制限する場合は、以下に示すような番号で「-c」フラグを使用できます。

ping -c 1 devopscube.com

4。カール

Curlユーティリティは、主にサーバーとの間でデータを転送するために使用されます。ただし、ネットワークのトラブルシューティングには使用できます。

ネットワークのトラブルシューティングについては、curl DICTなどのプロトコルをサポートします 、FILEFTPFTPSGOPHERHTTPHTTPSIMAPIMAPSLDAPLDAPSMQTTPOP3POP3SRTMPRTMPSRTSPSCPSFTPSMBSMBSSMTPSMTPSTELNET およびTFTP

たとえば、curl telnetを使用してポート22の接続を確認できます。

curl -v telnet://192.168.33.10:22

curlを使用してFTP接続を確認できます。

curl ftp://ftptest.net 

Webサーバー接続のトラブルシューティングもできます。

curl http://devopscube.com -I

5。 wget

wget コマンドは主にWebページをフェッチするために使用されます。

wgetを使用できます ネットワークの問題のトラブルシューティングにも使用できます。

たとえば、wgetを使用してプロキシサーバー接続のトラブルシューティングを行うことができます。

wget -e use_proxy=yes http_proxy=<proxy_host:port> http://externalsite.com

ファイルを取得することで、Webサイトが稼働しているかどうかを確認できます。

wget www.google.com

6。 ip(ifconfig)

ip コマンドは、ルートとネットワークインターフェイスを表示および操作するために使用されます。 ip コマンドは、 ifconfigの新しいバージョンです。 。 ifconfigはすべてのシステムで機能しますが、ifconfigの代わりにipコマンドを使用することをお勧めします。

ipの例をいくつか見てみましょう。 コマンド。

ネットワークデバイスと構成を表示する
ip addr

このコマンドをパイプおよびgrepで使用すると、eth0インターフェイスのIPアドレスなどのより詳細な出力を取得できます。 IPを動的にフェッチする必要がある自動化ツールで作業する場合に非常に便利です。

次のコマンドは、eth0のIPアドレスを取得します ネットワークインターフェース。

ip a | grep eth0  | grep "inet" | awk -F" " '{print $2}'

特定のインターフェースの詳細を取得する

ip a show eth0

ルーティングテーブルを一覧表示できます。

ip route
ip route list

7。 arp

ARP(アドレス解決プロトコル )は、システムが相互作用したローカルネットワークのIPアドレスとMACアドレスのキャッシュテーブルを示しています。

arp

出力例

[email protected]:~$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.2.3                 ether   52:54:00:12:35:03   C                     eth0
192.168.33.1             ether   0a:00:27:00:00:00   C                     eth1
10.0.2.2                 ether   52:54:00:12:35:02   C                     eth0

8。 ss(netstat)

ss コマンドはnetstatの代わりになります 。 netstatは引き続き使用できます すべてのシステムでコマンド。

ssを使用する コマンドを使用すると、netstatよりも多くの情報を取得できます 指図。 ssコマンドは、カーネルユーザースペースからすべての情報を取得するため、高速です。

それでは、ssのいくつかの使用法を見てみましょう。 コマンド。

すべての接続を一覧表示する

ss 」コマンドは、マシン上のすべてのTCP、UDP、およびUnixソケット接続を一覧表示します。

[email protected]:~$ ss
Netid  State      Recv-Q Send-Q   Local Address:Port       Peer Address:Port
u_str  ESTAB      0      0                    * 7594                  * 0
u_str  ESTAB      0      0      @/com/ubuntu/upstart 7605                  * 0  
u_str  ESTAB      0      0                    * 29701                 * 0
u_str  ESTAB      0      0      /var/run/dbus/system_bus_socket 29702                 * 0
tcp    ESTAB      0      400      172.31.18.184:ssh         1.22.167.31:61808

ssの出力 コマンドが大きくなるので、” ss | less 」コマンドを使用して、出力をスクロール可能にします。

TCP、UDP、およびUnixソケットの除外

TCP、UDP、またはUNIXソケットの詳細を除外する場合は、「ss」コマンドで「-t」、「-u」、および「-x」フラグを使用します。特定のポートへの確立されたすべての接続が表示されます。以下に示すように、特定のフラグとともに「a」を使用して、接続されているポートとリスニングポートの両方を一覧表示する場合。

ss -ta
ss -ua
ss -xa
すべてのリスニングポートを一覧表示

すべてのリスニングポートを一覧表示するには、ssコマンドで「-l」フラグを使用します。特定のTCP、UDP、またはUNIXソケットを一覧表示するには、以下に示すように、「-t」、「-u」、および「-x」フラグと「-l」を使用します。

[email protected]:~$ ss -lt
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port
LISTEN     0      128                     *:ssh                      *:*
LISTEN     0      50                     :::http-alt                 :::*
LISTEN     0      50                     :::55857                   :::*
LISTEN     0      128                    :::ssh                     :::*
LISTEN     0      50                     :::53285                   :::*
[email protected]:~$
確立されたすべてのリスト

確立されたすべてのポートを一覧表示するには、state establishedを使用します 以下に示すようにフラグを立てます。

ss -t -r state established

リスニング状態のすべてのソケットを一覧表示するには、

ss -t -r state listening

9。 traceroute

tracerouteがない場合 システムまたはサーバーのユーティリティ。ネイティブリポジトリからインストールできます。

traceroute ネットワークトラブルシューティングユーティリティです。 tracerouteを使用すると、特定のパケットが宛先に到達するために必要なホップ数を見つけることができます。

たとえば、

traceroute google.com

これが出力です。

traceroute to google.com (173.194.33.163), 30 hops max, 60 byte packets
 1  ec2-50-112-0-84.us-west-2.compute.amazonaws.com (50.112.0.84)  1.974 ms  1.895 ms  1.899 ms
 2  100.64.1.247 (100.64.1.247)  1.414 ms 100.64.1.137 (100.64.1.137)  1.127 ms 100.64.1.97 (100.64.1.97)  1.313 ms
 3  100.64.0.198 (100.64.0.198)  1.443 ms 100.64.0.62 (100.64.0.62)  2.160 ms 100.64.0.60 (100.64.0.60)  2.116 ms
10  66.249.94.214 (66.249.94.214)  6.313 ms  7.104 ms 209.85.249.34 (209.85.249.34)  5.986 ms
11  209.85.244.65 (209.85.244.65)  6.157 ms  6.341 ms  6.574 m.
.
12  sea09s18-in-f3.1e100.net (173.194.33.163)  6.302 ms  6.517 ms  6.071 ms
[email protected]:~$

上記の出力は、devopscube AWS ec2サーバーからgoogle.comに到達するためのホップカウント(12)を示しています。

10。 mtr

mtr ユーティリティは、ネットワークのボトルネックをトラブルシューティングするためのネットワーク診断ツールです。両方のpingの機能を組み合わせています およびtraceroute

たとえば、次のコマンドはtracerouteを示しています。 リアルタイムで出力します。

mtr google.com

これが出力です。

mtrレポート

–reportフラグを使用してレポートを生成できます。 mtrレポートを実行すると、宛先に10パケットが送信され、レポートが作成されます。

mtr -n --report google.com

11。掘る

DNSルックアップに関連するタスクがある場合は、「dig」を使用できます。 」コマンドを使用して、DNSネームサーバーを照会します。

すべてのDNSレコードをdigで取得

次のコマンドは、twitter.comのすべてのDNSレコードとTTL情報を返します

dig twiter.com ANY

+shortを使用する 詳細なしで出力を取得します。

dig google.com ANY +short

digを使用して特定のDNSレコードを取得する

たとえば、A recordを取得する場合 特定のドメイン名については、digコマンドを使用できます。 +short 詳細なしで情報を提供します

dig www.google.com A +short

同様に、次のコマンドを使用して、他のレコード情報を個別に取得できます。

dig google.com CNAME +short
dig google.com MX +short
dig google.com TXT +short
dig google.com NS +short

digを使用した逆引きDNSルックアップ

次のコマンドを使用して、digで逆DNSルックアップを実行できます。 8.8.8.8を置き換えます 必要なIPを使用

dig -x 8.8.8.8

12。 nslookup

Nslookup (Name Server Lookup)ユーティリティは、DNSエントリをチェックするために使用されます。 digコマンドに似ています。

ドメインのDNSレコードを確認するには、次のコマンドを使用できます。

nslookup google.com

IPアドレスを使用して逆引き参照を実行することもできます。

nslookup 8.8.8.8

ドメイン名のすべてのDNSレコードを取得するには、次を使用できます。

nslookup -type=any google.com

同様に、mxのようなレコードをクエリできます 、soa など

13。 nc(netcat)

nc (netcat)コマンドは、ネットワークコマンドのスイス軍として知られています。

ncを使用する 、特定のポートで実行されているサービスの接続を確認できます。

たとえば、sshかどうかを確認するには ポートが開いている場合は、次のコマンドを使用できます。

nc -v -n 192.168.33.10 22

netcat TCP/UDPを介したデータ転送やポートスキャンにも使用できます。

クラウド環境では、ポートスキャンは推奨されません。ご使用の環境でポートスキャン操作を実行するようにクラウドプロバイダーにリクエストする必要があります。

14。 telnet

telnetコマンドは、ポートでのTCP接続のトラブルシューティングに使用されます。

telnetを使用してポート接続を確認するには、次のコマンドを使用します。

telnet 10.4.5.5 22

15。ルート

route 」コマンドは、システムのルートテーブルの詳細を取得し、それを操作するために使用されます。 routeコマンドの例をいくつか見てみましょう。

すべてのルートを一覧表示する

route」を実行します 」コマンドを引数なしで指定して、システムまたはサーバー内の既存のすべてのルートを一覧表示します。

[email protected]:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         ip-172-31-16-1. 0.0.0.0         UG    0      0        0 eth0
172.17.0.0      *               255.255.0.0     U     0      0        0 docker0
172.31.16.0     *               255.255.240.0   U     0      0        0 eth0
[email protected]:~$

ホスト名なしで完全な出力を数値形式で取得する場合は、routeコマンドで「-n」フラグを使用できます。

[email protected]:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.31.16.1     0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.31.16.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0
[email protected]:~$

16。 tcpdump

tcpdump コマンドは主にネットワークトラフィックのトラブルシューティングに使用されます。

注: tcpdumpの出力を分析するには コマンドにはある程度の学習が必要なため、それを説明することはこの記事の範囲外です。

tcpdump コマンドは、システムのネットワークインターフェイスで機能します。したがって、コマンドを実行するには管理者権限を使用する必要があります。

すべてのネットワークインターフェースを一覧表示

次のコマンドを使用して、すべてのインターフェイスを一覧表示します。

sudo  tcpdump --list-interfaces
特定のインターフェースでパケットをキャプチャ

特定のインターフェースでパケットのダンプを取得するには、次のコマンドを使用できます。

注: ctrl + c を押します パケットのキャプチャを停止します。

sudo tcpdump -i eth0

パケットキャプチャを制限するには、-cを使用できます 番号の付いたフラグ。

たとえば、

sudo tcpdump -i eth0 -c 10
すべてのインターフェースでパケットをキャプチャ

すべてのインターフェースでパケットをキャプチャするには、anyを使用します 以下に示すようにフラグを立てます。

sudo tcpdump -i any

17。 lsof

lsof 日常のLinuxトラブルシューティングで使用されるコマンドです。このコマンドは、Linuxシステムを使用するすべての人にとって同様に重要です。

開いているすべてのファイルを一覧表示するには、lsofを実行します コマンド。

lsof

開発者とDevOpsエンジニアが直面する一般的なエラーの1つは、「バインドに失敗したエラー:アドレスはすでに使用されています 「。次のコマンドを使用して、ポートに関連付けられているプロセスIDを見つけることができます。プロセスを強制終了してポートを解放できます。

lsof -i :8080

サードパーティネットワークトラブルシューティングユーティリティ

サードパーティのソリューションから利用できるネットワークトラブルシューティングコマンドラインユーティリティは他にもあります。

それらを個別にインストールし、トラブルシューティングの目的で使用する必要があります。セキュリティコンプライアンス上の理由により、すべての組織がそれを許可するわけではありません。ただし、サードパーティのツールを使用するオプションが必要な場合は、それらを調べることができます。

結論

この記事では、ネットワークのトラブルシューティングと構成のための重要なLinuxコマンドラインユーティリティについて説明しました。

システム管理、DevOps、またはSREの役割を開始する場合は、作業中のプロジェクトをサポートするためにこれらのユーティリティについて学ぶことが不可欠です。

各ユーティリティには多くの機能があり、要件を満たすためにさらに探索することができます。

重要なコマンドを見逃したと思われる場合は、コメントセクションでお知らせください。

また、シェルスクリプトを学習したい場合は、シェルスクリプトの学習方法に関するガイドを確認してください。開発者の方は、すべての開発者が知っておくべきLinuxコマンドに関するガイドをご覧ください。


Linux
  1. 初心者と専門家のための10のLinuxコマンドチュートリアル

  2. Linuxコマンド-概要と例

  3. 初心者向けの基本的な Linux コマンドのトップ

  1. 初心者向けのLinuxdirコマンド(10例)

  2. 初心者向けのLinuxホスト名コマンドチュートリアル(5つの例)

  3. Linuxコマンド:jobs、bg、およびfg

  1. 初心者向けのLinuxrmコマンドの説明(8例)

  2. 初心者向けのLinuxlnコマンドチュートリアル(5つの例)

  3. 初心者向けのLinuxnlコマンドチュートリアル(7つの例)