通信ができない際のトラブルシュート方法 Vol.01

こんにちは、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番号
・サーバー名、位置情報等
・サーバーを接続しているスイッチ名とスイッチのインターフェース番号

あれば
・画面のスクショやログのコピー ※秘匿情報以外は加工せず生情報の方がベスト

ブログの著者欄

梅崎 皓太

GMOインターネットグループ株式会社

ネットワークエンジニア。GMOインターネットグループ株式会社のバックボーンから商材までのネットワーク設計・構築・運用を担当しています。 写真はマイニング事業で北欧に飛んでいたときにブリザードに遭遇した後の写真です。冷たすぎてiPhone電源落ちちゃってビックリ

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW

GMOインターネットグループのSNSをフォローして最新情報をチェック