netstat が万能だと思っていた話
Linux サーバで、どんなポートが空いてるか(外からつなぐことができるか)確認するには、
$ netstat -nlt
で十分だろう。と、ずっと思ってた。
ある日、Elastic Beanstalk で Node.js の環境を作った。どんな風に動いているんだろうと疑問に思って、ログインしてみて、netstat を打ってみたんだけど、どういうわけか 80 番が開いていない。でも 80 番に対するアクセスはできる。どういうことだろう?
結論から言うと、iptables で 80 番が別のポートに転送されていた。どういう調べ方でその原因を見つけたか忘れたけど、そういう結論だった。
参考: 80番ポートへ届いたパケットをiptablesでローカルの上位ポートに転送する - Qiita
netstat で全てわかると思ってた自分にとってはだいぶショックだった。今度から開いてるポート調べるときには netstat だけじゃなくて iptables も確認するようにしよう。
(6月11日追記)
昨今バズってる記事「訳:非推奨になったLinuxネットワークコマンドの代替コマンド - aws memo」に従って ss -nlt したけど結果は変わらなかった。