Avintonエンジニアが受けた研修、Linuxシステム管理基礎セミナーより、ネットワーク障害時の基本的なトラブルシューティングの方法を紹介したいと思います。
本稿ではCentOS7を利用している環境において、ネットワーク障害が発生した際に
GUIを利用しトラブルシューティングを行う基本的な手順について解説します。
環境・使用するツール
CentOS7
Wireshark
CentOS7環境について
ネットワークのトラブルシューティングを意図したドキュメントであるため、CentOSのインストールに関してをここでは割愛します。Web上に多くの手順書があるためご参照頂きたく思います。例としては下記などがあります
CentOSのインストール方法 – リナックスアカデミー
なお、GUIでのトラブルシュートを意図したドキュメントであるため、CentOSの環境もGUIであることを前提とします。
トラブルシューティングをする際に確認すべき項目
原因究明の基本的なプロセスとして、下記を確認してください。
- ログの確認
- ping疎通の確認
- Telnet、SSH コマンドによるTCP通信の確認
- lsofコマンドによるポートの状況の確認
- 通信内容の確認
流れとしては、何かしらのエラーが生じている場合、ログに記録されている可能性が高いため、まずはこちらを確認します。その際に大まかで構わないので、エラーが生じている時間帯が分かっていると確認が容易となります。時間帯が分かれば確認すべきログが限定されるためです。
ログ上で原因が特定できない場合、OSI参照モデルで言うところの低レイヤーから接続を実際に試し、確認します。
1 物理的につながっているか
2 土台となるプロトコルが正常か
3 ポートは空いているか
4 通信内容に不審な点はないか
といった順で確認します。
では、具体的な確認方法を見ていきましょう。
ログの確認
ネットワーク障害が発生した際に、ログに何らかの障害情報が記載されている可能性が高いと考えられます。具体的には下記のログを確認することが有効と考えられます。
1 |
var/log/messages |
一般的なログ。サービス起動時の出力など
1 |
/var/log/secure |
認証、セキュリティ関連のログ
1 |
/var/log/maillog |
メール関連のログ
1 |
/var/log/dmesg |
カーネルが出力したメッセージのログ。ハードの故障の際にはこちら。
1 |
/var/log/httpd |
WEBサーバに関連のログ
その他Linux上のログは var/log/ 配下に出力されます。
各種 log を確認し、failなどのエラーを表す記載があるようでしたら、
付随するメッセージに従い、原因を除去します。
上記はネットワーク障害ではないが、PWチェックで弾かれたなど、エラーの原因が記載される。
ping疎通の確認
1 |
$ ping 192.168.xxx.xxx |
と入力してpingを実行する。なお、Ctlr + C でpingを停止できます。
192.168.1.1へのpingは成功 192.168.1.2へはunreachable、つまり到達できなかったことを表す。
ping送信によって、ネットワーク自体が接続できているかが確認できます。もしpingに失敗する場合、ケーブルが抜けていないか、ルータやスイッチなど中継器で通信が遮断されていないか確認します。
TCP疎通の確認
TCPにて通信が可能であるか確認します。
具体的には対象となる端末へTelnet、もしくはSSHで接続してみるのが有効と考えられます。Telnet、SSHはサーバ管理にて広く利用されているプロトコルとなります。
特にサーバ利用されている端末の場合、多くの場合どちらかが有効となっていると考えられますため、こちらを利用します。もし有効となっていない場合は、FTPなどで通信を行うと同様にTCPにて通信できているか確認可能ですので、お試し頂ければと思います。
Telnet、SSHにかぎらず、TCPを利用した接続の場合、ポート番号を指定して接続することになりますため、該当のポート(一般的にはTelnet:23 SSH:22)が閉じている可能性や、サービスが動作していない場合もありえること留意の上、確認ください。その場合もFTPにて通信し、疎通できているか併せて確認すると、TCPでの通信が可能か確認できると思います。
接続方法としては、下記の通りです。
1 |
$ Telnet 192.168.xxx.xxx |
正常に接続できれば Login と表示されアカウントとパスワードが要求されると思いますが、この時点でTCPでの接続は確立していると考えて問題ないと思います。
netstat、lsofコマンドにてポートの使用状況の確認
一般的にポートの確認の際には netstat コマンドによる確認がなされると思います。
もちろんこちらでも問題ないですが、lsofコマンドだと、アプリケーションがどのポートを使用しているか確認可能なため、特定のアプリケーションなどによって利用されているポートが特定できている場合はこちらをお勧め致します。
障害が発生しているアプリケーションのポートが閉じている場合は、こちらを開けるなどの対応が考えられます。
ポートを指定して、状況を確認する場合は下記のようにコマンドを入力します。
例) Telnet での通信の状況を確認する場合
1 |
$ lsof -i:23 |
なお何にも使用されていない(閉じている)場合、コマンド実行しても結果は特に返って来ません。
通信内容の確認
Wiresharkを使ってパケットキャプチャを実施します。
[Wiresharkのインストール方法]
端末を起動後、root 権限にて下記コマンドを実行
1 |
# yum install -y wireshark-gnome |
しばらくすると、wiresharkのインストールが完了するため、その後 アプリケーション -> インターネット にてWiresharkが登録されているのを確認してください。
WireShark を起動すると下記のような画面が表示されます。
[ Interface List ] にてキャプチャを実施するインターフェイスを選択します。
IPアドレスが表示されるため、こちらを基準に選択するのが容易かと思います。
キャプチャを実行することで、リアルタイムで通信を確認することができます。
具体的な使い方としては、下記のページなどが参考になると思います。
さくらのナレッジ
WireSharkオフィシャルサイト
参考:特定非営利活動法人エルピーアイジャパン『Linuxシステム管理標準教科書』
まとめ
いかがでしたか?
Avintonのアカデミー(無料で学べる技術サイト)ページでもAvinton社員が作成した。Linuxトレーニングがあり、基本的なコマンドの使用方法などについて解説しています。チェックしてみてください。
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?