第10章 トラブルシューティング実践
PowerShell
Wireshark(パケット解析)
OpenSSL
10.1 ping
pingとは
pingは、対象ホストとのネットワーク疎通を確認する最も基本的なコマンドである。ICMP(Internet Control Message Protocol)を使用して、パケットが相手に到達し応答が返ってくるかを確認する。
基本的な使い方
# IPアドレスを指定
ping 192.168.20.10
# ホスト名を指定
ping lis-server.hospital.local
実行結果の読み方
ping 192.168.20.10
Reply from 192.168.20.10: bytes=32 time=1ms TTL=128 ← 応答あり(疎通OK)
Reply from 192.168.20.10: bytes=32 time=1ms TTL=128
Reply from 192.168.20.10: bytes=32 time=1ms TTL=128
Reply from 192.168.20.10: bytes=32 time=1ms TTL=128
Ping statistics for 192.168.20.10:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 1ms, Average = 1ms
応答がない場合
ping 192.168.20.99
Request timed out. ← 応答なし
Request timed out.
Request timed out.
Smart Assistでのping活用
| 確認対象 | コマンド | 目的 |
|---|---|---|
| LISサーバ | ping 192.168.20.10 | 院内のLISサーバとの疎通確認 |
| デフォルトゲートウェイ | ping 192.168.10.1 | ルーターとの疎通確認 |
| DNSサーバ | ping 192.168.1.53 | DNSサーバとの疎通確認 |
| 外部ホスト | ping 8.8.8.8 | インターネットへの疎通確認 |
注意事項
- ICMPがファイアウォールでブロックされている場合、pingが失敗しても実際のHTTPS通信は可能な場合がある
- pingの成功は「IPレベルの疎通」を確認するもので、アプリケーション層の通信を保証するものではない
現場で「pingが通りません!」と焦る人、めちゃくちゃ多いです。でも落ち着いて。病院のFWはICMPをブロックしていることが多い。特にインターネット向けのpingはほぼ通らないと思ってください。
pingが通らなくても、HTTPS通信は問題なく動くケースがほとんど。だから、外部向けの疎通確認はpingではなく Test-NetConnection -Port 443 か curl -v を使うこと。「pingが通らない」で止まらず、次のステップに進む判断力が大事です。
10.2 nslookup
nslookupとは
nslookupは、DNSの名前解決を確認するコマンドである。FQDNからIPアドレスへの変換が正しく行われているかを調べる。
基本的な使い方
# FQDNのIPアドレスを調べる
nslookup smartassist.example.com
実行結果の読み方
nslookup smartassist.example.com
Server: 192.168.1.53 ← 問い合わせ先のDNSサーバ
Address: 192.168.1.53#53
Non-authoritative answer:
Name: smartassist.example.com
Address: 52.194.10.20 ← 解決されたIPアドレス
名前解決が失敗する場合
nslookup smartassist.example.com
Server: 192.168.1.53
Address: 192.168.1.53#53
** server can't find smartassist.example.com: NXDOMAIN ← 解決失敗
DNSサーバを指定して問い合わせ
# 特定のDNSサーバを指定
nslookup smartassist.example.com 8.8.8.8
院内DNSで失敗するが、外部DNS(8.8.8.8)で成功する場合、院内DNSの設定(フォワーダ等)に問題がある可能性が高い。
Smart Assistでの活用
| 確認項目 | コマンド | 判断 |
|---|---|---|
| 宛先FQDNの解決 | nslookup smartassist.example.com | IPが返ればDNSは正常 |
| 院内DNSの動作確認 | nslookup smartassist.example.com 院内DNS_IP | 院内DNSで解決できるか |
| 外部DNSでの確認 | nslookup smartassist.example.com 8.8.8.8 | 院内DNS問題の切り分け |
10.3 curl
curlとは
curlは、URLを指定してHTTP/HTTPS通信を行うコマンドラインツールである。実際のHTTPS通信を模擬して接続テストを行える。
基本的な使い方
# HTTPS接続テスト
curl -v https://smartassist.example.com/health
# プロキシ経由での接続テスト
curl -v --proxy http://proxy.hospital.local:8080 https://smartassist.example.com/health
実行結果の読み方(成功例)
curl -v https://smartassist.example.com/health
* Trying 52.194.10.20:443...
* Connected to smartassist.example.com (52.194.10.20) port 443 ← TCP接続成功
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 ← TLS成功
* Server certificate:
* subject: CN=smartassist.example.com ← 証明書確認
* issuer: C=US, O=Amazon, CN=Amazon RSA 2048 M01
* expire date: Mar 15 2026 GMT ← 有効期限
> GET /health HTTP/1.1
> Host: smartassist.example.com
>
< HTTP/1.1 200 OK ← 200 OK = 成功
< Content-Type: application/json
<
{"status": "healthy"}
失敗例と原因
| エラーメッセージ | 原因 |
|---|---|
Could not resolve host | DNS解決失敗 |
Connection timed out | FWブロックまたはネットワーク不通 |
Connection refused | 宛先サーバがポートを開いていない |
SSL certificate problem | 証明書エラー(期限切れ、不正な発行者等) |
407 Proxy Authentication Required | プロキシ認証が必要 |
トラブルシューティングの基本は curl -v です。これさえ覚えておけば、大半の問題の切り分けができます。-v(verbose)をつけると、以下の情報が全部見えます:
- DNS解決結果:
Trying 52.194.10.20:443... - TCP接続:
Connected to ... - TLSハンドシェイク:
SSL connection using TLSv1.2 - 証明書情報:
issuer:とexpire date: - HTTPステータス:
HTTP/1.1 200 OK
「通信できません」と報告を受けたら、まず curl -v https://smartassist.example.com/health の出力を取ってもらう。この出力だけで、どの層で止まっているかが分かります。
10.4 ポート疎通確認
なぜポート疎通確認が必要か
pingが成功してもHTTPS通信が失敗する場合がある。これは、ICMP(ping)は許可されているが、TCP 443番ポートがブロックされているケースである。
PowerShellでの確認方法(Windows)
# TCP 443ポートの疎通確認
Test-NetConnection -ComputerName smartassist.example.com -Port 443
実行結果の読み方
ComputerName : smartassist.example.com
RemoteAddress : 52.194.10.20
RemotePort : 443
TcpTestSucceeded : True ← True = ポート疎通OK
ComputerName : smartassist.example.com
RemoteAddress : 52.194.10.20
RemotePort : 443
TcpTestSucceeded : False ← False = ポート疎通NG
telnetでの確認方法
# telnetがインストールされている場合
telnet smartassist.example.com 443
画面が真っ暗になれば接続成功。「接続できませんでした」と表示されれば失敗。
10.5 DNS障害切り分け
DNS障害の症状
Smart Assist PCからクラウドへの通信が失敗し、nslookupでFQDNの名前解決ができない場合、DNS障害を疑う。
切り分けフローチャート
10.6 プロキシ障害切り分け
プロキシ障害の症状
- curlで接続タイムアウトが発生する
- 407 Proxy Authentication Required が返される
- 403 Forbidden が返される
切り分けフローチャート
プロキシ環境のトラブルで意外と見落とすのが、プロキシ除外設定(bypass list)の確認。Smart Assistの宛先がプロキシ除外リストに入っていたら、プロキシ設定があっても直接接続しようとします。
Windowsなら以下で確認:
netsh winhttp show proxyでシステムプロキシ設定と除外リストを表示- 環境変数
NO_PROXYの値を確認 - IEのプロキシ設定画面の「例外」欄を確認
逆のパターンもあります。「プロキシ経由で通信するはずなのに、直接接続しようとしてタイムアウトする」場合、HTTPS_PROXY 環境変数が設定されていない可能性大。
10.7 SSLインスペクション障害
症状
- curlで
SSL certificate problem: unable to get local issuer certificateが表示される - Smart Assistクライアントが「証明書エラー」で接続に失敗する
確認方法
# curlで証明書の詳細を確認
curl -v https://smartassist.example.com/health 2>&1 | grep -i "issuer"
* Server certificate:
* issuer: CN=Hospital Proxy CA ← AWSの証明書ではなく、病院のプロキシCA
発行者がAWSやLet's Encryptなどの公的CAではなく、病院内部のCA名になっている場合、SSLインスペクションが行われている。
対処の流れ
| ステップ | 内容 |
|---|---|
| 1 | curlの-vオプションで証明書の発行者を確認する |
| 2 | 発行者が病院内部のCAであれば、SSLインスペクションが原因 |
| 3 | 病院IT担当者にSmart Assistの宛先FQDNをSSLインスペクション除外リストに追加するよう依頼する |
| 4 | 除外が難しい場合、プロキシCAの証明書をSmart Assist PCの信頼されたルート証明書ストアにインストールする |
「Smart Assistが繋がりません」と連絡が来たとき、この順番で確認すれば効率的です。上から順に確認して、最初に失敗したところが原因です。
- IPアドレス確認:
ipconfigでIPアドレスとGWが正しいか - GW疎通:
ping デフォルトGW - DNS解決:
nslookup smartassist.example.com - ポート疎通:
Test-NetConnection smartassist.example.com -Port 443 - HTTPS接続:
curl -v https://smartassist.example.com/health - 証明書確認: curl -v の issuer と expire date を確認
この6ステップをメモに書いてPCの横に貼っておくと、電話対応中でもスムーズに指示が出せます。
10.8 証明書期限切れ
症状
- 今まで正常に動作していたSmart Assistの通信が突然失敗する
- curlで
SSL certificate has expiredが表示される
確認方法
# 証明書の有効期限を確認
curl -v https://smartassist.example.com 2>&1 | grep "expire"
* expire date: Jan 15 2025 GMT ← 有効期限が過去の日付
OpenSSLでの詳細確認
# サーバ証明書の詳細を表示
openssl s_client -connect smartassist.example.com:443 -servername smartassist.example.com < /dev/null 2>/dev/null | openssl x509 -noout -dates
notBefore=Jan 15 2024 00:00:00 GMT
notAfter=Jan 15 2025 00:00:00 GMT ← 有効期限
対処の流れ
| 原因 | 対処 |
|---|---|
| Smart Assistサーバの証明書期限切れ | Smart Assist運用チームに証明書更新を依頼 |
| SSLインスペクション用CA証明書の期限切れ | 病院IT担当者に更新を依頼 |
| Smart Assist PCの時刻がずれている | PCの時刻を正しく設定する(NTP確認) |
予防策
- 証明書の有効期限を定期的に監視する仕組みを構築する
- 期限切れの30日前にアラートを出すよう設定する
- 自動更新が設定されている場合でも、更新の成功を確認するプロセスを設ける
トラブルシューティング総合フローチャート
次章では、Smart Assistの導入から本番稼働までの実務プロセスを学ぶ。