ネットワークが繋がらないときに調査する8項目+α
クライアント側(接続元)での確認
ping
ping ${host} Ex.) ping 54.168.196.212 ・ ・ ・ 6 packets transmitted, 6 received, 0% packet loss, time 5387ms <== ここが0% packet lossじゃない場合おかしい rtt min/avg/max/mdev = 0.432/0.471/0.533/0.041 ms
Check Point
- そもそもサーバ自体へのアクセスが正常に出来ていない
- pingはicmpというプロトコルを使っているのでicmpの制限がかかっていないかチェック
- pingはport指定できない(Solarisのみ出来る?)ので、port指定したい場合は以下の「nping」コマンドを使う
nping
nping ${host} --tcp -p ${port} Ex.) # nping 54.168.87.131 --tcp -p 3000 Starting Nping 0.5.51 ( http://nmap.org/nping ) at 2015-10-09 05:39 UTC . . . Max rtt: 2.705ms | Min rtt: 2.363ms | Avg rtt: 2.494ms Raw packets sent: 3 (120B) | Rcvd: 3 (132B) | Lost: 0 (0.00%) # ⇒Lostが 0 (0.00%)なことを確認 Tx time: 2.34737s | Tx bytes/s: 51.12 | Tx pkts/s: 1.28 Rx time: 2.34737s | Rx bytes/s: 56.23 | Rx pkts/s: 1.28 Nping done: 1 IP address pinged in 2.36 seconds
Check Point
- Lostが0 になっていることを確認
nmap
nmap ${host} Ex.) nmap 54.199.127.181 Starting Nmap 5.51 ( http://nmap.org ) at 2015-10-09 05:29 UTC Nmap scan report for ******************** Host is up (0.0025s latency). Not shown: 985 filtered ports PORT STATE SERVICE 22/tcp open ssh 23/tcp closed telnet 80/tcp closed http 3000/tcp open ppp 10000/tcp closed snet-sensor-mgmt 10001/tcp closed scp-config . . .
Check Point
- 目的のportのSTATEがopenかどうか確認する
telnet
telnet ${host} ${port} Ex.) telnet 54.168.196.212 22 Trying 54.168.196.212... Connected to 54.168.196.212. Escape character is '^]'. SSH-2.0-OpenSSH_5.3
CheckPoint
- アクセス出来ないときは「Trying ${host}...」で止まったままになる
サーバ側(接続先)での確認
ss
ss -lnpt | grep ${対象port} Ex.) ss -lnpt | grep 3000 LISTEN 0 128 *:3000 *:* users:(("ruby",1548,8
CheckPoint
- port番号の前が*でなく特定のipだった場合は、そのipからのアクセスしか受け付けないという意味
- railsやsinatraなどのrackアプリケーションでweblickを使う場合、ここがデフォルトでは127.0.0.1になっている場合があるので注意
[Ruby] sinatraがポート4567を指定しても繋がらない - 脳汁portal
iptables
iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
CheckPoint
- policyがDROPになっている場合は記載されているルール以外の全てのアクセスをRejectするので注意
- AWSデフォルトの「REJECT all -- anywhere anywhere reject-with icmp-host-prohibited」も結構悪さをする印象です
AWSでpingは通るのに実際に接続しようとすると「No route to host」って言われる原因 - 脳汁portal
netstat
netstat -antu Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 96 10.123.29.206:22 133.237.7.83:61023 ESTABLISHED tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN udp 0 0 0.0.0.0:68
CheckPoint
- 対象のportのStateがListenになっているか確認する