address:portをpingすることはできますか?


212

私はネットワーキングには興味がありません。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

または、onofri.org80のようにaddress:portにもpingを実行できますか?

これを試しても動作しません:

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

address:portのようなものにpingすることは可能ですか?可能であれば、なぜ私が試したことがうまくいかないのですか?


8
何を達成しようとしていますか?正しいサービス操作を検証するには、実際にサービスを照会し、応答を評価する必要があります。たとえば、Webサーバーは接続を受け入れますが、構成の誤りのためにエラーを返します。
ダニエルB 14年

5
それがTelnetの好きなところの一部です。Webサーバーに接続しGET /index.html HTTP\1.1、200応答(またはエラーコード)を入力して、結果のマークアップとともに表示できます。
フランクトーマス14年

7
@FrankThomas HTTP\1.1?本当に?
glglgl 14年

5
@NavinたぶんHTTP/1.1...
glglgl

3
@glglgl; 何?スラッシュが行くべき場所にハックを入れたことはありませんか?しかし、あなたは正しいです、それはスラッシュでなければなりません。
フランクトーマス14年

回答:


20

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

(code.google.comが減価償却されているため、Githubも参照してください)

paping -p 80 google.com

8
このプログラムが何をするのかについてのいくつかの説明が役立つでしょう。
デビッドシュワルツ

16
私がしたように、この答えを見つけた人にとっては、papingを見つけることはリポジトリになく、ARMでコンパイルさえしない古代のコードです-さらに「hping」答えまでスクロールダウンします。ポートをテストする必要がある場合、pingに最適なドロップインであり、ARMを含むさまざまなリポジトリ(Ubuntu、Archなど)で簡単にアクセスできます。
マーク

どうすればインストールできpapingますか?リポジトリを訪問しましたが、リリースはありません。ああ、決して気にしないでください。Googleコードには当時アクセスできませんでした。
シャヤン

310

ポートはUDPTCPの概念です。Pingメッセージは、ICMPの一部であるICMP Echo RequestおよびICMP Echo Replyと技術的に呼ばれます。ICMP、TCP、およびUDPは「兄弟」です。それらはお互いに基づいているのではなく、IP上で実行される3つの別個のプロトコルです。

したがってping、ポートすることはできません。あなたが何をすることができません、のようなポートスキャナを使用していますnmap

nmap -p 80 onofri.org

telnet onofri.org 80他の回答の1つで提案されているように、を使用することもできます(ポートが閉じているか、フィルターされている場合はエラーになります)。


22
+1あなたはそれを正しく理解しています。ICMPはIP上に構築され、IPではなくIPアドレスの概念があります。TCPとUDPもIPの上にあり、「ポート」を追加するのはこれらのプロトコルです。ICMP、TCP、およびUDPは、それらが運ばれるプロトコルに関してすべて同じ「レベル」にあります。
ジェイソンC 14年

14
+1。多くの人は、何かにpingできない場合、接続できないと考えます...しかし、あなたが言うように、ICMPはTCPやUDPとは異なります。たとえば、TCP 80のWebページを提供する場合、ファイアウォールでTCP 80を開くだけでよいので、他には何もありません(たとえば、同じIPへのPingをブロックできます(...する必要があります!)
Olivier Dulac 14年

6
情報を正確に保つために、ICMPはTCPやUDPのようなトランスポート層プロトコルではありません。多くのプロトコルと同様に、ネットワークの概念モデルに完全に適合するわけではありませんが、一般にIPと同様にネットワーク/インターネットワーク層プロトコルと見なされます。また、L3.5プロトコルと呼ばれることもあります。
YLearn 14年

2
@BenjiWiebeは同意しましたが、もう一度言いますが、正確さのために声明を作成する必要があります。これまでのところ、ICMP、TCP、およびUDPが関連しているというだけです。最も高い投票数のコメントは、それらがすべて同じ「レベル」にあるとさえ言えます。これは平均的なユーザーには何の違いもありませんが、このサイトにアクセスする非平均的なユーザーはたくさんいます。
YLearn 14年

4
@OlivierDulac ブロックする必要があるかどうかわかりません。私が知っているほとんどのウェブサーバーは開いたままにします。ICMPはインターネットを行き来させます。なぜ彼らはあなたに到達できない場合、彼らはあなたに到達できないと考えたいですか?
ランチャー14年

86

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

telnetコマンドを使用して、テストするポートに接続します。以下のメッセージ、またはサービス自体からのメッセージを受け取った場合、ポートは有効です。

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

接続しているサービスのコマンドシーケンスがわかっている場合は、コマンド(たとえばHTTP / FTP GET)を入力し、ターミナルで応答と出力を確認できます。これは、HTTP 500エラーなどのクライアントに送信されたエラー情報を表示するため、サービス自体のテストに非常に役立ちます。

接続が拒否されたというメッセージが表示された場合、ポートは閉じられています。

Minty16 ~ $ telnet localhost 5000
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

8
また、画面が完全に黒くなる場合は、接続されているサインです。
テンシー14年

素晴らしい提案。私はこれを使用して、Webブラウザが簡単なオプションではないときにWebサーバーが稼働しているかどうかをテストしていました。
ブランドン14年

^のdevのマシンにsshing時に好き@Brandon ^。
たけ

ブラウザの開発者ツールは、すべての適切なHTTPリクエストヘッダーを送信するため、はるかに簡単ですが、完全なHTTPレスポンスを検査できます。再度リクエストを調整したい場合は、telnetが最適です。
軌道上の明るさのレース14

ここでの答えはすべて、最も重要な情報を欠いていると思います。技術的には、次のようにポートを「ping」することはできませんか?TCP / UDP接続を確立でき、その接続の確立にかかったミリ秒数をカウントします。
デビッド

47

はい、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(システムでsuidである可能性が高い)のように、生のIPパケットを作成するには、root権限(またはSELinux機能)が必要であることに注意してください。


3
これが「受け入れられた答え」であることを願っています。hpingは、ARMでコンパイルされない古くて汚いコードであるpapingとは異なり、複数のリポジトリで簡単に見つけることができました。また、NMAPとは異なり、hapingはシェルスクリプトから簡単にテスト可能なステータスコードを返すため、pingを使用する場合の代わりとして最適です。この答えをありがとう、私はそれを見るのに十分遠くまでスクロールしなかったので、代わりに別のウェブサイトでそれを見つけなければなりませんでした。
マーク

私はパッケージが見つからない... Ubuntuのでhpingをインストールすることはできません..しかし、私が発見したhping3と同じように.Is hping3?@ d33tah
Shayan

[OK]を試してみてhping3、すべてのポートにpingを実行します。閉じているか開いているかは関係ありません。ポートが閉じているか開いているかどうかを確認するにはどうすればよいですか。
シャヤン

46

netcatを使用して特定のポートに接続し、接続を取得するかどうかを確認できます。-vフラグは冗長性を高め、ポートが開いているか閉じているかを示します。-zフラグを指定すると、netcatが接続されると終了します。その後、$?を介して終了コードを使用できます。接続が確立されたかどうかを確認します。

$ 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

さらに、tcpの-Tフラグと-Pフラグを指定してmtrを使用し、ポートを指定できます。これは、単なるICMPではなく、TCPを介したtracerouteに似た動作をします。ただし、これはやり過ぎかもしれません。

ため息 私たちは、コメント内のコードを置くことができないため、このビットを追加するために編集する必要があります。Knoppixはnetcatのバージョンで何か違うことをしているかもしれませんが、これがLinux Mintから得たものです

$ date;nc -z -w 1 www.google.com 8000;date
Fri Jun 20 15:55:26 PDT 2014
Fri Jun 20 15:55:27 PDT 2014
$ date;nc -z -w 4 www.google.com 8000;date
Fri Jun 20 15:55:33 PDT 2014
Fri Jun 20 15:55:37 PDT 2014

$ nc -h
[v1.10-40]

問題は、試しnc -z www.google.com 8000 てみると5秒以上の長い時間がかかることです。その場合、-w 15秒かかります。私が行う場合-w 3、それは3倍長い。..カーソルの点滅15、15秒のようになります。 -w 11秒であることを意図していますが、cygwinでテストされています。5秒。ポートにサーバーがある場合は超高速ですが、サーバーがない場合は少し遅くなります。
barlop 14年

コメントに改行を加えないでください...これはcygwinのバグのようです。Linux Mintを使用したテストでは、指定された秒数の遅延が示されています。テストするためにこれを実行しました:date; nc-zw5 www.google.com 8000; date
Falsenames

また、nmapリクエストで@BenjiWiebeを支持しました。ncはスクリプトに入れる方が簡単ですが、nmapを視覚的に使用する方がはるかに簡単です。
偽名14年

knoppixで試してみてください。nc -zv -w 1 www.google.com 1回だけ試すようにするにはどうしますか?はい、試してみると-w 1が機能しますが、Ctrl-Cを実行するまで毎秒再試行します。
barlop

「nc -zv -w 1 www.google.com 80」のKnoppixバージョンが何をしているかわからない。これは私のシステムではうまく機能し、一度クエリを実行すると、-zのようにドロップされます。また、ポート番号が指定されていない場合、ポートが指定されていないと言って失敗します。
偽名14年

18

nping(の一部nmap)を使用することもできます:

$ nping -p 80 localhost

Starting Nping 0.6.00 ( http://nmap.org/nping ) at 2014-06-23 11:57 CEST
SENT (0.0015s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (0.0016s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (1.0027s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (1.0027s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (2.0038s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (2.0039s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (3.0050s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (3.0050s) Handshake with localhost:80 (127.0.0.1:80) completed
SENT (4.0061s) Starting TCP Handshake > localhost:80 (127.0.0.1:80)
RECV (4.0062s) Handshake with localhost:80 (127.0.0.1:80) completed

Max rtt: 0.032ms | Min rtt: 0.008ms | Avg rtt: 0.012ms
TCP connection attempts: 5 | Successful connections: 5 | Failed: 0 (0.00%)
Tx time: 4.00575s | Tx bytes/s: 99.86 | Tx pkts/s: 1.25
Rx time: 4.00575s | Rx bytes/s: 49.93 | Rx pkts/s: 1.25
Nping done: 1 IP address pinged in 4.01 seconds

6
nping --tcp -p 80 localhost
Kガン

すべてのポート(開いていないポート)をテストしますが、常に2つのハンドシェイクを受け取ります...
Shayan

8

Pythonを使用して、それほど短くない1つのライナーとしてシェルでこれを実行できます。

$ portping() { python <<<"import socket; socket.setdefaulttimeout(1); socket.socket().connect(('$1', $2))" 2> /dev/null && echo OPEN || echo CLOSED; }
$ portping 8.8.8.8 54
CLOSED
$ portping 8.8.8.8 53
OPEN

7

参考のために、Vivek Giteの投稿を共有したかった:https : //www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/#コメント-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}

ランダムなdockerコンテナで作業するときに便利です。


looking at the output-リターンコードの検査のみ$?が役立ちます。また、閉じたポートでハングし、どこでもタイムアウトを設定できる場合があります
...-vp_arth

このソリューションはきれいに見えecho >/dev/tcp/{hostname}/{portnumber}ますが、ポートが閉じられても終了しません。またecho >/dev/tcp/{hostname}/{portnumber}、ポートが開いていても何も表示されず、ブラウザで表示できます。
ミゲルモリン

こんにちはmmorin、どのOSを使用していますか?Ubuntuでは、期待どおりに動作しますConnection refused。ポートが閉じている場合、が表示されます。それ以外の場合は、何も表示せずにecho $?終了コードを表示して終了します1
Jacek

3

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

と簡単です 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

通信をテストしようとしているか、そのノードのポート80から応答を取得しようとしていますか?PINGポートとは無関係のICMPを介して特定のホストへの通信を確立しようとします。

代わりにhttp://nmap.org/を試して、ポート情報を確認し、通信をテストします。

nmap -v -p 80 onofri.org

1
使用しているnmapのバージョンがわかりません。私のシステムでは、 'nmap -v -p 80 onofri.org'のように-vと-pを分離する必要があります。これは、-vと-vvの意味が異なるため、-vは引数としてさらにvを使用するためです。
偽名14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.