Câu hỏi Có thể ping địa chỉ: cổng không?


Tôi không tham gia vào mạng và tôi có câu hỏi sau liên quan đến Linux ping chỉ huy.

Tôi chỉ có thể ping địa chỉ không? Ví dụ:

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

Hoặc tôi cũng có thể ping một địa chỉ: cổng, ví dụ: onofri.org:80?

Nếu tôi thử cái này nó không hoạt động:

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

Có thể ping một cái gì đó như địa chỉ: cổng? Nếu có thể, tại sao tôi không thử làm việc?


195
2018-06-16 18:17


gốc


Bạn đang cố gắng để thực hiện? Việc xác minh hoạt động dịch vụ chính xác yêu cầu bạn thực sự truy vấn dịch vụ và đánh giá phản hồi. Ví dụ: máy chủ web có thể chấp nhận kết nối của bạn nhưng trả lại lỗi do cấu hình sai. - Daniel B
Đó là một phần của những gì tôi thích về Telnet. bạn có thể kết nối với máy chủ web và nhập GET /index.html HTTP\1.1 và xem 200 phản hồi (hoặc mã lỗi) cùng với đánh dấu kết quả. - Frank Thomas
@FrankThomas HTTP\1.1? Có thật không? - glglgl
@Navin Có thể HTTP/1.1... - glglgl
@glglgl; gì? bạn không bao giờ đặt một hack nơi một dấu gạch chéo nên đi? nhưng bạn là chính xác, nó phải là một dấu gạch chéo. - Frank Thomas


Các câu trả lời:


Bạn có thể dùng Paping, kiểm tra cổng TCP đa nền tảng, mô phỏng chức năng của ping (cổng ping)

(Xem thêm Github vì code.google.com đã bị khấu hao)

paping -p 80 google.com

18
2018-01-21 08:02



Một số giải thích về những gì chương trình này sẽ là hữu ích. - David Schwartz
cho bất cứ ai tìm thấy câu trả lời này, như tôi đã làm, chỉ để tìm hình không có trong kho bất kỳ và là mã cổ mà thậm chí sẽ không biên dịch trên ARM - di chuyển xuống xa hơn để trả lời 'hping'. Đó là một drop-in hoàn hảo cho ping khi bạn cần phải kiểm tra một cổng và có thể truy cập dễ dàng trong các kho khác nhau (ví dụ: Ubuntu, Arch) bao gồm ARM. - Mark


Cổng là một khái niệm về UDP và TCP. Ping thông điệp được gọi là Yêu cầu Echo ICMP và ICMP Echo Trả lời là một phần của ICMP. ICMP, TCP và UDP là "anh chị em"; chúng không dựa trên nhau, nhưng là ba giao thức riêng biệt chạy trên đầu trang của IP.

Do đó bạn không thể ping một cổng. Bạn là gì có thể làm, sử dụng máy quét cổng như nmap.

nmap -p 80 onofri.org

Bạn cũng có thể dùng telnet onofri.org 80, như được đề xuất trong một trong các câu trả lời khác (Nó sẽ đưa ra một lỗi nếu cổng được đóng hoặc lọc).


297
2018-06-16 18:19



+1 bạn hiểu đúng. ICMP được xây dựng trên đầu trang của IP, trong đó có một khái niệm về địa chỉ IP nhưng không phải là cổng. TCP và UDP cũng nằm trên đầu trang của IP, và nó là những giao thức thêm "cổng". ICMP, TCP và UDP đều ở cùng một mức "" về giao thức mà chúng được thực hiện. - Jason C
+1. Nhiều người nghĩ rằng nếu họ không thể ping thứ gì đó mà họ không thể kết nối với nó ... nhưng như bạn nói, ICMP khác với TCP và UDP: nếu bạn dự định phân phát, một trang web trên TCP 80, hơn bạn chỉ cần mở TCP 80 trên tường lửa, không có gì khác (vì vậy Ping đến cùng một IP có thể (... nên!) bị chặn, ví dụ) - Olivier Dulac
Chỉ để giữ thông tin chính xác, ICMP không phải là giao thức tầng truyền tải như TCP hoặc UDP. Giống như một số giao thức, nó không hoàn toàn phù hợp với các mô hình khái niệm mạng, nhưng nó thường được coi là một giao thức tầng mạng / lớp mạng như là IP. Nó cũng đôi khi được gọi là giao thức L3.5. - YLearn
@ BenjiWiebe, đã đồng ý, nhưng một lần nữa, cho chính xác tuyên bố nên được thực hiện đó là lý do tại sao tôi thêm nó. Tất cả những gì được nói cho đến nay là ICMP, TCP và UDP có liên quan. Các bình luận bình chọn cao nhất thậm chí còn đi xa như vậy để nói rằng họ là tất cả trên cùng một "cấp độ". Mặc dù điều này không có sự khác biệt đối với người dùng trung bình, nhưng có rất nhiều người dùng không trung bình truy cập trang web này. - YLearn
@OlivierDulac Tôi không biết nếu bạn Nên chặn nó. Hầu hết các máy chủ web tôi biết để nó mở. ICMP làm cho internet đi xung quanh. Tại sao bạn muốn mọi người nghĩ rằng họ không thể liên lạc với bạn nếu họ có thể? - Cruncher


tôi sử dụng Telnet, vì nó được xây dựng thành nhiều nền tảng mà không cần tải xuống thêm.

Chỉ cần sử dụng lệnh telnet để kết nối với cổng bạn muốn kiểm tra. Nếu bạn nhận được thông báo dưới đây, hoặc một tin nhắn từ bản thân dịch vụ thì cổng đó vẫn còn hoạt động.

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

Nếu bạn biết chuỗi lệnh cho dịch vụ bạn đang kết nối, bạn có thể gõ lệnh (HTTP / FTP GET ví dụ) và quan sát phản ứng và đầu ra trong thiết bị đầu cuối. Điều này rất hữu ích khi tự kiểm tra dịch vụ vì nó sẽ hiển thị cho bạn thông tin lỗi được gửi tới máy khách, như lỗi HTTP 500.

Nếu bạn nhận được thông báo rằng kết nối đã bị từ chối, cổng sẽ bị đóng.

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

78
2018-06-16 18:24



Ngoài ra, nếu màn hình chuyển sang màu đen hoàn toàn, đó cũng là dấu hiệu bạn cũng đã kết nối. - Tensigh
Gợi ý tuyệt vời. Tôi đã từng sử dụng nó để kiểm tra xem một máy chủ web có hoạt động không khi một trình duyệt web không phải là một lựa chọn dễ dàng. - Brandon
@ Brandon như khi sshing vào máy dev ^. ^ - Cruncher
Các công cụ dành cho nhà phát triển trong trình duyệt dễ dàng hơn nhiều, vì chúng vẫn sẽ gửi tất cả các tiêu đề yêu cầu HTTP thích hợp nhưng bạn có thể kiểm tra phản hồi HTTP đầy đủ. Sau đó, một lần nữa nếu bạn muốn điều chỉnh yêu cầu quá thì telnet là con đường để đi. - Lightness Races in Orbit
Tôi nghĩ tất cả các câu trả lời ở đây đều bỏ lỡ phần thông tin quan trọng nhất. Về mặt kỹ thuật, sẽ không thể "ping" một cổng như sau? Bạn có thể thiết lập kết nối TCP / UDP và bạn đếm số mili giây cần thiết để thiết lập kết nối đó. - David


Có, sử dụng HPing Để làm việc đó:

$ 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

Lưu ý rằng nó cần quyền root (hoặc khả năng SELinux) để tạo các gói IP thô, giống như ping (rất có thể là suid trên hệ thống của bạn).


40
2018-06-17 15:35



Tôi ước điều này là "câu trả lời được chấp nhận". hping đã dễ dàng tìm thấy trong nhiều repos, không giống như paping đó là mã crufty cổ mà không biên dịch trên ARM. Cũng giống như NMAP, haping trả về một mã trạng thái có thể dễ dàng kiểm tra từ một kịch bản lệnh shell, vì vậy nó là một thay thế hoàn hảo cho nơi bạn sẽ sử dụng ping khác. Cảm ơn câu trả lời này, một sự xấu hổ tôi đã không di chuyển xuống đủ xa để xem nó và đã phải tìm nó trên một trang web thay thế. - Mark


Bạn có thể sử dụng netcat để kết nối với một cổng cụ thể để xem bạn có kết nối hay không. Cờ -v sẽ tăng độ dài để cho biết cổng đang mở hay đóng. Cờ -z sẽ khiến netcat thoát khi nó có kết nối. Sau đó, bạn có thể sử dụng mã thoát qua $? để xem liệu kết nối có được thiết lập hay không.

$ 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

Ngoài ra, bạn có thể sử dụng mtr với cờ -T cho tcp và cờ -P để chỉ định một cổng. Điều này sẽ làm một cái gì đó tương tự như một traceroute trên TCP thay vì chỉ ICMP. Tuy nhiên, điều này có thể quá mức cần thiết.

thở dài  Tôi phải chỉnh sửa để thêm bit này, vì chúng tôi không thể đặt mã trong các bình luận. Knoppix có thể đang làm một cái gì đó khác biệt với phiên bản của netcat, nhưng đây là những gì tôi nhận được tắt của 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]

40
2018-06-16 21:15



vấn đề là nếu bạn cố gắng nc -z www.google.com 8000  nó có thể mất một thời gian dài- 5 giây cộng thêm. Nếu tôi làm -w 1 sau đó phải mất 5 giây. Nếu tôi làm -w 3 sau đó phải mất gấp 3 lần .. 15 nhấp nháy của con trỏ, 15 giây. -w 1 là một giây nhưng được thử nghiệm trên Cygwin. 5 giây. Đó là siêu nhanh khi có một máy chủ trên cổng nhưng hơi chậm khi không có. - barlop
lời nguyền không có dòng mới trong ý kiến ​​... Điều đó dường như là một lỗi với Cygwin. Thử nghiệm với Linux Mint cho thấy một sự chậm trễ tuy nhiên nhiều giây được chỉ định. chạy thử nghiệm này: ngày; nc-zw5 www.google.com 8000; ngày - Falsenames
Tôi cũng upvoted @BenjiWiebe với các yêu cầu nmap. nc là dễ dàng hơn để đưa vào một kịch bản, nhưng nó dễ dàng hơn để sử dụng nmap trực quan. - Falsenames
Đang thử nó trong knoppix. nc -zv -w 1 www.google.com Làm cách nào để bạn chỉ thử một lần? Khi tôi thử nó có -w 1 hoạt động nhưng mỗi giây nó lại thử lại cho đến khi tôi làm Ctrl-C. - barlop
Bạn không chắc chắn phiên bản Knoppix của 'nc -zv -w 1 www.google.com 80' đang làm gì. Điều đó hoạt động tốt trên hệ thống của tôi, truy vấn một lần và thả giống như -z là nghĩa vụ phải làm. Ngoài ra, nếu không có số cổng được chỉ định, thì tôi không thể nói rằng không có cổng nào được chỉ định. - Falsenames


Bạn cũng có thể sử dụng nping (một phần của 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

15
2018-06-23 09:57



nping --tcp -p 80 localhost - K-Gun


Bạn có thể làm điều này bằng cách sử dụng Python như một lớp lót không quá ngắn:

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

5
2017-12-18 22:11



Bạn không dán nó vào ngỗng ngớ ngẩn. Dán nó vào bash. - AXE-Labs
vâng tôi là một thằng ngốc, bình luận bị loại bỏ, cảm ơn nó hoạt động hoàn hảo. - rob
CLOSET, loooool - srghma


Bạn đang cố gắng kiểm tra giao tiếp hoặc nhận được phản hồi từ cổng 80 trên nút đó? PING sẽ cố gắng thiết lập truyền thông đến một máy chủ cụ thể thông qua ICMP mà không có gì để làm với các cổng.

Thay vào đó hãy thử http://nmap.org/ để kiểm tra thông tin cổng và kiểm tra thông tin liên lạc:

nmap -v -p 80 onofri.org

2
2018-06-19 15:58



Không chắc chắn bạn đang sử dụng phiên bản nmap nào. Trên hệ thống của tôi, nó yêu cầu v và -p được tách ra như 'nmap -v -p 80 onofri.org'. Điều này là do -v và -vv có nghĩa là những thứ khác nhau, -v lấy nhiều v làm đối số. - Falsenames


Tôi thêm watch công cụ ở đây:

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

2
2018-06-15 10:48





Nó rất đơn giản với nmap

ví dụ:

#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

Để biết thêm thông tin, hãy xem điều này:

gõ vào dòng lệnh này: man nmap

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


2
2017-07-25 18:26