ネットワークパスのトラブルシューティング その2 - Windows、macOS、FreeBSD
本ガイドの最初の部分では、Equinix Metalで稼働するインスタンス内部からのネットワークデバッグについて説明しました。ほとんどの場合、このようなインスタンスはLinuxオペレーティングシステムを実行していますが、厳密な技術要件はありません。WindowsやFreeBSDなどのUNIXベースのオペレーティングシステムを搭載することもできます。
しかし、これまでの経験から、Linux以外のオペレーティングシステムは、クライアント側で発生することが多いことがわかっています。多くの場合、サーバー側の設定ミスが接続問題の根本的な原因ですが、クライアント側にも技術的な問題や設定ミスの影響があるかもしれません。そこで、このネットワーク・デバッグ・ガイドの第2部では、Linuxを使用しない環境におけるクライアント側とサーバー側の両方に焦点を当てます。Windows、macOS、FreeBSDという3つの異なるオペレーティングシステムを使って、最も一般的なデバッグの手順と技術を紹介します。
ネットワークのデバッグに関する最初のガイドと同様に、このガイドも、エクイニクスをご利用中に問題が発生した場合にお客様をサポートするためのツールです。カスタマーサクセスチームにご連絡いただく際に、このドキュメントに記載されている情報をご提供いただくことで、状況を把握し、解決策を導き出すために必要な多くの情報を得ることができます。
必要なもの
- Equinix Metal Account and a server as the source or destination of the network traffic you are testing.
- Windows Serverを実行するエクイニクスメタルサーバー(オプション)。
- Windowsが動作するクライアントマシン。(オプション)
- macOSを実行しているクライアントマシン。(オプション)
- BSDベースのローカルシステム。(オプション)
このガイドでは、あなたのセットアップの可能性をいくつか取り上げているため、記載されている可能性のあるシステムのうちの1つしか持っていないかもしれない。いくつかのツールは、実行するためにroot/sudoアクセスが必要な場合があることに注意してください。
Windowsサーバーのデバッグ
Equinix MetalでWindows Serverを実行している場合、ネットワーク状況に関する情報を取得する方法はLinuxサーバーとは少し異なります。Windowsにはmtrまたは同等のコマンドがなく、残念ながらWSLv1でもmtrの使用はサポートされていません。ただし、pingからパケット損失とレイテンシーに関する情報を、tracertからレイテンシーとパスに関する情報を取得できます。
ping
ping は cmd と PowerShell で利用可能なコマンドで、4 つのパケットを送受信し、パケット損失と合計時間の統計を返します。比較的正常に動作している場合、サーバーから外部IPアドレスにpingを送信すると以下のようになります:
Microsoft Windows [Version 10.0.17763.2565]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\Admin>ping 76.113.250.165
Pinging 76.113.250.165 with 32 bytes of data:
Reply from 76.113.250.165: bytes=32 time=40ms TTL=51
Reply from 76.113.250.165: bytes=32 time=39ms TTL=51
Reply from 76.113.250.165: bytes=32 time=39ms TTL=51
Reply from 76.113.250.165: bytes=32 time=39ms TTL=51
Ping statistics for 76.113.250.165:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 39ms, Maximum = 40ms, Average = 39ms
そして、外部IPからサーバーにpingを打つと、次のようになる:
Microsoft Windows [Version 10.0.19043.1526]
(c) Microsoft Corporation. All rights reserved.
C:\Users\User>ping 139.178.82.70
Pinging 139.178.82.70 with 32 bytes of data:
Reply from 139.178.82.70: bytes=32 time=40ms TTL=111
Reply from 139.178.82.70: bytes=32 time=40ms TTL=111
Reply from 139.178.82.70: bytes=32 time=40ms TTL=111
Reply from 139.178.82.70: bytes=32 time=42ms TTL=111
Ping statistics for 139.178.82.70:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 40ms, Maximum = 42ms, Average = 40ms
pingは、ソースから宛先までのパケット損失の合計を示すだけで、トラフィックがパス上のどこで問題に遭遇している可能性があるかについての詳細は含まれていません。これは、ソースと宛先の間で発生しているパケットロスを明らかにするツールです。
tracert
トラフィックがどのノードにヒットしているか、またそのノードが高レイテンシーを経験しているかどうかを詳細に調べる必要がある場合は、PowerShell でも利用可能な tracert を使用できます。
C:\Users\Admin>tracert 76.113.250.165
Tracing route to c-76-113-250-165.hsd1.mn.comcast.net [76.113.250.165]
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 169.254.29.1
2 <1 ms <1 ms <1 ms 10.253.57.204
3 1 ms <1 ms <1 ms 10.253.56.9
4 1 ms 1 ms 1 ms dls-b22-link.ip.twelve99.net [62.115.176.218]
5 * * * Request timed out.
6 * * * Request timed out.
7 1 ms 1 ms 1 ms comcast-ic359572-dls-b23.ip.twelve99-cust.net [80.239.160.214]
8 1 ms 1 ms 1 ms be-3411-cs04.dallas.tx.ibone.comcast.net [96.110.34.93]
9 2 ms 1 ms 1 ms be-1412-cr12.dallas.tx.ibone.comcast.net [68.86.166.126]
10 18 ms 18 ms 18 ms be-302-cr12.1601milehigh.co.ibone.comcast.net [96.110.38.101]
11 18 ms 19 ms 18 ms be-1212-cs02.1601milehigh.co.ibone.comcast.net [96.110.39.85]
12 34 ms 34 ms 34 ms 96.110.40.102
13 34 ms 34 ms 34 ms te-0-2-0-0-sur01.edina.mn.minn.comcast.net [69.139.176.210]
14 34 ms 34 ms 34 ms po-1-xar01.crosstown.mn.minn.comcast.net [68.86.232.206]
15 34 ms 34 ms 34 ms po-1-rur201.crosstown.mn.minn.comcast.net [68.87.175.14]
16 35 ms 48 ms 39 ms 68.85.201.178
17 40 ms 45 ms 38 ms c-76-113-250-165.hsd1.mn.comcast.net [76.113.250.165]
Trace complete.
tracertは、送信元と送信先からのルートをトレースし、各ノードでの待ち時間を追跡します。レイテンシは3 TTLパケットの往復時間を表示することで追跡され、ルートの各ノードでの一貫性をある程度知ることができます。
リターン・パスは往路と異なることが多いので、両方をチェックすることは有用である。
Microsoft Windows [Version 10.0.19043.1526]
(c) Microsoft Corporation. All rights reserved.
C:\Users\User>tracert 139.178.82.70
Tracing route to network-path-troubleshooting [139.178.82.70]
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 192.168.1.1
2 41 ms 13 ms 8 ms 172.30.121.131
3 7 ms 8 ms 8 ms 68.85.201.185
4 7 ms 8 ms 8 ms po-200-xar02.crosstown.mn.minn.comcast.net [68.86.233.185]
5 9 ms 10 ms 14 ms 68.87.175.9
6 10 ms 11 ms 10 ms 162.151.138.5
7 19 ms 18 ms 20 ms be-37041-cs04.350ecermak.il.ibone.comcast.net [96.110.43.13]
8 20 ms 20 ms 29 ms be-2411-pe11.350ecermak.il.ibone.comcast.net [96.110.33.206]
9 23 ms 23 ms 21 ms 62.115.54.21
10 * * * Request timed out.
11 39 ms 49 ms 40 ms dls-b24-link.ip.twelve99.net [62.115.136.46]
12 55 ms 40 ms 39 ms packethost-ic346115-dls-b22.ip.twelve99-cust.net [62.115.176.219]
13 * * * Request timed out.
14 * * * Request timed out.
15 39 ms 40 ms 40 ms network-path-troubleshooting [139.178.82.70]
Trace complete.
残念ながら、tracertからのパケットロス統計は取得できません。しかし、経路上のIPアドレスがわかったので、各IPアドレスにpingを打って、パケットロスが発生している可能性のある場所を確認することができます。
これはmtrを通じてLinuxユーザーが利用できるオールインワンの画像ほど便利ではありませんが、同じような方法で問題のトラブルシューティングを開始するのに役立ちます。
Windows クライアントのデバッグ
WindowsクライアントからEquinix Metalインスタンスへの接続中に問題が発生した場合、WindowsクライアントのデバッグはWindowsサーバーインスタンスのデバッグと同じ方法で実行できます。pingやtracertなどのツールを使用して、クライアントからEquinix MetalのターゲットIPに到達できるかどうかをテストしてください。これらのツールには、Windowsデスクトップの検索フィールドに「cmd」と入力するか、最近のWindowsインスタンスにデフォルトでインストールされているPowerShellを使用してアクセスできます。コンピュータの管理者アカウントアクセス権を持っていない場合でも、これらのツールのほとんどは「cmd」を使って利用できます。
多くのWindowsクライアントは、Microsoft Security Essentialsまたはその他のパーソナルファイアウォールソフトウェアを使用して、デバイスの保護レベルを高めています。このような場合、デバイスの管理者でない場合は、インストールされているファイアウォールが問題を引き起こしていないか、管理者にご相談ください。
また、システム構成に関するさまざまな情報が、Windowsクライアントマシンのグラフィカル・ユーザー・インターフェースからも入手できる場合があることにご注意ください。例えば、ルーティングエントリやIPアドレスは、現在アクティブなネットワーク接続のプロパティの「TCP/IP」エントリで見つけることができます。また、現在使用されているDNSサーバーの情報も確認できます。エクイニクスメタル内の特定のホストにアクセスできるにもかかわらず、対応するDNSエントリーにアクセスできない場合、問題が発生している可能性があります。
macOSクライアントのデバッグ
macOSがサーバー用オペレーティング・システムとして提供されなくなって久しいため、macOSに関連するすべての問題とは言わないまでも、ほとんどの問題は通常クライアントで発生する。デスクトップ・オペレーティング・システムであるため、もちろん、ほとんどの情報は標準的なmacOSのUIを通じて収集することができる。まずはこれらを見てみよう。
IPコンフィギュレーション
システム環境設定を開き、「ネットワーク」をクリックします。左側に既存のネットワークデバイスのリストが表示されます。

現在アクティブなもの(つまり、その下に緑色の点があるもの)を選択し、「詳細設定」をクリックします。TCP/IP」を選択します。ここで、現在クライアントに割り当てられているIPv4アドレスとIPv6アドレスを確認できます。

写真のスクリーンショットを撮るには、キーボードの[control]+[shift]+[4]を押し、ウィンドウの上にポインターを合わせます。Space]を押します。スクリーンショットは「デスクトップ」フォルダに保存されます。
または、コマンドラインを使用して、macOS ネットワーク設定の詳細を取得することもできます。Finder で "Go To / Utilities" をクリックし、"Terminal" をダブルクリックします。ifconfig -aを実行します。
カスタマーサクセスチームにチケットを申請する際は、ネットワーク設定のスクリーンショットまたはifconfig -aの出力をコピー&ペーストしてください。
ping
一般的なインターネット接続とEquinix Metalインスタンスへの接続をテストするには、コマンドラインでpingコマンドを使用します。
mloschwitz@mbp ~$ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=119 time=18.501 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=15.090 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=119 time=13.750 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=119 time=14.305 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 13.750/15.412/18.501/1.846 ms
このコマンド例では、GoogleのパブリックDNSサーバーの1つである8.8.8.8へのインターネット接続をテストします。ここにお客様のエクイニクスインスタンスのIPアドレスを挿入して、クライアントとインスタンス間の接続をテストしてください。カスタマーサクセスチームにお問い合わせの際は、このプログラムの出力を必ず添付してください。
トレースルート
Tracerouteは、macOSシステム上でコマンドとしてすぐに利用できる。しかし、Appleが提供するグラフィカルな表現はないため、コマンドラインインターフェイス(つまりターミナル)に頼る必要がある。
Finder で "Go To / Utilities" をクリックし、"Terminal" をダブルクリックします。traceroute <target>を実行し、「target」をターゲットアドレス(通常はエクイニクスのインスタンスのアドレス)に置き換えてください。
mloschwitz@mbp: ~$ traceroute 139.178.82.70
traceroute to 139.178.82.70 (139.178.82.70), 64 hops max, 52 byte packets
1 speedport.ip (192.168.2.1) 9.062 ms 5.931 ms 3.295 ms
2 p3e9bf1ac.dip0.t-ipconnect.de (62.155.241.172) 9.566 ms 8.038 ms 8.078 ms
3 217.5.117.34 (217.5.117.34) 14.226 ms 14.545 ms 12.501 ms
4 217.5.117.34 (217.5.117.34) 14.152 ms 12.571 ms 12.203 ms
5 80.157.204.58 (80.157.204.58) 15.995 ms 16.515 ms 15.120 ms
6 ae11.cr8-dal3.ip4.gtt.net (213.200.115.30) 135.016 ms 127.420 ms 128.161 ms
7 ip4.gtt.net (74.199.177.14) 141.398 ms 125.649 ms 126.382 ms
8 * * *
mtr
tracerouteユーティリティのより美しいバリアントをお探しの場合は、Homebrewツールコレクションを通じてmacOS用のmtrユーティリティが存在します。Homebrewをインストールするには、プロジェクトのウェブサイトhttps://brew.sh/の指示に従ってください。すべての brew コマンドは macOS のコマンドラインで実行する必要があり、Homebrew 自体がインストールされると、brew install mtr はよりカラフルで便利な traceroute をインストールします。その後 mtr <address> を使って起動できます。"address" は IP アドレスかコンタクトしたいホスト名に置き換えて下さい。mtr を実行するにはあなたのマシンで sudo 権限が必要です。
netstat
接続に問題がある場合、ルーティングテーブルに問題がある可能性があります。ルーティング・テーブルは残念ながらmacOSでは(tracerouteのように)グラフィカルに表示されないので、この場合もコマンドラインに頼るしかない。
Finderで "Go To / Utilities "をクリックし、"Terminal "をダブルクリックする。netstat -r」を実行する。そのコマンドの全出力を、必ずカスタマー・サクセス・チームへの返信(またはリクエストの原文)に記載してください。
mloschwitz@mbp ~$ netstat -r
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default speedport.ip UGScg en0
127 localhost UCS lo0
localhost localhost UH lo0
169.254 link#13 UCS en0 !
192.168.2 link#13 UCS en0 !
192.168.2.1/32 link#13 UCS en0 !
FreeBSD
FreeBSD はよく知られた UNIX ベースのオペレーティングシステムで、 (NetBSD や OpenBSD とともに) 市場に出回っている大きな BSD のひとつです。FreeBSD はしばしばサーバで使用され、時にはデスクトップでも使用されます。私たちは、ネットワークデバッグが UNIX ベースのシステム (そしておそらく他の BSD でも) 上でどのように動作するかを示すために、このガイドにこれを含めています。
便利なのは、FreeBSDの多くのコマンドがmacOSのコマンドと似ていることだ。macOSの中核であるDarwinオペレーティング・システム・カーネルがFreeBSDをルーツとしていることを考えれば、それも納得できる。
IPコンフィギュレーション
サーバやクライアント上で、FreeBSD のネットワーク設定の概要を取得するコマンドは ifconfig -a です。カスタマーサクセスチームにお問い合わせの際は、FreeBSDをエクイニクスのメタルインスタンスで使用しているのか、ローカルクライアントで使用しているのかを明記し、ifconfig -aの出力をチケットに記載してください。
ping
リモートホストの到達可能性をチェックする ping コマンドは、FreeBSD での動作とまったく同じように動作します。ping 8.8.8.8はGoogleのパブリックDNSサーバがコマンドを実行したホストから到達可能かどうかをチェックし、ping 139.178.82.70はIPアドレス139.178.82.70の到達可能性をチェックします。
root@vserver1:~ # ping -c 4 139.178.82.70
PING 139.178.82.70 (139.178.82.70): 56 data bytes
64 bytes from 139.178.82.70: icmp_seq=0 ttl=128 time=135.466 ms
64 bytes from 139.178.82.70: icmp_seq=1 ttl=128 time=133.597 ms
64 bytes from 139.178.82.70: icmp_seq=2 ttl=128 time=135.923 ms
64 bytes from 139.178.82.70: icmp_seq=3 ttl=128 time=132.125 ms
--- 139.178.82.70 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 132.125/134.278/135.923/1.518 ms
トレースルート
tracerouteコマンドの機能は、macOS上の同じコマンドの機能と同じです。コマンドラインを開き、traceroute 139.178.82.70と入力すると、コマンドを実行するマシンとターゲットホスト間のルーティングを把握できます。
mloschwitz@vserver1: ~$ traceroute 139.178.82.70
traceroute to 139.178.82.70 (139.178.82.70), 64 hops max, 40 byte packets
1 speedport.ip (192.168.2.1) 10.062 ms 5.931 ms 3.295 ms
2 p3e9bf1ac.dip0.t-ipconnect.de (62.155.241.172) 9.566 ms 8.038 ms 8.078 ms
3 217.5.117.34 (217.5.117.34) 14.226 ms 14.545 ms 12.501 ms
4 217.5.117.34 (217.5.117.34) 14.152 ms 12.571 ms 12.203 ms
5 80.157.204.58 (80.157.204.58) 15.995 ms 16.515 ms 15.120 ms
6 ae11.cr8-dal3.ip4.gtt.net (213.200.115.30) 135.016 ms 127.420 ms 128.161 ms
7 ip4.gtt.net (74.199.177.14) 141.398 ms 125.649 ms 126.382 ms
8 * * *
mtr
mtr プログラムは、FreeBSD では ports コレクションから入手できます。システムに ports コレクションがインストールされていることを確認し、コマンドラインを開いて cd /usr/ports/net/mtr コマンドを実行して /usr/ports/net/mtr ディレクトリに移動します。次に make install を実行します。その後、mtr が利用可能になり、Homebrew を使ってインストールした macOS や Linux でサポートしているのと同じパラメータが必要になります。
netstat
FreeBSD で現在確立されているすべての経路の一覧を取得するには、 ターミナルウィンドウ内で netstat -r を使用してください。質問されたら、サポートへのチケットにこれらの詳細を必ず含めてください。
mloschwitz@vserver1:~ $ netstat -r
Routing tables
Internet:
Destination Gateway Flags Netif Expire
default prl-local-ns-serve UGS vtnet0
10.211.55.0/24 link#1 U vtnet0
freebsd-13.1-rc3-a link#1 UHS lo0
localhost link#2 UH lo0
Internet6:
Destination Gateway Flags Netif Expire
::/96 localhost UGRS lo0
default fe80::21c:42ff:fe0 UG vtnet0
localhost link#2 UHS lo0
::ffff:0.0.0.0/96 localhost UGRS lo0
fdb2:2c26:f4e4::/6 link#1 U vtnet0
fdb2:2c26:f4e4:0:2 link#1 UHS lo0
fe80::/10 localhost UGRS lo0
fe80::%vtnet0/64 link#1 U vtnet0
fe80::21c:42ff:fe4 link#1 UHS lo0
fe80::%lo0/64 link#2 U lo0
fe80::1%lo0 link#2 UHS lo0
ff02::/16 localhost UGRS lo0