疎通確認するコマンドは、色々あります。
telnetコマンドは、どんなネットワーク機器でも実行できますので、
応答によって、どこに問題があるか分かるようにしておきましょう。
tracerouteコマンドは、どこの機器の設定が問題かが分かりますので、よく利用します。
# telnet 192.168.10.10 80 Ctr + ] quit
# telnet x.x.x.x XX
Connected toが表示された場合目的の機器まで疎通できてる場合、接続先機器のポートに、接続できています。
「Ctrl ]」の後、quitで切断しましょう。
# telnet localhost 80 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. ^] telnet> quit
Connection refusedは、サーバまで疎通できるが、サーバでポートがリッスンしていない場合の反応です。
# telnet localhost 23 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused
無応答の場合、Ctrl + C
で中止しましょう。これは、ファイアウォールでブロックされる場合の反応になります
# telnet aws.com 80 Trying 54.240.188.103... Connected to aws.com. Escape character is '^]'. ^CConnection closed by foreign host.
どこの経路で問題があるかがわかりますので、よく利用します。
tracerouteは相手サーバがリッスンしているかしていないかは関係ないです。サーバがリッスンしていないポートへも接続確認ができます。
traceroute -n 192.168.0.10 <- -n で名前解決しない traceroute -T -p 80 192.168.0.10 ← (-T = TCP) traceroute -U -p 53 192.168.0.10 ← DNS (-U = UDP)
STATEが、filterdになっていたら、FWでブロックされています。
# nmap -Pn -sT -p 3306 192.168.0.100 Starting Nmap 6.40 ( http://nmap.org ) at 20xx-09-21 16:36 JST Nmap scan report for test-db-01.example.local (192.168.0.100) Host is up. PORT STATE SERVICE 3306/tcp filtered mysql Nmap done: 1 IP address (1 host up) scanned in 2.09 seconds
# nmap -sU -p 161 127.0.0.1 Starting Nmap 6.40 ( http://nmap.org ) at 2019-09-18 00:47 JST Nmap scan report for localhost (127.0.0.1) Host is up (0.00024s latency). PORT STATE SERVICE 161/udp open snmp Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds #
# nc -vz 192.168.0.10 22 Connection to 192.168.0.10 22 port [tcp/ssh] succeeded!
# nc -vz -u 192.168.0.10 53
netcatには派生版があり、微妙にオプションが違うので、注意が必要です。
特にNmap付属は、「-z」オプションがなく、Scanのテストする時には工夫が必要になります。
# nc -v localhost 22 < /dev/null ; echo $? # nc -v localhost 22 < /dev/null || echo NG # nc -v localhost 22 < /dev/null > /dev/null 2>&1 || echo NG