Bir adrese ping atmak mümkün mü: port?


212

Ağa dahil değilim ve Linux ping komutuyla ilgili şu sorum var .

Sadece bir adrese ping atabilir miyim? Örneğin:

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

Veya bir adrese ping atabilir miyim : port , örneğin: onofri.org:80 ?

Bunu denersem, işe yaramaz:

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

Ping adresi gibi bir şey mümkün mü ? Mümkünse, neden çalıştığımı denemedim?


8
Ne yapmaya çalışıyorsun? Doğru servis işleminin doğrulanması, servisi gerçekten sorgulamanızı ve yanıtı değerlendirmenizi gerektirir. Bir web sunucusu, örneğin, bağlantınızı kabul edebilir ancak yanlış yapılandırma nedeniyle bir hata verebilir.
Daniel B,

5
Bu Telnet hakkında sevdiğim şeylerin bir parçası. bir web sunucusuna bağlanabilir GET /index.html HTTP\1.1ve sonuç işaretlemesinin yanı sıra 200 yanıtı (veya hata kodunu) yazıp görebilirsiniz.
Frank Thomas,

7
@ FrankThomas HTTP\1.1? Gerçekten mi?
glglgl

5
@Navin Belki HTTP/1.1...
glglgl

3
@glglgl; ne? Hiç bir eğik çizginin gitmesi gereken yeri kesmez misin? ama haklısın, bir eğik çizgi olmalı.
Frank Thomas

Yanıtlar:


20

Sen kullanabilirsiniz Paping ping işlevselliğini taklit, bir çapraz platform TCP portu testi (bağlantı noktası ping)

(ayrıca bkz. Github , code.google.com tarafından amorti edilmiştir)

paping -p 80 google.com

8
Bu programın ne yaptığı hakkında bazı açıklamalar yardımcı olacaktır.
David Schwartz

16
Bu cevabı bulan herkes için, benim yaptığım gibi, sadece paping bulmak hiçbir depoda değildir ve ARM'ten bile derlemeyecek eski bir koddur - 'hping' cevabını daha da aşağıya kaydırın. Bir limanı test etmeniz gerektiğinde ping için mükemmel bir indirimdir ve ARM dahil çeşitli depolarda (örn. Ubuntu, Arch) kolayca erişilebilir.
Mark

Nasıl kurabilirim paping? Depoyu ziyaret ettim ama yayınlanmadı. Ah, nevermind .. google kodu o zamanlar benim için erişilebilir değildi.
Shayan

310

Limanlar UDP ve TCP kavramıdır . Ping mesajları teknik olarak ICMP'nin bir parçası olan ICMP Yankı İsteği ve ICMP Yankı Yanıtı olarak adlandırılır . ICMP, TCP ve UDP "kardeş" dir; birbirlerine dayanmaz, ancak IP üzerinden çalışan üç ayrı protokoldür.

Bu nedenle pingbir liman olamaz . Ne yapabilirsiniz yapmak gibi bir liman tarayıcı kullanmaktır nmap.

nmap -p 80 onofri.org

Ayrıca telnet onofri.org 80diğer cevaplardan birinde önerildiği gibi kullanabilirsiniz (eğer port kapalıysa veya filtrelenmişse hata verir).


22
+1 onu doğru anladınız. ICMP, IP adresleri kavramına sahip olan ancak portları olmayan IP üzerine inşa edilmiştir. TCP ve UDP de IP’nin tepesindedir ve “port” ekleyen protokollerdir. ICMP, TCP ve UDP, yürüttükleri protokol açısından aynı düzeydedir.
Jason C,

14
+1. Pek çok kişi, bir şeye ping yapamazlarsa bağlanamayacaklarını düşünürler ... ama söylediğiniz gibi, ICMP, TCP ve UDP'den farklıdır: TCP 80'de bir web sayfasına hizmet etmek istiyorsanız yalnızca güvenlik duvarında TCP 80 açmanız gerektiğinden, başka hiçbir şey (örneğin aynı IP'ye Ping (... gerekir!) engellenebilir)
Olivier Dulac

6
Bilgiyi doğru tutmak için ICMP, TCP veya UDP gibi bir taşıma katmanı protokolü değildir. Bazı protokoller gibi, ağ kavramsal modellerine tamamen uymaz, ancak genellikle IP olduğu gibi ağ / ağ katman protokolü olarak kabul edilir. Ayrıca bazen L3.5 protokolü olarak da adlandırılır.
YLearn

2
@BenjiWiebe, kabul etti, ancak yine de doğruluk için açıklama yapılmalı ve bu yüzden bunu ekledim. Şimdiye kadar söylenen tek şey, ICMP, TCP ve UDP'nin ilgili olduğu. En yüksek oy alan yorum bile hepsinin aynı “seviyede” olduğunu söyleyecek kadar ileri gidiyor. Bu, ortalama kullanıcı için bir fark yaratmazken, bu siteyi ziyaret eden ortalama sayıda kullanıcı bulunmuyor.
YLearn

4
@OlivierDulac eğer bilmiyorum gerektiğini engelleriz. Bildiğim çoğu web sunucusu açık bırakıyor. ICMP interneti dolaştırıyor. İnsanların, eğer ulaşabilirlerse sana ulaşamayacaklarını düşünmesini istiyorsun?
Cruncher

86

Kullandığım Telnet onun ek indirme platformlarında sürü yerleşik beri.

Sınamak istediğiniz bağlantı noktasına bağlanmak için telnet komutunu kullanmanız yeterlidir. Aşağıdaki mesajı veya hizmetin kendisinden bir mesaj alırsanız, port canlıdır.

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

Bağlandığınız servisin komut sırasını biliyorsanız, bir komut yazabilir ( örneğin, HTTP / FTP GET ) ve terminaldeki cevabı ve çıkışı gözlemleyebilirsiniz. Bu, HTTP 500 hataları gibi istemciye gönderilen hata bilgilerini göstereceğinden, hizmeti test etmek için çok kullanışlıdır.

Bağlantının reddedildiğine dair bir mesaj alırsanız, port kapatılır.

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

8
Ayrıca ekran tamamen kararırsa, o da bağlandığınızın bir işaretidir.
Tensigh

Mükemmel öneri. Bunu, bir web tarayıcısının kolay bir seçenek olmadığı durumlarda bir web sunucusunun kurulup kurulmadığını test etmek için kullanırdım.
Brandon

@Brandon gibi dev makinelere sshing gibi ^. ^
Cruncher

Tarayıcılardaki geliştirici araçları çok daha kolaydır, çünkü hala tüm uygun HTTP istek başlıklarını göndereceklerdir, ancak tam HTTP yanıtını inceleyebilirsiniz. Sonra tekrar isteği uyarlamak istiyorsanız, o zaman telnet gitmek için yoludur.
Orbit'teki Hafiflik Yarışları

Bence buradaki tüm cevaplar en önemli bilgiyi özlüyor. Teknik olarak, bir limanı aşağıdaki gibi "pinglemek" mümkün olmaz mıydı? Bir TCP / UDP bağlantısı kurabilir ve bu bağlantıyı kurmak için kaç milisaniye geçtiğini hesaplayabilirsiniz.
David,

47

Evet, bunu yapmak için HPing kullanın:

$ 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

Ham IP paketleri oluşturmak için ping (sisteminizde muhtemelen büyük olasılıkla intihar) gibi kök ayrıcalıklarına (veya SELinux yeteneklerine) ihtiyaç duyduğunu unutmayın.


3
Keşke bu "kabul edilmiş cevap" olsaydı. hping, ARM'de derlenmeyen eski bir şifre kodu olan papingin aksine, birçok depoda kolayca elde edilebiliyordu. Ayrıca NMAP'ın aksine, haping bir kabuk betiğinden kolayca test edilebilen bir durum kodu döndürür, bu nedenle ping'i kullanacağınız yer için mükemmel bir alternatiftir. Bu cevap için teşekkür ederim, onu görecek kadar aşağı kaydırmadım ve bunun yerine başka bir web sitesinde bulmak zorunda kaldım.
Mark

Ben ubuntu içinde hping yükleyemiyorum .. Paket bulunamadı .. Ama buldum hping3. Aynı hping3mı? @ d33tah
Shayan

Tamam denedim hping3ve tüm bağlantı noktalarına ping attı .. Açık veya kapalı önemli değil .. Bir portun kapalı veya açık olduğunu nasıl anlarım?
Shayan

46

Bir bağlantı alıp almadığınızı görmek için belirli bir bağlantı noktasına bağlanmak için netcat'i kullanabilirsiniz. -V bayrağı, bağlantı noktasının açık veya kapalı olduğunu göstermek için ayrıntı düzeyini artıracaktır. -Z bayrağı, bağlantı kurduktan sonra netcat'in kapanmasına neden olur. Çıkış kodlarını daha sonra $ 'dan kullanabilirsiniz. bağlantının kurulup kurulmadığını görmek için.

$ 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

Ayrıca, mtr'yi tcp için -T bayrağıyla ve bir bağlantı noktası belirtmek için -P bayrağıyla kullanabilirsiniz. Bu sadece ICMP yerine TCP üzerinden traceroute benzeri bir şey yapacaktır. Bununla birlikte, bu fazlaca olabilir.

içindekiler Bu biti eklemek için düzenlemem gerekiyor, çünkü yorumlara kod koyamıyoruz. Knoppix, netcat sürümüyle farklı bir şeyler yapıyor olabilir, ancak bu Linux Nane'den aldığım şey

$ 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]

sorun, nc -z www.google.com 8000 uzun sürebilir - 5 saniye artı alabilir. Yaparsam -w 1o zaman 5 saniye sürer. Bunu yaparsam -w 33 kat daha uzun sürer .. 15 imlecin yanıp sönmesi, 15 saniye. -w 1bir saniye olması gerekiyor, ancak cygwin üzerinde test edildi. 5 saniye. Bağlantı noktasında bir sunucu olduğunda süper hızlı, ancak olmadığında biraz yavaş.
barlop

yorumlarda yeni satır yok lanet ... Bu cygwin ile bir hata gibi görünüyor. Linux Mint ile test etmek, belirtilen birçok saniyenin gecikmesini gösterir. test etmek için bunu yaptım: date; nc-zw5 www.google.com 8000; date
Falsenames

Ayrıca @BenjiWiebe'yi nmap talepleri ile yenmiştim. nc bir betiğe koymak daha kolaydır, ancak nmap'ı görsel olarak kullanmak çok kolaydır.
Falsenames

Knoppix'te deniyorum. nc -zv -w 1 www.google.com Bir kez denemeye nasıl sebep oluyorsunuz? Bunu denediğimde evet -w 1 çalışıyor ama her saniye Ctrl-C yapana kadar yeniden deniyor.
barlop

'Nc -zv -w 1 www.google.com 80' adresinin Knoppix sürümünün ne yaptığından emin değilim. Bu benim sistemimde iyi çalışır, bir kez sorgulama ve -z gibi yapması gerektiği gibi bırakarak. Ayrıca, belirtilen bağlantı noktası numarası olmadan, maden belirtilen bağlantı noktası olmadığını söyleyerek başarısız oluyor.
Falsenames,

18

Ayrıca kullanabilirsiniz nping(bir kısmını 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-Gun

HERHANGİ BİR limanı test ederim (açık olmayan limanlar) ve hala her zaman iki el sıkışma alıyorum ...
Shayan

8

Bunu Python ile kabuğunda çok kısa olmayan bir astar olarak yapabilirsiniz:

$ 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

Sadece referans için, Vivek Gite tarafından bir yazı paylaşmak istedim: https://www.cyberciti.biz/faq/ping-test-a-specific-port-of-machine-ip-address-using-linux-unix/# yorum-920398

Bazıları zaten gönderilmiş olan çeşitli yolları listeler. Ama benim için en çok şaşırtıcı olan başka bir şey değildi 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"

Veya süper basit bir versiyon: Sadece aşağıdaki komut modelinin çıktısına bakmak:

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

Rastgele liman işçisi konteynerleriyle çalışırken kullanışlıdır.


looking at the output- sadece dönüş kodunu kontrol etmek $?yardımcı olabilir. Ayrıca kapalı bağlantı noktalarında asılı, herhangi bir yerde yapılandırılabilir zaman aşımı olabilir ...
vp_arth

Bu çözüm düzgün görünüyor, ancak echo >/dev/tcp/{hostname}/{portnumber}bağlantı noktası kapatıldığında bitmiyor. Ve echo >/dev/tcp/{hostname}/{portnumber}liman açık olmasına rağmen hiçbir şey gösterir ve ben bir tarayıcı üzerinde görebilirsiniz.
miguelmorin

Merhaba mmorin, hangi işletim sistemini kullanıyorsunuz? Ubuntu'da beklendiği gibi davranıyor: eğer port kapalıysa, anlıyorum Connection refused. Aksi takdirde, hiçbir şey göstermeden ve echo $?çıkış kodunu göstererek çıkar1
Jacek

3

Buraya watcharacı ekliyorum :

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

İle basit nmap

örnekler:

#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

Daha fazla bilgi için şuna bakın:

komut satırına şunu yazın: man nmap

http://www.cyberciti.biz/networking/nmap-command-examples-tutorials/ http://www.tecmint.com/nmap-command-examples/


1

İletişimi test etmeye mi çalışıyorsunuz yoksa o düğümdeki 80 numaralı bağlantı noktasından bir yanıt almaya mı çalışıyorsunuz? PINGbelirli bir ana bilgisayara, bağlantı noktaları ile ilgisi olmayan ICMP aracılığıyla iletişim kurmaya çalışacaktır.

Bunun yerine, bağlantı noktası bilgilerini kontrol etmek ve iletişimi test etmek için http://nmap.org/ adresini deneyin :

nmap -v -p 80 onofri.org

1
Hangi nmap sürümünü kullandığınızdan emin değilsiniz. Benim sistemimde 'nmap -v -p 80 onofri.org' gibi -v ve -p'ye ayrılması gerekiyor. Bunun nedeni -v ve -vv'nin farklı şeyler ifade etmesi, -v'nin argüman olarak daha fazla olması.
Falsenames,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.