Có thể xem địa chỉ IP bên ngoài của tôi mà không yêu cầu web gửi đi không?


21

Nếu kết nối của bạn là NAT, bạn có thể thấy địa chỉ IP bên ngoài của mình mà không cần yêu cầu web bên ngoài không?

Bất kỳ hệ điều hành nào (Windows, Linux, v.v.) đều ổn.


7
Bạn chỉ đang cố gắng tránh HTTP, hay bạn đang cố gắng tránh gửi bất kỳ lưu lượng đi nào? Các giải pháp phổ biến duy nhất liên quan đến việc gửi một số loại lưu lượng đi, nhưng nó không phải là HTTP.
Spiff

Đây không chỉ là giả thuyết, tôi không muốn thực hiện bất kỳ lưu lượng truy cập bên ngoài nào cả.
Axel Persinger

2
Bạn có nói rằng mạng / bộ định tuyến của bạn đứng sau một thiết lập NAT cấp doanh nghiệp (nghĩa là nó đang nhận một địa chỉ IP riêng từ ISP của bạn)? Nếu vậy, không có cách nào tôi nghĩ rằng bạn có thể tìm thấy địa chỉ IP công cộng mà không cần một cái gì đó tiếp cận với mạng công cộng và về cơ bản là "nhìn lại" như whatsmyip.com hoặc các dịch vụ tương tự.
acejavelin

hack mà tôi đã từng làm là kiểm tra với bộ định tuyến của mình - Tôi thực sự có một đoạn script thực sự bẩn để cạo vì vì lý do nào đó, hầu hết các dịch vụ dựa trên web sẽ không phát hiện chính xác IP của tôi. ISP của tôi thực sự thú vị theo cách đó.
Journeyman Geek

2
Bạn có thể thử gọi điện cho ISP của bạn với các chi tiết khách hàng của bạn. Yêu cầu không có kết nối internet và không có máy tính.
Thomas

Câu trả lời:


24

Nếu máy tính của bạn đứng sau NAT, bạn có thể thấy địa chỉ IP bên ngoài của bộ định tuyến, nhưng bạn cần quyền truy cập quản trị vào bộ định tuyến.

Bộ định tuyến biết địa chỉ IP bên ngoài của bạn, vì vậy bằng cách truy cập trang cấu hình của nó, bạn có thể tìm thấy địa chỉ IP đó. Cách này không yêu cầu bất kỳ công cụ chuyên dụng nào ngoại trừ trình duyệt Web.

Các giao thức khác yêu cầu một công cụ để nhận thông tin:

Theo thử nghiệm của người dùng @dirkt, tất cả các phương pháp chỉ hoạt động với IPv4 (ngoại trừ có thể cho PCP).


@NicHartley hyperbole chắc chắn có thể là một phần của châm biếm, nhưng châm biếm liên quan nhiều đến giọng điệu hoặc ý định chế giễu, cả hai đều được truyền tải khác nhau ở dạng văn bản hơn là ở người. Điều đó nói rằng, mặc dù bất kỳ giao thức nào cũng phải sử dụng IP để xác định địa chỉ IP là một yêu cầu rõ ràng và có yêu cầu (vì bạn không thể xác định những gì bạn không sử dụng), nhưng một giao thức được xây dựng trên IP vẫn là một giao thức khác và có về mặt lý thuyết, nhiều người có thể sử dụng để hoàn thành mục tiêu đó. Quan điểm của Lightness là phản bác lại yêu cầu về yêu cầu web.
eques

2
"Bất kỳ cách nào khác sẽ yêu cầu thực hiện một yêu cầu Web bên ngoài" Web (ví dụ HTTP) không bắt buộc, nhưng đơn giản nhất có lẽ để nắm bắt
eques

1
Như đã đề cập trong câu trả lời khác, uPnP, NAT-PMP và PCP là những cách khác nhau để lấy thông tin từ bộ định tuyến bên cạnh việc truy cập trang cấu hình của nó. Cách bạn thực hiện nó, có vẻ như "ngoài việc truy cập trang cấu hình, bất kỳ cách nào khác cũng sẽ yêu cầu thực hiện một yêu cầu web". Đúng là "bên cạnh việc lấy thông tin từ bộ định tuyến, bất kỳ cách nào khác cũng sẽ yêu cầu và cố gắng kết nối ra ngoài" (nó không cần phải là một yêu cầu web).
dirkt

@dirkt: Đối với UPnP tôi không bị thuyết phục; NAT-PMP Tôi nghĩ rằng chỉ hoạt động với IPv4; PCP trên mạng IPv6 sẽ trả về tiền tố IPv6 và có thể làm được nhiều hơn thế nhưng điều này thường không được thực hiện trên các bộ định tuyến thương mại.
harrymc

1
@harrymc: Điểm cuối dịch vụ UPnP cho Fritzbox của tôi là WANIPConn1/GetExternalIPAddressvà nó vừa trả về đúng địa chỉ.
dirkt

12

Có một số cách làm việc với một số NAT nhưng không có gì đảm bảo hoạt động ở mọi nơi.

Tôi tin rằng uPnP, NAT-PMP và PCP (Universal Plug and Play, NAT Port Mapping Protocol và Port Control Protocol) đều có cách để hỏi một cổng NAT tuân thủ địa chỉ công khai là gì, nhưng không phải tất cả các NAT đều hỗ trợ các giao thức này. Hỗ trợ là phổ biến hơn trong các bộ định tuyến cổng nhà hơn là trong các giải pháp NAT cấp công ty hoặc nhà mạng.

Khi bạn thấy mình đứng sau NAT, cách chắc chắn duy nhất để xem địa chỉ IP công cộng nào đang dịch lưu lượng truy cập của bạn là gửi một số lưu lượng gửi đến một số máy chủ công cộng sẽ báo cáo lại, theo cách mà NAT sẽ không dịch, những gì NAT sẽ dịch, những gì địa chỉ giao thông của bạn dường như đến từ. Sử dụng dịch vụ dựa trên web là một cách, nhưng bạn cũng có thể thực hiện điều đó bằng cách giả sử sshdSSH vào một phiên bản máy chủ đám mây và xem phiên bản SSH của bạn đến từ đâu.


8
Ngoài ra UPnP, vv có thể cho kết quả sai nếu hệ thống đứng sau NAT gấp đôi (hoặc hơn).
dùng71659

@ user71659 Tôi đã tự hỏi nếu có tồn tại một địa chỉ anycast sẽ tự động được chuyển đến NAT ngoài cùng để nó có thể được sử dụng cho loại yêu cầu đó.
kasperd

1
@kasperd Mọi NAT đều nghĩ đó là NAT ngoài cùng. Chắc chắn có các IP được tự động định tuyến bên ngoài tất cả các NAT. Chúng được gọi là IP công cộng.
dùng253751

1
@ user20574 Không, NAT không nghĩ như vậy, hầu hết chỉ không quan tâm. Nếu một địa chỉ anycast như vậy được xác định, thì tiêu chuẩn cũng sẽ cần xác định khi NAT gán IP đó cho chính nó và khi nào thì không. Câu trả lời cho điều đó là nếu IP bên ngoài nằm trong RFC 1918 hoặc RFC 6598, NAT sẽ không gán địa chỉ anycast cho chính nó.
kasperd

8

Bạn có thể sử dụng một yêu cầu DNS mà tôi tin rằng sẽ không thuộc danh mục "yêu cầu web":

nslookup myip.opendns.com resolver1.opendns.com

1
Bạn cũng có thể sử dụng dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns. Tôi đã tìm thấy lệnh ở đây: Groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/ mẹo
kasperd

nsslookupLệnh của bạn thất bại cho tôi. Tôi nhận được Server: resolver1.opendns.com Address: 2620:119:35::35#53 ** server can't find myip.opendns.com: NXDOMAIN
kasperd

1
@kasperd: Nó chỉ hoạt động cho IPv4, xin lỗi. Tôi tránh digvì nó không có trên Windows. Điểm hay về myaddrGoogle mặc dù, tôi đã không biết điều đó! Tôi đoán nslookuptương đương với Windows sẽ lànslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
Mehrdad

Tôi đã chạy lệnh đó trên một máy có cả IPv4 và IPv6, vì vậy nếu thực sự hỗ trợ IPv4 thì nó đã hoạt động. Vấn đề rõ ràng là bạn không thể hướng dẫn nslookupsử dụng phiên bản IP nào để vận chuyển, nhưng cách OpenDNS thực hiện điều này có nghĩa là bạn phải làm. Nếu không có điều đó, bạn phải dự đoán phiên bản IP nào nslookupsẽ được sử dụng để vận chuyển và yêu cầu A hoặc AAAA tương ứng. Nếu bạn gặp khó khăn với nslookupbạn, bạn có thể sử dụng một nhà cung cấp khác như Google. Tuy nhiên, bạn vẫn chỉ nhận được một phiên bản giao thức trong phản hồi và bạn không thể chọn phiên bản nào.
kasperd

Tôi đã thử nghiệm nslookup -type=txt o-o.myaddr.l.google.com ns3.google.comvà điều đó thực sự hoạt động. Nhưng nếu tôi có cả IPv4 và IPv6 sẽ không cho phép tôi chọn cái nào trong số chúng tôi sẽ thấy. Nhiều khả năng nó sẽ hiển thị cho tôi địa chỉ IPv6 và rất có thể tôi đang sử dụng địa chỉ này vì tôi muốn biết địa chỉ IPv4 của NAT. Để giải quyết vấn đề đó, người ta sẽ cần sử dụng một dịch vụ có tên chỉ có IPv4 và tên chỉ IPv6, điều đó cũng sẽ giải quyết vấn đề của NAT64.
kasperd

7

Tôi muốn thêm một điểm vào câu trả lời đã có sẵn.

Nó cũng phụ thuộc vào độ phức tạp của mạng. Có thể máy tính của bạn được đặt trong một mạng có nhiều địa chỉ IP bên ngoài và bộ định tuyến ở đâu đó trên đường truyền lưu lượng truy cập ra Internet dựa trên một số tiêu chí: ví dụ: địa chỉ IP đích hoặc thời gian trong ngày (có thể là một kênh đường lên rẻ hơn vào ban đêm hoặc vì lý do khác).

Vì vậy, để hoàn thành, một khái niệm "địa chỉ IP bên ngoài" có thể yêu cầu xác định điểm đến mà địa chỉ của bạn đang ở bên ngoài.

Trong ví dụ dưới đây Router #2có thể thực hiện NAT và gửi lưu lượng truy cập đến một trong hai đường lên và máy chủ nhận có thể thấy địa chỉ IP bên ngoài khác nhau cho Host.

Hoặc có thể là một điểm đến nhất định (ví dụ host1.example.com) luôn luôn định tuyến Uplink Avà máy chủ host2.example.comluôn định tuyến qua Uplink B. Vì vậy, các địa chỉ IP bên ngoài của bạn được nhìn thấy bởi các máy chủ đó sẽ khác nhau, cung cấp đó Uplink AUplink Blà các ISP khác nhau.

   Uplink A                                  Uplink B
-------------                             -------------
      |                                         |
      |                                         |
      |     192.168.1.1         192.168.50.50   |
      |               -----------               |
      |---------------|Router #2|---------------|
                      -----------
                           |  192.168.100.1
                           |
                           |  192.168.100.2
                      -----------
                      |Router #1|
                      -----------
                           |  192.168.200.1
                           |
                           |  192.168.200.2
                      -----------
                      |   Host  |
                      -----------

Vì vậy, gửi lưu lượng ra sẽ cho phép để có được kết quả đáng tin cậy hơn.


4

Bạn có thể sử dụng DNS chứ không phải HTTP. Ví dụ: bạn có thể sử dụng:

dig +short TXT o-o.myaddr.l.google.com

Điều này sẽ hiển thị địa chỉ unicast của máy chủ DNS bạn đang sử dụng và nếu nó hỗ trợ EDNS, nó cũng sẽ hiển thị địa chỉ IP của bạn, mặc dù có thể bị cắt ngắn.

Để có được địa chỉ IP đầy đủ của bạn, bạn có thể bỏ qua máy chủ DNS cục bộ của mình và gửi yêu cầu trên trực tiếp đến ns {1,2,3,4} .google.com

dig +short TXT o-o.myaddr.l.google.com @ns3.google.com

Nếu bạn muốn xem địa chỉ IP của mình trong một phiên bản giao thức cụ thể, bạn có thể sử dụng -6-4:

dig -6 +short TXT o-o.myaddr.l.google.com @ns3.google.com
dig -4 +short TXT o-o.myaddr.l.google.com @ns3.google.com

Bạn cũng có thể sử dụng OpenDNS nếu bạn thích. OpenDNS không sử dụng bản ghi TXT cho bản ghi này mà là bản ghi A và AAAA, vì vậy bạn phải chỉ định phiên bản giao thức nào bạn đang tìm kiếm:

dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com

Lưu ý rằng nếu lưu lượng truy cập của bạn đi qua bản dịch giao thức, bạn có thể nhận được các kết quả khác nhau hoặc không có gì cả. Kiểm tra từ một máy phía sau NAT64 tôi có thể thấy địa chỉ IPv6 của mình bằng các lệnh trên nhưng không phải là địa chỉ IPv4 của NAT64.

Câu trả lời này dựa trên các nguồn 1 2 3 và một chút nghiên cứu của riêng tôi.


2

Web thường đề cập đến HTTP, nếu đó là ý nghĩa của câu hỏi của bạn, thì chẳng hạn, bạn có thể sử dụng STUN ( Bài viết Wikipedia ) viết tắt của "Tiện ích chuyển đổi phiên cho NAT".

Bây giờ khi nó được tô sáng trong một bình luận, bạn có thể có nhiều IP bên ngoài. Ngoài ra, khi các kết nối không dây đang trở nên phổ biến hơn (điều 4G), không thể là địa chỉ IP được báo cáo bởi bộ định tuyến của bạn sẽ không phải là địa chỉ công khai. Tôi thậm chí đã gặp kịch bản đó về các kết nối cáp quang ở một số quốc gia, nơi ISP sẽ cung cấp cho bộ định tuyến địa phương một IP riêng, sẽ được dịch 1: 1 sang IP công cộng sau khi rời khỏi mạng của họ.

Vì vậy, nếu câu hỏi của bạn là "tôi có thể tìm thấy IP công cộng của mình mà không gửi các gói ra khỏi mạng của mình không", bạn MIGHT trong ngữ cảnh của bạn, nhưng không có giải pháp bằng chứng 100%.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.