web-dev-qa-db-ja.com

2つのLinuxホスト間の特定のUDPポートでネットワーク接続をテストする方法

2つのLinuxホスト間の特定のポートでネットワーク接続をテストする方法を探しています。

例として、サーバーAからサーバーBにポート514でsyslogイベントを送信しています。ただし、サーバーBはサーバーAからイベントを受信しません。サーバーAがイベントを送信しており、サーバーBのポート514が開いていることを確認できます。今のところ、これらのサーバー間のファイアウォールが514接続をブロックしていると思います。

この状況でポート514のファイアウォールが開いているかどうかを確認するのに役立つツールまたは方法はありますか?

1
Anh

できることがいくつかあります。

まず、実行していると思われるサービスが特定のポートでリッスンしているかどうかを確認します。これを行うには、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に到達できることを意味します。

1
Itai Ganot

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とも呼ばれます。

1
kasperd