2つのLinuxホスト間の特定のポートでネットワーク接続をテストする方法を探しています。
例として、サーバーAからサーバーBにポート514でsyslogイベントを送信しています。ただし、サーバーBはサーバーAからイベントを受信しません。サーバーAがイベントを送信しており、サーバーBのポート514が開いていることを確認できます。今のところ、これらのサーバー間のファイアウォールが514接続をブロックしていると思います。
この状況でポート514のファイアウォールが開いているかどうかを確認するのに役立つツールまたは方法はありますか?
できることがいくつかあります。
まず、実行していると思われるサービスが特定のポートでリッスンしているかどうかを確認します。これを行うには、netstatを使用します。
netstat -plunt
それ以上に、Wiresharkのようなパケットアナライザーやtcpdumpと呼ばれるLinux組み込みツールを使用できます。
Eth0という名前のネットワークインターフェイスカードのすべてのトラフィックを分析するには、次のコマンドを実行します。
tcpdump -i eth0
Nic eth0、プロトコルudp、ポート514のすべてのトラフィックを分析するには:
tcpdump -i eth0 -n udp 'port 514'
いずれかのマシンにファイアウォールがあると思われる場合は、次のコマンドを発行して、マシン上のすべてのアクティブなルールを一覧表示できます。
Sudo iptables -S
問題のトラブルシューティングに役立つiptablesコマンドの詳細については、 ここ を参照してください。
私が取る別のトラブルシューティング手順は、ポート514でSyslog送信機からSyslog受信機にTelnetで接続することです。
telnet hostB:514
セッションが開かれている場合、それはhostAが指定されたポートでhostBに到達できることを意味します。
traceroute
を使用して、特定のプロトコルのパケットが到達する距離を調べることができます。コマンドの例は次のとおりです。
traceroute -n -T -p 514 2001:db8::1
引数の意味は次のとおりです。
-n
は、リバースDNSを無効にします。これにより、コマンドの実行速度が大幅に向上します。-T
TCP SYNパケットを使用してトレースを実行します。-p 514
パケットをポート514に送信します2001:db8::1
宛先のIPアドレス。ホスト名も使用できます。いくつかの異なるポート番号の出力を比較して、1つのポートが他のポートと一貫して異なって扱われているかどうかを確認します。
traceroute
の異なるバージョンが存在することに注意してください。上記は、Ubuntu 16.04のtraceroute
パッケージのパッケージを使用してテストされました。そのバージョンはtraceroute.db
とも呼ばれます。