こんにちは、GMOインターネットグループ株式会社 ネットワークソリューションチームの梅崎です今回は主にサーバー管理者/アプリ開発者向けに「ネットワークが繋がらない、通信ができない」となったときの・ クライアント/サーバー側で可能なトラブルシュート方法・ ネットワーク管理者へ調査依頼を出す際に我々が欲しい情報をまとめてみました今回はそのエラー内容特定編です
注意事項
基本的には上からなぞっていけば大丈夫な形にはしていますがWindows機などはコマンドが違うことが多くコメントでやりたいことを記載しているので同様の情報を取得できるものを探していただければと思います
あと、IPv6の調査はあまりやったことは無いですが基本的にはトラブルシュート方法は変わらずコマンドにIPv6用のオプションをつければ大丈夫だと思います
どんなエラーなのかを特定
この章では最低限、通信の問題なのかクライアント/サーバーのアプリケーション的なエラー、設定の不備なのかを切り分けする方法を記載しています
ブラウザ等で404や403といった4xxエラーが表示される
クライアントとサーバーとの通信は問題ないです「URLが誤っている」かサーバーで「ファイルが存在しない」、「アクセスを許可していない」等が原因のため
URLの再確認とWebサーバー側の設定の確認が必要です
ブラウザ等で500や504といった5xxエラーが表示される
クライアントとサーバーとの通信は問題ないですサーバー側のエラーやバックエンドが落ちているなどが原因の可能性が高いです
サーバー、バックエンド側のログの確認が必要です ※サーバーとバックエンドの「通信に問題がある場合(作成中)」を参照してください
名前解決に失敗する
「URLが誤っている」か「DNSサーバーの設定が無い」「リゾルバの設定がされていない/間違えている」かなと思いますURLの再確認とDNSサーバー側の設定の確認、クライアント側のリゾルバの設定の確認が必要です
タイムアウトエラーが表示される(Webに限らず)
クライアントとサーバーとの通信に問題があるかサーバー側が落ちている、アクセスするIPアドレスに誤りがある可能性があります
IPアドレスの再確認とサーバー側が落ちていないかを下記コマンド等で確認する必要があります ※コマンドの結果が問題ない場合は、「通信に問題がある場合(作成中)」を参照してください
# プロセスが待ち受ける、バインドするIPアドレス/port等を確認
# 「*」は全IPアドレスで待ち受けている状態です、特定のIPアドレスが表示されることがあります
# HTTP ならば TCP *:80, HTTPSならば TCP *:443などのことが多いです
sudo lsof -i -P -nn
# 出力例
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# snmpd 1364 Debian-snmp 6u IPv4 43174 0t0 UDP *:161
# sshd 1387 root 3u IPv4 68716 0t0 TCP *:22 (LISTEN)
# docker-pr 67965 root 4u IPv4 50378714 0t0 TCP *:443 (LISTEN)
# docker-pr 67978 root 4u IPv4 49454775 0t0 TCP *:80 (LISTEN)
最後のLISTENの箇所のIPアドレスとポート番号が意図したものであることそもそも意図した行が存在することを確認してください
IPアドレスやポート番号が意図と異なる場合はサーバー側の設定に不備があります 行自体が存在しない場合は大抵プロセスが落ちています サーバーの設定等の調査をしてください
tcp/udpのポート番号がそれぞれ何用途かはWikipediaや IANAのページ などに書かれているので詳細はそれらを参照ください
「アクセスが拒否されました」等が表示される(Webに限らず)
クライアントとサーバーを含む通信経路上でアクセス拒否する設定(ファイアウォール, ACL, iptables等)がされている可能性が高いですまた、サーバー上のプロセスが落ちている場合もこの表示になる場合があります
前項「タイムアウトエラーが表示される」と同様に下記コマンドで調査してください ※コマンドの結果が問題ない場合は、「アクセス拒否されている場合(作成中)」を参照してください
# プロセスが待ち受けるport等が問題ないかを確認
sudo lsof -i -P -nn
なんとなく重い、特定時間だけ不調になる
原因として思いつくだけでもDDoS, プログラムのバグ, クライアント/サーバーの過負荷, 通信の輻輳, 通信経路上での物理故障, etc...
本腰を入れた調査が必要なので サーバー管理者、ネットワーク管理者を巻き込んで調査してください
調査に当たっては下記の情報が欲しいです
必須
・具体的な事象の説明
☓「通信エラーがでている」
○「画面に□□というメッセージが表示されている」
○「△回に▲度□□というメッセージが表示される」
○「動作に■秒かかるようになった」
・クライアントのIPアドレス
「192.0.2.123/24」や「192.0.2.123 255.255.255.0」等
・サーバーのIPアドレス
・サーバーのプロトコル
TCP/UDP/ICMP等とport番号
・事象を確認した時間帯
最低限、一時間単位で正確なものがありがたいです
利用していれば必須
・クライアントのVLAN番号
・クライアント名、位置情報等
・クライアントを接続しているスイッチ名とスイッチのインターフェース番号
・サーバーのVLAN番号
・サーバー名、位置情報等
・サーバーを接続しているスイッチ名とスイッチのインターフェース番号
あれば
・画面のスクショやログのコピー ※秘匿情報以外は加工せず生情報の方がベスト