Linuxでのネットワークの問題のトラブルシューティング

Linuxでのネットワークの問題のトラブルシューティング

この記事では、tcpdumpコマンドを使用してLinuxのネットワークの問題をトラブルシューティングする方法について説明します。

tcpdumpは、柔軟で強力なコマンドラインパケットアナライザです。libpcapは、ネットワークトラフィックをキャプチャするためのポータブルC / C ++ライブラリです。多くのオプションとフィルターを含む強力で用途の広いツールであるtcpdumpは、さまざまなケースで使用できます。これはコマンドラインツールであるため、GUIを使用できないリモートサーバーまたはデバイスで実行して、後で分析できるデータを収集するのが理想的です。また、バックグラウンドで起動することも、cronなどのツールを使用してスケジュールされたジョブとして起動することもできます。

インストールプロセスを始めましょう。

1.tcpdumpをインストールします

tcpdumpがまだシステムにインストールされていない場合は、次のコマンドを使用してインストールできます。

CentOSまたはRedHat Enterprise Linuxベースのシステムの場合:

# dnf install tcpdump -y

Ubuntuベースのシステムの場合:

# apt-get install tcpdump -y

2.インストールを確認します

インストールを確認するには、次のコマンドを使用します。

# which tcpdump

出力:

/usr/sbin/tcpdump

tcpdumpでパケットをキャプチャする

パケットをキャプチャする前に、次のコマンドを使用してネットワークインターフェイスを確認してください。

# tcpdump -D

使用可能なすべてのネットワークインターフェイスが表示されます。

それでは、次のコマンドを使用していくつかのパケットのキャプチャを開始しましょう。

# tcpdump --interface any

Tcpdumpは、割り込み信号を受信するまでパケットをキャプチャし続けます。Ctrl + Cを押すと、キャプチャを中断できます。キャプチャされるパケットの数を制限してtcpdumpを停止するには、-c(カウント用)オプションを使用します。

# tcpdump -i any -c 10

名前解決を無効にする

ネットワークの問題のトラブルシューティングでは、多くの場合、IPアドレスとポート番号を使用する方が簡単です。オプション-nを使用して名前解決を無効にし、-nnを指定してポート解決を無効にします。

# tcpdump -i any -c5 -nn

上記のように、コマンドは出力をキャプチャし、IPアドレスとポート番号を表示します。

パケットのフィルタリング

tcpdumpの最も強力な機能の1つは、送信元と宛先のIPアドレス、ポート、プロトコルなどのさまざまなパラメーターを使用して、キャプチャされたパケットをフィルタリングする機能です。最も一般的なものをいくつか見てみましょう。

ICMPパケットのみをキャプチャするには、次のコマンドを使用します。

# tcpdump -i any -c10 icmp

ホストフィルターを使用して、キャプチャを特定のホストに関連するパケットのみに制限します。

# tcpdump -i any -c5 -nn host 192.168.0.12

上記のコマンドは、ホスト192.168.0.12との間のパケットのみをキャプチャして表示します。

目的のサービスまたはポートに基づいてパケットをフィルタリングするには、ポートフィルタを使用します。たとえば、次のコマンドを使用して、Web(HTTP)サービスに関連するパケットをキャプチャします。

# tcpdump -i any -c10 -nn port 80

送信元または宛先のIPアドレスまたはホスト名に基づいてパケットをフィルタリングします。たとえば、ホスト192.168.0.12からパケットをキャプチャするには、次のようにします。

# tcpdump -i any -c10 -nn src 192.168.0.12

キャプチャをファイルに保存する

パケットを画面に表示する代わりにファイルに保存するには、オプション-w(書き込み用)を使用します。

# tcpdump -i any -c10 -nn -w webserver.pcap port 80

上記のコマンドを使用すると、たとえば、夜間にバッチモードでパケットをキャプチャし、午前中に結果を確認できます。また、リアルタイムキャプチャの実行速度が速すぎる可能性があるため、分析するパケットが多すぎる場合にも役立ちます。

その他のコマンド例

非ローカルホストが関与する各TCP会話の開始パケットと終了パケット(SYNパケットとFINパケット)を出力します。

# tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

フラグRSTとACKの両方が設定されたTCPパケットを印刷します。(つまり、フラグフィールドでRSTフラグとACKフラグのみを選択し、結果が「RST​​とACKの両方が設定されている」場合は一致します)

# tcpdump 'tcp[tcpflags] & (tcp-rst|tcp-ack) == (tcp-rst|tcp-ack)'

ポート80との間で送受信されるすべてのIPv4HTTPパケットを印刷します。つまり、データを含むパケットのみを印刷します。たとえば、SYNパケットとFINパケット、およびACKのみのパケットは印刷しません。(IPv6は、読者の演習として残されています。)

# tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<2)) -="" ((tcp[12]&0xf0)="">>2)) != 0)'

ゲートウェイスナップを介して送信された576バイトより長いIPパケットを印刷するには:

# tcpdump 'gateway snup and ip[2:2] > 576'

イーサネットブロードキャストまたはマルチキャストを介して送信されなかったIPブロードキャストまたはマルチキャストパケットを印刷するには、次の手順に従います。

# tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

エコー要求/応答ではない(つまり、pingパケットではない)すべてのICMPパケットを印刷するには:

# tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'

次のコマンドを使用してmanページを確認します。

# man tcpdump

この記事では、tcpumpコマンドを使用してLinuxのネットワークの問題をトラブルシューティングする方法を説明しました。

高性能のデュアルE5シリーズ専用サーバーと安価なKVMVPSを入手してください。


CentOS 7にCSF(ConfigServer Security&Firewall)をインストールして構成する方法

CentOS 7にCSF(ConfigServer Security&Firewall)をインストールして構成する方法

ConfigServer Security&Firewall(略してcsfとも呼ばれます)は、ステートフルパケットインスペクション(SPI)ファイアウォールです。CentOS7へのCSFのインストールと構成について学ぶ

CentOSにR1Softバックアップエージェントをインストールする方法

CentOSにR1Softバックアップエージェントをインストールする方法

CentOSにR1SoftBackupAgentをインストールして構成する方法を学びます。R1Soft Server Backup Managerは、サービスプロバイダーに柔軟でサーバーフレンドリーなソリューションを提供します。

CloudLinuxLVE制限を変更する方法

CloudLinuxLVE制限を変更する方法

この記事では、CloudLinuxLVE制限を変更する方法について説明しました。それでは、始めましょう。CloudLinux LVE制限は、LVEマネージャーを使用して変更できます。

ポートのSSHを変更する方法Linuxサーバー

ポートのSSHを変更する方法Linuxサーバー

LinuxサーバーのSSHポートを変更するには、SSH経由でサーバーにログインし、SSH構成ファイルを変更する必要があります。

CentOSにCentovaCastをインストールする方法

CentOSにCentovaCastをインストールする方法

Centova Castは、インターネットラジオストリームの主要な管理プラットフォームであり、ストリームホスティングプロバイダーに広範な洞察と制御を提供します。CentovaCast

メールサーバーでメールリレーを設定する方法

メールサーバーでメールリレーを設定する方法

次の電子メールリレー設定を使用すると、電子メール送信の問題を解決できます。

Ubuntu 18.04にApache、MariaDB、PHP、およびphpMyAdminをインストールする方法

Ubuntu 18.04にApache、MariaDB、PHP、およびphpMyAdminをインストールする方法

Ubuntu18.04サーバーにApacheMariaDBPHPとPHPMyAdminをインストールする方法を学習します。Apache、MySQL / MariaDB、およびPHPはパッケージで構成されています。それはランプとして知られています

Linuxでの基本的なユーザー管理を学ぶ

Linuxでの基本的なユーザー管理を学ぶ

Linuxでユーザーを追加、変更、または削除しますか?これがあなたにぴったりの記事です。

Linuxでの基本的なグループ管理について学ぶ

Linuxでの基本的なグループ管理について学ぶ

Linuxでのグループ管理の詳細をご覧ください。Linuxでグループを追加、グループを変更、グループを削除、メンバーを追加する方法。新しいグループを作成し、groupaddコマンドを使用します。

CentOS7にFail2banをインストールする方法を学ぶ

CentOS7にFail2banをインストールする方法を学ぶ

Fail2banは、SSH接続を保護するのに非常に役立ちます。これで、centos7にfail2banをインストールして構成し、サーバーにセキュリティのレイヤーを追加できるようになります。