web-dev-qa-db-ja.com

特定のポートの2つのホスト間に存在するルートを確認する方法

特定のポート(例:1433)の2つのホスト間にルートがあるかどうかを確認する方法。

6
ohho

「ip route get ADDRESS」を使用すると、システム内のルートconfigured、つまり最初のホップを確認できます。

$ ip route get 192.168.10.10
192.168.10.10 via 192.168.10.1 dev eth0  src 192.168.10.11 
    cache 

ポートの接続を確認するには、単純なtelnetを実行する必要があります。

$ telnet 192.168.10.10 1433
...

幸運を!

7
mrc

まず、routeアクションはネットワークレイヤーで発生し、portトランスポートレイヤーで定義されることを知っておく必要があります。したがって、2つのホスト間にルートが存在しても、ホストのポートに到達できるわけではありません。

2つを想像するホストは2つの家、港は家の門、ルートは道路です。家の間に多くの道路を作ることができます。しかし、家に着いたとき、家の門が閉まっていると入れません。

[〜#〜]更新[〜#〜]

質問にコメントするには、次のようなコマンドを使用できます。

ルートが存在することを確認するには:

  • ルート
  • traceroute

開いているポートを確認するには:

  • telnet
  • netcat

マンページを読んで、使ってみてください。

6
cuonglm

他の人が述べたように、ルートがあることは必ずしも接続性があることを意味するわけではありません。それがテストしようとしているものである場合、 netcat は、ポートが開いているかどうかを確認するためにスキャンする-zオプションを提供します。 (ルートがない場合は、-wでタイムアウトを指定することもできます。デフォルトのタイムアウトは通常数分です。)

$ nc -z 127.0.0.1 22; echo $?
0
$ nc -z 127.0.0.1 11; echo $?
1

終了コードを使用して、そのアドレスとポートへの接続を実証したかどうかに基づいて何かを行う(または行わない)ことができます。

if nc -z 127.0.0.1 22; then
    echo "SSH server is available."
else
    echo "Cannot connect to SSH server."
fi

-vオプションを指定すると、出力がより詳細になります。これを使用して ポートの範囲をスキャンする

$ nc -vz 127.0.0.1 22-25
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused
Connection to 127.0.0.1 25 port [tcp/smtp] succeeded!
$ echo $?
0

上記のように、マルチポートスキャンモードでは、いずれかのポートが接続に成功した場合は終了コードがtrue(0)になり、それ以外の場合はfalseになります。

netcatにはいくつかの異なるバージョンがあります。上記の例で使用されているのはDebian 9のnetcat-openbsdパッケージで、これは「従来の」netcat(netcat-traditionalパッケージ)を書き換えたものです。これらの特定のパラメーターと終了コードについては、従来のバージョンは実質的に同じです。 netcatコマンドラインパラメーターと終了コードに問題がある場合は、使用しているバージョンを確認してください。 ls -l /bin/nc*は洞察を与えるかもしれません。

1
cjs

私はmtrが本当に好きです http://www.bitwizard.nl/mtr/http://winmtr.net/ にもWindowsバージョンがあります。

1
Richard Salts