ncコマンドでTCP/UDPポートの疎通確認をする

3号です。

このシノギをしていると謎の力によって通信が遮断されてとても困ることがあります。 私の現場ではfluentdを運用しているのですが、つい先ほど転送元ホストから転送先ホストにログが転送できなくなってしまいました。

fluentdはログの受け口として24224番ポートをTCP、UDP双方でリスンするのでこのポートを調査します。

まずTCP24224ポートの調査です。telnetを用いるのが定番ですが掲題のncコマンドでもできるので今回はncコマンドでやってみます。

次のようにして転送先ホストで24224番をTCPでリスンします。

nc -l -p 24224

そして転送元から次のようにhello tcpというメッセージを送ります。

echo "hello tcp" | nc TARGET_HOST 24224

疎通ができれば転送先にhello tcpというメッセージが表示されます。

続いてUDP24224番を調査します。ncコマンドに-uをつけることでUDPでリスンすることができます。

nc -l -u -p 24224

転送元ホストから同じく-uオプションをつけてUDPでメッセージ(hello udp)を送信。

echo "hello udp" | nc -u TARGET_HOST 24224

UDP24224番の疎通ができるのであればメッセージが表示されます。

私の環境ではダメでした。どうやらUDP24224番に謎の力が働いたようです。突然です。iptablesも動いてないし。

困ったなあ、と思いながらこのブログを書きました。

追記

今、fluentdはheatbeat_type tcpを設定すればudp空いてなくてもいいんだよ、と教えてもらえました。なぜ突然udpがダメになったか不思議なんですが、困らなくて済みそうです。