Làm thế nào để kiểm tra một địa chỉ IP công cộng hợp lệ?


39

Xem xét danh sách các địa chỉ IP được cung cấp bởi tiêu đề X-Forwarded-For HTTP :

10.0.0.142, 192.168.0.10, 212.43.234.12, 54,23.66,43

Tôi muốn biết đâu là địa chỉ truy cập công khai đầu tiên trong danh sách đó. Tôi có thể xem qua chúng đủ dễ dàng, nhưng làm thế nào tôi có thể biết cái nào có thể truy cập công khai? Dường như với tôi (con mắt chưa được huấn luyện của tôi) 10.0.0.142là một máy trạm, 192.168.0.10là một proxy nội bộ và 212.43.234.12là một địa chỉ có thể truy cập công khai được chuyển tiếp qua proxy tại 54.23.66.43. Có cách nào để tính toán điều này trong mã?

Trực giác đầu tiên của tôi là các địa chỉ bắt đầu bằng 10.hoặc 192.không thể truy cập công khai, nhưng http://simplesniff.com tiết lộ địa chỉ IP nhà của tôi 192.117.111.61. Có một công thức để xác định địa chỉ nào là công khai và địa chỉ nào là riêng tư không? Lưu ý rằng ngay cả khi cố gắng ping máy chủ được đề cập có thể không giúp ích vì một số máy chủ sẽ không phản hồi với ping và cũng có thể có một địa chỉ trên mạng cục bộ của tôi cũng khớp với địa chỉ nội bộ.


3
Tôi cũng sẽ chỉ ra rằng ngay cả khi bạn tìm thấy một địa chỉ có thể định tuyến được, một số công ty lạm dụng không gian địa chỉ công cộng trong nội bộ. Tôi có kiến ​​thức trực tiếp về một tên công ty rất lớn và nổi tiếng, không thể giải thích được bằng cách sử dụng không gian IPv4 AFRINIC và AT & T trên mạng công ty nội bộ của họ thay vì không gian RFC1918 ... họ ủy quyền tất cả lưu lượng HTTP ... và X-Forwarded -Đối với tiêu đề từ mạng công ty của họ sẽ hiển thị không gian công cộng mà họ không thực sự sở hữu.
Mike Pennington

@MikePennington cũng có trải nghiệm đầu tiên về điều này, ngoại trừ họ đang sử dụng số APNIC. Cũng có thể gây ra sự cố khi một máy nội bộ (đặc biệt là các máy tìm thấy đích đến trong mạng con của họ) cố gắng truy cập vào một trong các máy chủ công cộng ...
emynd

@MikePennington - đối với một mạng riêng sử dụng các địa chỉ IPv4 con rối thực sự được sử dụng bên ngoài mạng riêng (ví dụ: internet), làm thế nào một người trong mạng riêng tiếp cận một trang web công cộng có địa chỉ IP trong cùng phạm vi đó? Yêu cầu đó sẽ không được chuyển đến một số máy tính (thậm chí có thể là máy tính của chính họ) trong mạng riêng?
Kevin Fegan

Tin tưởng mù quáng x-chuyển tiếp-cho là một ý tưởng tồi . Bất kỳ kẻ lạm dụng nào cũng đặt tiêu đề x-chuyển tiếp giả cho yêu cầu bất kỳ địa chỉ nào họ muốn.
Peter Green

Câu trả lời:


24

RFC 1918 xác định phạm vi địa chỉ IP riêng. Có một cái nhìn ở đây.

Từ tài liệu đó:

  1. Không gian địa chỉ riêng

    Cơ quan cấp số được gán Internet (IANA) đã dành ba khối không gian địa chỉ IP sau đây cho các mạng riêng:

    10.0.0.0 - 10.255.255.255 (tiền tố 10/8)

    172.16.0.0 - 172.31.255.255 (tiền tố 172.16 / 12)

    192.168.0.0 - 192.168.255.255 (tiền tố 192.168 / 16)


Cảm ơn bạn. Tôi thấy thú vị rằng 127.0.0.0/16(và có thể nhiều hơn) không có trong danh sách đó.
dotancohen

5
localhost được định nghĩa trong tools.ietf.org/html/rfc6761
Darryl Braaten

4
@dotancohen: Khối loopback là a / 8, không phải a / 16 và không nằm trong danh sách đó vì đó không phải là không gian địa chỉ riêng tư.
Blrfl

@Blrfl: Cảm ơn bạn, tôi không chắc khối loopback rộng bao nhiêu. Tôi thực sự không tìm cách xác định địa chỉ riêng tư mà là địa chỉ ngoài công cộng (một tập hợp con là địa chỉ riêng tư). Khác với các địa chỉ RFC 1918/6890 và không gian 127.0.0.0/8, có địa chỉ nào khác rõ ràng không công khai mà người ta có thể đi qua không?
dotancohen

1
vi.wikipedia.org/wiki/ Kẻ 240.0.0.0 - 254.255.255.254 (240.0.0.0/4 và 255.0.0.0/8)
David Houde

37

Ngoài không gian RFC 1918 ban đầu (hiện được cập nhật lên RFC6890 ), có một số khối khác như 192.0.2.0 không được công bố công khai. Hơn nữa, có thể ai đó có không gian IPv4 hợp lệ mà không được công bố trên internet công cộng.

Điều đơn giản nhất để làm là telnet route-views.oregon-ix.net, đăng nhập rviewsvà tự tìm kiếm ... ví dụ, đây là một số không gian "192" được công bố bởi AS7018 (AT & T) ...

route-views>sh ip route 192.199.1.0
Routing entry for 192.199.1.0/24
  Known via "bgp 6447", distance 20, metric 0
  Tag 7018, type external
  Last update from 12.0.1.63 3w1d ago
  Routing Descriptor Blocks:
  * 12.0.1.63, from 12.0.1.63, 3w1d ago
      Route metric is 0, traffic share count is 1
      AS Hops 2
      Route tag 7018

route-views>

Mặt khác, bạn sẽ thấy rằng 192.0.2.0/24 (ref RFC6890 ) không được tìm thấy ...

route-views>sh ip route 192.0.2.0 255.255.255.0
% Subnet not in table
route-views>

Cũng không phải là 169.254.0.0/16 (hoặc lâu hơn) ...

route-views>sh ip route 169.254.0.0 255.255.0.0 longer
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 128.223.51.1 to network 0.0.0.0

route-views>

1
RFC 1918 chưa được cập nhật bởi (hoặc đến) RFC 6890. RFC 6890 chỉ đơn giản là " nhắc lại việc gán khối địa chỉ IPv4 (192.0.0.0/24) cho IANA. Nó cũng hướng dẫn IANA tái cấu trúc Địa chỉ mục đích đặc biệt của IPv4 và IPv6 Cơ quan đăng ký. "Nó không cập nhật các mục đăng ký địa chỉ mục đích đặc biệt của IPv4 cho mục đích sử dụng riêng và khối địa chỉ IPv4 192.0.0.0/24 được phân loại là" Bài tập giao thức IETF . "
giờ vào

2
@ one.time, RFC 6890 chứa một superset của không gian địa chỉ được dành riêng trong RFC 1918. Tôi không biết tại sao bạn lại nói về 192.0.0.0/24; có lẽ bạn nên đọc lại câu trả lời của tôi kỹ hơn :-)
Mike Pennington

khối IPv4 192.0.0.0/24 là điểm chính của RFC 6890, vì vậy tôi đã tham chiếu đến nó để đo lường tốt và so sánh với RFC 1918. "Bên cạnh không gian RFC 1918 ban đầu (hiện đã được cập nhật lên RFC6890)" là gì khơi dậy sự tò mò của tôi khi đọc bài viết của bạn. Ngoài việc cập nhật các mục đăng ký địa chỉ mục đích đặc biệt cho IPv4 và IPv6 để bao gồm 192.0.0.0.24, RFC 6890 không phải là bản cập nhật cho RFC 1918. Tôi chỉ muốn cung cấp một quan sát về độ chính xác của tuyên bố. HTHs ;-)
one.time

5
@ one.time, RFC 6890 về mặt giáo dục không phải là bản cập nhật cho RFC 1918. Về mặt chức năng, người ta nên sử dụng RFC 6890 thay vì RFC 1918 khi xem xét không gian IP hợp lệ trong bảng BGP công cộng ...
Mike Pennington

13

Nhóm Cymru cung cấp một tham chiếu bogon cho cả IPv4 và IPv6 mà bạn có thể sử dụng để lọc ra các địa chỉ IP chưa được gán / dành riêng / riêng tư - nó được cung cấp cả dưới dạng một danh sách đơn giản cho các tiền tố nổi tiếng và cả trong một danh sách lớn hơn bao gồm không gian như chưa được chỉ định bởi RIRs.

Họ cũng chạy một máy chủ bogon BGP mà bạn có thể yêu cầu nhìn trộm miễn phí - vô giá nếu bạn không thể chạy một vùng không có mặc định cho internet.


2
Thẳng thắn 'không được chỉ định' là một cái gì đó vô dụng để lọc, lọc nó gây ra nhiều vấn đề hơn nó giải quyết. Và bogons thực tế là dễ dàng, vì chúng rất ổn định / tĩnh.
ytti

2
OK, sau đó không sử dụng cái đó, như tôi đã nói, họ cung cấp nhiều loại hương vị.
Olipro

2

Có một số phạm vi được dành riêng cho các trường hợp sử dụng khác nhau. IANA có danh sách có thẩm quyền và toàn diện . Nó bao gồm RFC1918, RFC6761 cũng như các đặt phòng gần đây hơn như khối 100,64 / 10 CGN. Nếu bạn tìm thấy bất kỳ địa chỉ nào trong đó thì có khả năng chúng được sử dụng trong một mạng riêng và nên được loại bỏ theo hướng có lợi cho những địa chỉ khác để tìm kiếm địa chỉ công cộng đầu tiên.

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.