はじめに
タイトルの通りですが、外部連携先のサーバやDBに疎通確認するとき、
皆さんはどのコマンドを使っていますか?
個人的にはncコマンドを推したい
疎通確認には nc(Netcat) コマンド
が便利です。
以下のように使います。
$ nc -zv <ホスト名 または IPアドレス> <ポート番号>
$ nc -zv google.com
下記のように、Connection to ... succeeded!
と表示されれば疎通成功です。
user@localhost:~$ nc -zv google.com 80
Connection to google.com (142.250.207.46) 80 port [tcp/http] succeeded!
user@localhost:~$
とりあえずpingを使うのは?
とりあえずpingを使ってみる。っていうのはあるあるだと思います。
ただこれ、ICMPプロトコルを使うので、相手側でICMPが許可されてないと普通に落ちます。
(セキュリティグループとかファイアウォールとかで、結構閉じられてたりします。)
curlやpsqlでいきなり試すのはちょっと…
最終的にはcurlでAPI叩いたり、psqlでDBにちゃんとアクセスできることを確認するのがベスト。
ただ、その前に、「もそもネットワークレベルで接続できているのか?」ってのを確認したいところである。
アプリ層で確認すると、繋がらなかった時の切り分けが面倒になりがち。
ncコマンドでレイヤーを分けて確認したいですね。
昔ながらのtelnetはどうなの?
定番ではあるが、セキュリティ的に非推奨となっていることが多い。
個人的にも、あまり使いたくない派です。
ncは地味だけど、やっぱり便利!
- TCPポート開いてるかどうかを素直に教えてくれる
- UDPにも対応してる(地味に強い)
とはいえ、AmazonLinuxなんかではデフォルトでインストールされていないので、
以下コマンドでインストールしておきましょう
$ dnf install nmap-ncat