サーバーのファイヤーウォールに怪しいIPアドレスが記録されている時に、どこからのアクセス?と調べるコマンドの一つが、whois コマンド。
whois に続いて IPアドレスを引数指定すると、そのIPアドレスを含む所有者情報が表示されます。
whois コマンドが実装されていれば、FreeBSDじゃなく MacOS でも WSL2 でもOK。私の場合は、手近なターミナルエミュレータがたまたま接続しているホストか、MacOSを使います。
今日、たまたま、手近なターミナルから whois コマンドを発行したところ、なぜか、次のようにOperation timed out とエラーになってしまいました。
# whois 98.159.37.42 whois: connect(): Operation timed out
これはサーバーにつながらなかったことを意味しています。サーバーが落ちている?
隣のターミナル(別のホスト)からwhoisコマンドを実行すると、ちゃんとレスポンスがある。
RPI2 v1.2 で動いているFreeBSD/arm64 だけエラーになる。
このホスト、MySQLのために使っていて、MySQLは普通に動いているので、なぜ、このホストだけ?
エラー検索してみると、ファイヤーウォールがブロックしている という結果が見つかりましたが、隣のサーバーでは問題ないので、ファイヤーウォールということはあり得ない。
ここで、ハタと気づいた!
ファイヤーウォールがブロックする以外に、外にパケットが出られないってことは、ゲートウェイが未設定。しかし、インストールする時に外のネットワークをアクセスしたじゃない!!
netstat -r
で、確認してみると、、、、、あっ、default が無い。ゲートウェイ設定されていない。。。。
わかりました。設定する時は DHCP を使ってOSカスタマイズして、その後、固定IPを割り振ったもので、自動でゲートウェイ情報を取ってこられなかったのだ。アプリケーションが正常に動いていたのは、イントラネット内しか通信しないため。
ホストハードウェアは関係ありませんでした。
route add で、ゲートウェイを追加して問題解決。