2014-06-16 18:17:25 +0000 2014-06-16 18:17:25 +0000
217
217

アドレス:ポートにpingすることは可能ですか?

私はネットワークに詳しくないのですが、Linuxのpingコマンドに関連して以下のような質問があります。

アドレスにしかpingできませんか?例えば:

miner@raspberrypi ~ $ ping onofri.org
PING onofri.org (67.222.36.105) 56(84) bytes of data.
64 bytes from onofri.org (67.222.36.105): icmp_req=1 ttl=47 time=202 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=2 ttl=47 time=206 ms
64 bytes from onofri.org (67.222.36.105): icmp_req=3 ttl=47 time=215 ms

または アドレス:ポート にも ping することができます。**私はこの1つを試してみると、それは動作しません:

miner@raspberrypi ~ $ ping onofri.org:80
ping: unknown host onofri.org:80

それはアドレス:ポートのようなものをpingすることが可能ですか?それが可能であれば、なぜ私が試したものは動作しませんか?

回答 (11)

311
311
311
2014-06-16 18:19:26 +0000

ポートは、 UDP TCP の概念です。Pingメッセージは技術的には、 ICMP の一部である ICMP Echo Request ICMP Echo Reply と呼ばれています。ICMP、TCP、UDPは「兄弟」であり、お互いをベースにしているのではなく、IPの上で動作する3つの別々のプロトコルです。あなたが**できることは、pingのようなポートスキャナを使用することです。

86
86
86
2014-06-16 18:24:11 +0000

私は Telnet を使用していますが、それは追加ダウンロードなしで多くのプラットフォームに組み込まれているからです。

テストしたいポートに接続するために telnet コマンドを使用してください。以下のようなメッセージ、またはサービス自体からのメッセージを取得した場合、ポートは生きています。

Minty16 ~ $ telnet localhost 139
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

接続しているサービスのコマンドシーケンスを知っている場合は、コマンド HTTP/FTP GET を入力することができます。これは、HTTP 500 エラーのようにクライアントに送信されたエラー情報を表示してくれるので、サービス自体をテストするのに非常に便利です。

49
49
49
2014-06-16 21:15:05 +0000

netcatを使って特定のポートに接続して、接続が得られるかどうかを確認することができます。v フラグはポートが開いているか閉じているかを示すために冗長度を上げます。z フラグは、接続があると netcat を終了させます。また、接続が確立されたかどうかを確認するために、$?を通した終了コードを使用することができます。これは、ICMP の代わりに TCP 上のトレースルートに似たことをします。しかし、これはやりすぎかもしれません。

sigh コメントにコードを入れることができないので、編集して追加しました。Knoppix は netcat のバージョンによって何か違うことをしているかもしれませんが、Linux Mint

$ nc -zv localhost 22
localhost [127.0.0.1] 22 (ssh) open
$ echo $?
0
$ nc -zv localhost 23
localhost [127.0.0.1] 23 (telnet) : Connection refused
$ echo $?
1
``` からは以下のようになっています。
48
48
48
2014-06-17 15:35:04 +0000

はい、それを行うには、 HPing を使用してください:

$ sudo hping -S -p 80 google.com
HPING google.com (p5p1 77.237.27.37): S set, 40 headers + 0 data bytes
len=46 ip=77.237.27.37 ttl=58 id=25706 sport=80 flags=SA seq=0 win=29200 rtt=7.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25707 sport=80 flags=SA seq=1 win=29200 rtt=7.4 ms
len=46 ip=77.237.27.37 ttl=58 id=25708 sport=80 flags=SA seq=2 win=29200 rtt=8.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25709 sport=80 flags=SA seq=3 win=29200 rtt=7.8 ms
^C
--- google.com hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 7.4/7.8/8.5 ms

それはちょうどpingのように、生のIPパケットを作成するためにルート権限(またはSELinuxの機能)を必要とすることに注意してください(これはあなたのシステム上で最も可能性の高いsuidです)。

21
21
21
2015-01-21 08:02:45 +0000

ping (port ping) の機能をエミュレートしたクロスプラットフォームの TCP ポートテストである Paping を使用することができます

_ (code.google.com が減価償却されているので Github も参照してください)_

paping -p 80 google.com
19
19
19
2014-06-23 09:57:58 +0000

また、npingnmapの一部)を使用することもできます。

8
8
8
2015-12-18 22:11:18 +0000

Pythonを使ったシェルでは、以下のように短くないワンライナーとして実行することができます。

7
7
7
2017-06-06 13:07:40 +0000

参考までに、Vivek Giteの投稿を共有したいと思いました。 https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/#comment-920398

彼は様々な方法をリストアップし、そのうちのいくつかはすでにここに投稿されています。しかし、私にとって最も驚いたのは、bash以外には何もないことでした:

(echo >/dev/tcp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/udp/{host}/{port}) &>/dev/null && echo "opened" || echo "closed"
(echo >/dev/tcp/www.cyberciti.biz/22) &>/dev/null && echo "Opened 22" || echo "Closed 22"
(echo >/dev/tcp/www.cyberciti.biz/443) &>/dev/null && echo "Opened 443" || echo "Closed 443"

または超シンプルなバージョン: 以下のコマンドパターンの出力を見ただけで:

echo >/dev/{tcp|udp}/{host}/{port}

ランダムなドッカーコンテナで作業するときに便利です。

3
3
3
2015-06-15 10:48:37 +0000

ここにwatchツールを追加します:

watch nmap -p22,80 google.com

Every 2,0s: nmap -p22,80 google.com Mon Jun 15 16:46:33 2015

Starting Nmap 6.40 ( http://nmap.org ) at 2015-06-15 16:46 NOVT
Nmap scan report for google.com (127.0.0.1)
Host is up (0.0012s latency).
rDNS record for 127.0.0.1: google.com
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds
3
3
3
2016-07-25 18:26:01 +0000

それは nmap

の例で簡単です:

#sintaxis
nmap -p [port] hostName
#first is command, after scan ports, type port - port or range ports, and ip or name of website...

## Scan port 80
nmap -p 80 onofri.org

## Scan TCP port 80
nmap -p T:80 onofri.org

## Scan UDP port 53
nmap -p U:53 onofri.org

## Scan two ports ##
nmap -p 80,443 onofri.org

## Scan port ranges ##
nmap -p 80-200 onofri.org

## Combine all options ##
nmap -p U:53,111,137,T:21-25,80,139,8080 onofri.org
nmap -p U:53,111,137,T:21-25,80,139,8080 server1.cyberciti.biz
nmap -v -sU -sT -p U:53,111,137,T:21-25,80,139,8080 onofri.org

## Scan all ports with * wildcard ##
nmap -p "*" 192.168.1.1

## Scan top ports i.e. scan $number most common ports ##
nmap --top-ports 5 onofri.org
nmap --top-ports 10 onofri.org

より多くの情報については、これを参照してください:

コマンドラインでこれを入力します: man nmap http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ http://www.tecmint.com/nmap-command-examples/

1
1
1
2014-06-19 15:58:08 +0000

そのノードの80番ポートからの応答を得ようとしていますか? PINGはポートとは関係のないICMPを使って特定のホストとの通信を確立しようとします。

代わりに http://nmap.org/ でポート情報をチェックして通信をテストしてみてください。

関連する質問

6
10
3
5
5