本文へスキップ

Linuxによるネットワークパスのトラブルシューティング

ネットワークは厄介なものだ。しかし、実際に適切なビットを適切なコンピュータからインターネットの荒野を渡り、適切な宛先に到達させ、適切なポートを開き、トラフィックをリッスンすることは、非常に複雑な作業となります。エクイニクスが提供する相互接続速度では、見慣れないネットワーク動作に遭遇する可能性があります。

このガイドでは、Linuxでのネットワークトラブルシューティングの基礎について説明します。一般的にサーバー間でビットを送信する際に役立ちますが、ここではお客様(またはお客様のデータセンター)とエクイニクス間の接続のトラブルシューティングに焦点を当てます。これによりお客様の問題が解決されない場合でも、エクイニクスのカスタマーサクセスチームに必要な情報を提供することができます。

前提条件

  • 該当のマシンにアクセスできるEquinix Metalアカウント
  • ローカルのLinuxシステム(ツールによってはroot/sudoアクセスが必要な場合がある)
  • オプションで、Metal CLI ツール

IPv4とIPv6

ネットワークの話なので、IPアドレスを扱います。IPアドレスは日常的に使われているもので、皆さんもよくご存知のはずですが、もう少し深く理解しておくと、どこで問題が起きているのかを把握するのに役立ちます。ほとんどの場合、私たちが扱うものは、長年使われてきたIPv4形式を使用しています。

IPv4

IPv4では、ネットワークに接続されたデバイスには、通常IPアドレスと呼ばれる一意の識別子が与えられます。IPはinternet protocol の略で、ネットワーク接続で使用される標準プロトコルを指します。IPアドレスは32ビットで構成され、通常はドット10進数表記で4オクテット(xxx.xxx.xxx.xxx)で表されます。任意のIPアドレスは2つの半分に分けることができ、最初のビットセットはアドレスのネットワーク 部分であり、残りはホスト 部分を表します。これはCIDR(Classless Inter-Domain Routing)表記かサブネットマスクで表されます。たとえば、EquinixのIPが55.82.200.45/29であるとします。適切なサブネットマスクと、そのブロックで利用可能な他のIPアドレスを逆算して決定できます。ネットワーク専用の29ビット(/29)で、3つのホストビットがあり、その結果、サブネットマスクは255.255.255.248(2進数で111111.111111.111111.11111000)になります。そして、バイナリ変換を少しすると、8つの利用可能なIPが55.82.200.40-48になることがわかります。このうち、一番最初のホスト(すべて0)は通常「ネットワーク」アドレスとして予約されており、一番最後のホスト(すべて1)はネットワークの「ブロードキャスト」アドレスとして予約されています。これは、このガイドが必要とするよりも少し深いかもしれません。

55.82.200.45/29アドレスを分解することで得られる主なことは、そのIPを持つデバイスは、55.82.200.40と.48の間のすべてのアドレスをローカル として扱い、そのネットワーク外のリクエストだけをデフォルトゲートウェイまたはルーターに転送するということです。ゲートウェイとは何ですか?

人々はインターネットを「ひとつの大きなネットワーク」と考えがちですが、それは少し不十分です。実際には、インターネットは巨大な小さなネットワークが結合したようなものなのです。インターネット上の他のネットワークに接続できるすべてのネットワークセグメントには、自律システム 番号が割り当てられており、AS番号またはASNとも呼ばれています。ASNはルーターによって使用され、インターネット上の他のすべてのルーターに、どのIPアドレス範囲を担当しているかを通知します。ネットワークA上のコンピュータがネットワークB上のコンピュータ(または自分のローカルネットワークの一部でないコンピュータ)と通信する必要がある場合、その要求をローカルに設定されたルータ(通常、ゲートウェイ またはデフォルトゲートウェイ とも呼ばれます)に転送します。ゲートウェイは、ターゲットホストのIPアドレスが属するネットワークのパブリック責任を発表したルーターにパケットを転送します。

パケットがソースからターゲットに到達するために必要な経路は、通常ルート と呼ばれます。あなたのシステムは通常、デフォルトゲートウェイまでの経路しか知りません。そこからのルーティングは、世界中のルーティングテーブルに基づいて、ほとんど動的に行われます。これによって、インターネットのどのサブネットにある任意のホストでも、他の任意のホストと通信することができます。(ここでは簡単のため、ファイアウォールのような特殊なケースは除外します)。

したがって、55.82.200.45から55.82.200.46へのデータ送信に問題がある場合、それらが同じネットワークに正しく接続されているか、またはサブネットマスクをチェックして、各コンピュータがネットワーク接続を正しく把握しているかを確認する必要があるかもしれません。これらのテストに合格した場合、ゲートウェイの接続に問題がないかチェックすることが次の論理的なステップとなります。

IPv6

ご存知のように、インターネット上の全デバイスを32ビットで表すと、インターネットに接続されたデバイスは約43億台しかなく、ローカルネットワーク用に予約されたIPの数を考慮するともっと少なくなる。また、30億でも大きな数字に感じられるが、世界人口や、私たちが日常的に使用し、やり取りしているインターネット接続デバイスの数を考えれば、決してそうではない。さらに、IPアドレス・ブロックは細分化され、移動することができるため、ルーティング・テーブルはすぐに混雑します。実際、2015年以降、ほとんどの地方公共団体は/8(~1600万)IPアドレスの最終ブロックまで減少している。

IPv6は128ビットアドレスでこれを緩和するために導入され、2^128または3.4 x 10^32の利用可能なIPアドレスを提供します。また、変更可能なサブネットマスクの代わりに、IPv6はアドレスのホストとネットワーク部分に64ビットを使用します。インターネットの本来のエンドツーエンドの性質を念頭に置いて構想されたIPv6は、IPv4とはルーティングが少し異なり、ルーターデバイス自体からの要求が異なり、少し単純になり、エンドノードでより多くの作業が行われます。2つのプロトコルのバージョンには更なる違いがありますが、このガイドの目的のための主な違いは表記法です。

IPv4がドットまたはピリオドで区切られた4つの10進オクテット(8ビットまたはバイトのグループ)として記述されるのに対し、IPv6はコロンで区切られた8つの16進ヘクステット(16ビットのグループまたはチョンプ)として記述される。利便性と明瞭性のため、IPv6には省略に関するルールもいくつか含まれている。各ヘクステットの先頭の0はすべて削除でき、すべての0が連続するヘクステットは2つのコロン(::)に置き換えることができる。後者の条件は、複数回使用するとアドレスが曖昧で不確定になるため、アドレス内で1回のみ適用できる。

例えば、2001:0db8:0000:0000:0000:ff00:0042:8329というIPv6アドレスがあるとする。先頭の0を取り除くと2001:db8:0:0:0:ff00:42:8329となり、連続する0のヘクステットを圧縮すると2001:db8::ff00:42:8329となります。IPv6アドレスを認識し、拡張し、省略することと、ネットワークの64ビットとホストの64ビットを覚えることが、このガイドのIPv6のトラブルシューティングの最大の意味である。

マシンのIPアドレスを見つける

サーバーのIPアドレスは、エクイニクスメタルコンソールまたはCLIから確認できます。

エクイニクスメタルWeb UIの使用方法

Consoleから、[Organization] > [Project] > [Servers] > [Server Hostname (IPV4/6アドレス)]を開きます。

エクイニクスメタルCLIの使用方法

Metal CLI を使用している場合:

割り当てられたすべてのIPアドレスを取得する:

metal devices get -o json | jq '.[0].ip_addresses'

特定のデバイスに割り当てられたIPアドレスを取得するには、以下を使用する:

metal devices get -i $device_id -o json | jq '.ip_addresses'

Web UI / CLIの情報をシステムで確認する

エクイニクスのコンソールやCLIを使用してIPアドレスを取得することも便利ですが、ソースに直接アクセスしたい場合もあります。これらのテクニックを使用すると、マシン自体のネットワーク情報を取得できます。

以下のツールのほとんどは、標準的なLinuxインストールで利用できる。そうでない場合は、ディストリビューションのパッケージ管理(apt、snap、rpm)から入手できます。

マシンのコマンドラインからIPアドレスを見つける

コマンドラインからIPアドレスを見つけるには、ipコマンドを次のいずれかのバリエーションで使用します:

ip a
ip add
ip addr
ip -br -c a概要 + カラー

例えば、すべてのインターフェイスと割り当てられたアドレスの簡潔な概要を作成するには、次のようにする:

# ip -br -c a
lo UNKNOWN 127.0.0.1/8 ::1/128
enp1s0f0 UP
enp1s0f1 UP
bond0 UP 139.178.69.191/31 10.88.19.129/31 2604:1380:1000:c00::1/127 fe80::ec4:7aff:feb2:98dc/64

ip コマンドの使用に関する詳細については、多くのオンラインガイド を参照してください。

リスニングしているポートの特定

利用可能なポートに関する情報を取得するには、ss コマンド(ソケット統計)を使用します:

ss -l
ss -lp (プロセスを表示) lsof -i

例えば、現在のマシンでリッスンしているポートのリストを見るには、次のようにする:

# ss -lp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* users:(("systemd-resolve",pid=888,fd=12))
tcp LISTEN 0 4096 127.0.0.53%lo:domain 0.0.0.0:* users:(("systemd-resolve",pid=888,fd=13))
tcp LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:* users:(("sshd",pid=1476,fd=3))
tcp LISTEN 0 4096 *:5201 *:* users:(("iperf3",pid=14162,fd=3))
tcp LISTEN 0 128 [::]:ssh [::]:* users:(("sshd",pid=1476,fd=4))

現在開かれているファイル・ディスクリプタの一覧は、これを使う:

# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 888 systemd-resolve 12u IPv4 20923 0t0 UDP localhost:domain
systemd-r 888 systemd-resolve 13u IPv4 20924 0t0 TCP localhost:domain (LISTEN)
sshd 1476 root 3u IPv4 27081 0t0 TCP *:ssh (LISTEN)
sshd 1476 root 4u IPv6 27083 0t0 TCP *:ssh (LISTEN)
sshd 1969 root 4u IPv4 27199 0t0 TCP metal-guide-00:ssh->123-123-100-10.sbcglobal.net:51434 (ESTABLISHED)

ss コマンドの詳細については、このガイド を参照してください。

リモートマシンが到達可能かどうかの判断

マシンがネットワーク上で利用可能かどうかを調べるには、ping コマンドを使用します:

ping [address]

マシンが存在するかどうかを判断するだけでなく、そのマシンに到達するのにかかる時間(レイテンシとも呼ばれる)も知りたいかもしれません。pingの出力でそれもわかります。

次の例は、リモートホストpacket.com の到達可能性を、およそ1ミリ秒の待ち時間で示しています:

# ping packet.com
PING packet.com (104.18.26.66) 56(84) bytes of data.
64 bytes from 104.18.26.66 (104.18.26.66): icmp_seq=1 ttl=58 time=1.02 ms
64 bytes from 104.18.26.66 (104.18.26.66): icmp_seq=2 ttl=58 time=1.04 ms
64 bytes from 104.18.26.66 (104.18.26.66): icmp_seq=3 ttl=58 time=0.881 ms
64 bytes from 104.18.26.66 (104.18.26.66): icmp_seq=4 ttl=58 time=1.03 ms

pingの詳細については、このガイドを参照してください。

特定のリモートポートに到達可能かどうかのチェック

IP アドレスをチェックするには、ping は素晴らしいツールです。別のマシンの特定のポートをチェックするには、nc または netcat を次のように使用します:

nc -vz [address] [port]

equinix.com ポート443がお客様のマシンからアクセス可能かどうかを確認するには、次のコマンドを使用します:

# nc -vz equinix.com 443
Connection to equinix.com 443 port [tcp/https] succeeded!

nc コマンドの詳細については、このガイド を参照してください。

特定のリモートポートに到達可能かどうかを、より詳細な情報とともにチェックする。

ポートのステータスに関する詳細情報が必要な場合は、nmapを使用してください:

nmap -p [port] [address]

nmap ツールを使用して実行された同じタスク:

# nmap -p 443 equinix.com
Starting Nmap 7.80 ( https://nmap.org ) at 2022-03-01 03:51 UTC
Nmap scan report for equinix.com (40.91.78.229)
Host is up (0.023s latency).

PORT STATE SERVICE
443/tcp open https

Nmap done: 1 IP address (1 host up) scanned in 0.53 seconds

nmap の使用に関する詳細については、このガイド を参照してください。

指定されたアドレスへのルートを決定する

前述のように、ルートは動的なので、mtrコマンドを使用して、特定の宛先に使用されている正確なルートを決定します:

mtr [address]
mtr -r -c 10 [address] (-cycles)

mtrコマンドは、指定されたルートに含まれるホップの数と、そのうちの1つが許容範囲よりも遅いかどうかを知ることもできます。

以下は、IPv6 IPを使用するあるホストが、別のホストに到達しようとした場合の出力例である。

metal-guide-00 (2604:1380:1000:c00::1) 2022-03-01T03:56:07+0000
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. _gateway 0.0% 28 7.8 3.0 1.0 8.6 2.5
2. 0.ae147.dsr1.r00c02.sjc1.packet.net 0.0% 28 9.4 23.0 1.5 401.7 75.8
3. 0.ae11.bsr1.sjc1.packet.net 0.0% 28 17.5 2.4 0.7 21.2 4.8
4. 0.et-0-0-11.bsr1.sv5.packet.net 0.0% 28 1.5 4.4 1.3 40.5 9.2
5. 2001:4860:1:1::1d7f 0.0% 27 1.4 1.4 1.2 1.8 0.1
6. 2607:f8b0:82c2::1 48.1% 27 2.2 2.4 2.2 2.7 0.2
7. any-in-2001-4860-4802-36--15.1e100.net 0.0% 27 1.5 1.4 1.2 1.5 0.1

mtrの詳細については、このガイドを参照してください。

接続速度のテスト

接続速度を直接テストしたい場合もあります。そのためには、speedtest ユーティリティをインストールする必要があります:

apt install speedtest-cli

でテストを実行できる:

speedtest

CLIでスピードテストを行うには、次のようにする:

# speedtest
Retrieving speedtest.net configuration...
Testing from Packet Host (139.178.69.191)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Ayera Technologies, Inc. (Modesto, CA) [97.79 km]: 7.473 ms
Testing download speed................................................................................
Download: 1142.73 Mbit/s
Testing upload speed......................................................................................................
Upload: 1656.41 Mbit/s

Speedtest CLIツールの詳細については、公式ドキュメント を参照してください。

2台のマシン間の転送速度を測定する

iPerf ユーティリティを使用すると、2 台のマシン間の転送速度をテストできます。ローカルとリモートの両方のマシンに iperf をインストールする必要があります:

apt install iperf3

リモートサーバーで、リッスンを開始するには
iperf3 -s

ローカルシステムでは
iperf3 -c [target address] iperf3 -c [target address] -R (逆の場合、リモート -> ローカル)

出力は次のようになる:

# iperf3 -c 139.178.69.191
Connecting to host 139.178.69.191, port 5201
[ 5] local 192.168.0.233 port 52106 connected to 139.178.69.191 port 5201
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 35.2 MBytes 295 Mbits/sec
[ 5] 1.00-2.00 sec 53.8 MBytes 451 Mbits/sec
[ 5] 2.00-3.00 sec 27.0 MBytes 227 Mbits/sec
[ 5] 3.00-4.00 sec 51.8 MBytes 435 Mbits/sec
[ 5] 4.00-5.00 sec 43.6 MBytes 366 Mbits/sec
[ 5] 5.00-6.00 sec 38.7 MBytes 324 Mbits/sec
[ 5] 6.00-7.00 sec 41.5 MBytes 348 Mbits/sec
[ 5] 7.00-8.00 sec 43.7 MBytes 367 Mbits/sec
[ 5] 8.00-9.00 sec 44.5 MBytes 373 Mbits/sec
[ 5] 9.00-10.00 sec 46.1 MBytes 386 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 426 MBytes 357 Mbits/sec sender
[ 5] 0.00-10.06 sec 424 MBytes 354 Mbits/sec receiver

iperf Done.

iPerfの詳細については、公式ドキュメントを参照してください。

デバイス別のネットワーク負荷の表示

各デバイスのネットワーク負荷を幅広く把握するには、nloadユーティリティを使用します:

nload

矢印キーを使って利用可能なデバイスを循環させ、qを押して終了します。

nloadの出力例です:

Device bond0 [139.178.69.191] (1/5):
===========================================================================================
Incoming:
#####################
#####################
.#####################
######################
######################
######################
######################
######################
###################### Curr: 2.91 kBit/s
###################### Avg: 125.98 MBit/s
###################### Min: 2.90 kBit/s
###################### Max: 317.84 MBit/s
###################### Ttl: 1.20 GByte
Outgoing:









Curr: 30.23 kBit/s
. .. Avg: 1.01 MBit/s
################## Min: 7.57 kBit/s
###################| Max: 2.42 MBit/s
.#################### Ttl: 159.86 MByte

nloadの詳細については、このガイドを参照してください。

ドメインの所有者の決定

リモートアドレスがあり、所有者やその他のレジストラ情報を確認したい場合は、whoisコマンドを使用します:

whois [address]

次の例は、equinix.comドメインのwhois情報を示しています:

# whois equinix.com
Domain Name: EQUINIX.COM
Registry Domain ID: 2603897_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.corporatedomains.com
Registrar URL: http://cscdbs.com
Updated Date: 2021-08-22T05:11:35Z
Creation Date: 1998-08-27T04:00:00Z
Registry Expiry Date: 2022-08-26T04:00:00Z
Registrar: CSC Corporate Domains, Inc.
Registrar IANA ID: 299
Registrar Abuse Contact Email: domainabuse@cscglobal.com
Registrar Abuse Contact Phone: 8887802723
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited
Domain Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited
Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
Name Server: DNS1.P07.NSONE.NET
Name Server: DNS2.P07.NSONE.NET
Name Server: DNS3.P07.NSONE.NET
Name Server: DNS4.P07.NSONE.NET
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2022-03-01T04:03:24Z <<<

whoisの詳細については、このガイドを使用してください。

ドメイン名のアドレスの決定

whois コマンドはドメインについて知りたい場合に便利ですが、ドメイン名が解決する特定のアドレスを知りたい場合もあります。その場合はnslookupを使用し、より詳細な答えを知りたい場合はdigを使用します:

nslookup [address]
dig +trace [address]

nslookupを使用した例:

# nslookup equinix.com
Server: 127.0.0.53
Address: 127.0.0.53#53

Non-authoritative answer:
Name: equinix.com
Address: 40.91.78.229

digを使った同じ例:

# dig +trace equinix.com

; <<>> DiG 9.16.1-Ubuntu <<>> +trace equinix.com
;; global options: +cmd
. 79825 IN NS e.root-servers.net.
. 79825 IN NS d.root-servers.net.
. 79825 IN NS g.root-servers.net.
. 79825 IN NS a.root-servers.net.
. 79825 IN NS k.root-servers.net.
. 79825 IN NS b.root-servers.net.
. 79825 IN NS i.root-servers.net.
. 79825 IN NS m.root-servers.net.
. 79825 IN NS l.root-servers.net.
. 79825 IN NS h.root-servers.net.
. 79825 IN NS j.root-servers.net.
. 79825 IN NS c.root-servers.net.
. 79825 IN NS f.root-servers.net.
;; Received 262 bytes from 127.0.0.53#53(127.0.0.53) in 0 ms

com. 172800 IN NS c.gtld-servers.net.
com. 172800 IN NS m.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS b.gtld-servers.net.
com. 172800 IN NS g.gtld-servers.net.
com. 172800 IN NS d.gtld-servers.net.
com. 172800 IN NS e.gtld-servers.net.
com. 172800 IN NS f.gtld-servers.net.
com. 172800 IN NS h.gtld-servers.net.
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS a.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net.
com. 86400 IN DS 30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com. 86400 IN RRSIG DS 8 1 86400 20220313210000 20220228200000 9799 . l/Qi4jz9Mm/17YNIjJM8Z9vBxY2LNM4EwJykZsFLMXg8AnbJDxaAGB3h 47gGMj8mzTpTpgRrmD6ohAh/HOpbzR74YlQze6rVp+fn5oBZGzxKlVvW jVhm0L2vVCBwoilPJJ13sWdVYxBYJC4E1H23vT4khtzEUtjHdNnSbTbl GrFk3DDb6oIR5AhPQZII+zbYWPgLxJS7MJ20ch9ZXpby44IQ/0L+cgly Il/y84Ix/jq4qpfMexbxjTBWa9cK3S+vBIpWnxv4372lEFTiN6SPFYfF YCQVafKCnNZxWq3DIdwDNJcgcZS4ezCkm08Y4PZ/phfHBWHoFaqNMMpw BSY0cg==
;; Received 1199 bytes from 192.112.36.4#53(g.root-servers.net) in 44 ms

equinix.com. 172800 IN NS dns1.p07.nsone.net.
equinix.com. 172800 IN NS dns2.p07.nsone.net.
equinix.com. 172800 IN NS dns3.p07.nsone.net.
equinix.com. 172800 IN NS dns4.p07.nsone.net.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20220304052328 20220225041328 38535 com. QBEVp5RQYWO4WbeNlRYtAg+ob5TeMdT9lidq3zTL5xoEWS8N9xGXMhjx JEnRCkf8+yirdIyLZvIqzKqKtvzr2WXVLpEDdoUsfpj3xdG1VDPXNbva 9bSOgIcOnfv0IUXJJXHhsp80NDWeFYbwR+wJMeEwgrHWQfyccyUejjpU JKK+uBrBP3D7wvHpnNIh1XnFk4f49bhdJCj5/ITzZyjR0Q==
2S6MCLRVGJJO7EJTAFM73G5O7INU7C84.com. 86400 IN NSEC3 1 1 0 - 2S6NAQI4JCBDB8UF5NFPLETQ9GTHE3P6 NS DS RRSIG
2S6MCLRVGJJO7EJTAFM73G5O7INU7C84.com. 86400 IN RRSIG NSEC3 8 2 86400 20220307055325 20220228044325 38535 com. RlR6BsuGKh937/apIR6FtvvQZ47Gv3CXUx0XotbbCGD3EtwsJfxY5bxa Yv3b2HnU+DqL1SChUD2MBAKr0SzNeTSa726Ymy6P75QDM7iGA9ObRRPP 6FEtkfcNxDqXx52pBQpiIQfVhRklW+VoRGD4V54vyC6jSq/PaOSoWCFE tD71VC4mvCbaox5KKUHPn2F8WH5rLFPqoRmHcFuAV01POw==
;; Received 678 bytes from 192.41.162.30#53(l.gtld-servers.net) in 24 ms

equinix.com. 300 IN A 40.91.78.229
;; Received 56 bytes from 2a00:edc0:6259:7:7::4#53(dns4.p07.nsone.net) in 0 ms

nslookup コマンドの詳細については、このガイド を参照してください。

dig コマンドの詳細については、このガイド を参照してください。

ローカルハードウェア構成の決定

システム内のハードウェアの詳細情報を取得するには、lshw (list hardware) コマンドを使用します:

lshw
lshw -class network
lshw -class network -short

以下はlshwからの出力例で、混雑して混沌としているように見えることが多いでしょう:

# lshw -class network
*-network:0
description: Ethernet interface
product: I350 Gigabit Network Connection
vendor: Intel Corporation
physical id: 0
bus info: pci@0000:01:00.0
logical name: enp1s0f0
version: 01
serial: 0c:c4:7a:b2:98:dc
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi msix pciexpress bus_master cap_list rom ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=igb driverversion=5.6.0-k duplex=full firmware=1.52, 0x800007ae latency=0 link=yes multicast=yes port=twisted pair slave=yes speed=1Gbit/s
resources: irq:16 memory:88400000-8847ffff ioport:e020(size=32) memory:88580000-88583fff memory:88500000-8853ffff memory:88584000-885a3fff memory:885a4000-885c3fff
*-network:1
description: Ethernet interface
product: I350 Gigabit Network Connection
vendor: Intel Corporation
physical id: 0.1
bus info: pci@0000:01:00.1
logical name: enp1s0f1
version: 01
serial: 0c:c4:7a:b2:98:dc
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi msix pciexpress bus_master cap_list rom ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=igb driverversion=5.6.0-k duplex=full firmware=1.52, 0x800007ae latency=0 link=yes multicast=yes port=twisted pair slave=yes speed=1Gbit/s
resources: irq:17 memory:88480000-884fffff ioport:e000(size=32) memory:885c4000-885c7fff memory:88540000-8857ffff memory:885c8000-885e7fff memory:885e8000-88607fff
*-network
description: Ethernet interface
physical id: 3
logical name: bond0
serial: 0c:c4:7a:b2:98:dc
capabilities: ethernet physical
configuration: autonegotiation=off broadcast=yes driver=bonding driverversion=3.7.1 duplex=full firmware=2 ip=139.178.69.191 link=yes master=yes multicast=yes

lshw コマンドの詳細については、このガイド を参照してください。

特定のネットワークカード情報の取得

特定のマシンで使用されているネットワークカードとドライバに関する詳細情報を確認するには、ethtoolを使用します:

ethtool [DEVICE NAME]
ethtool -i [DEVICE NAME]

ethtoolの詳細については、このガイドを参照してください。

ファイアウォールのルールを把握する

多くのLinuxディストリビューションは、基本的なシステムセキュリティのためにfirewalldのようなファイアウォールルールやサービスをあらかじめデプロイしています。これらはネットワークをセットアップする際に邪魔になるかもしれません。Linux システムでは、パケットフィルターは iptablesnftables を使って実装されます。適用された全てのルールのリストを取得する方法は以下の通りです:

iptables -S

iptablesnftablesも「最初のルールマッチ」の原則に従うことを覚えておいてください。つまり、受信パケットは最初にマッチしたルールに従って処理されます。

非推奨ツール

arpifconfigroute などの古いネットワーキング・ユーティリティをご存知かもしれません。これらのツールは現在では非推奨となっており、ipに引き継がれています。netstatツールはssに取って代わられました。

結論

この記事では、ネットワークのトラブルシューティングのためにLinuxシステムで利用できる様々なツールの概要を紹介した。これらのツールが全てのネットワーク問題を解決するとは限りませんが、適切な情報をどこで入手できるかを知っておくことは常に良いことです。何よりも、これらの情報をすぐに利用できるようにしておくことで、サポートへの問い合わせをより早く済ませることができる。

このページは役に立ちましたか?