Nếu bạn đang thực hiện nhiều thao tác trên mạng, cấu hình các ứng dụng và công cụ máy chủ dựa trên mạng LAN, bạn có thể nhận thấy rằng có sự khác biệt giữa địa chỉ IP cục bộ của localhost. Đọc bài viết của Followeek hôm nay để tìm hiểu về sự khác biệt này.

Câu hỏi

Sử dụng cmd và ping trên Windows cho tôi kết quả sau:

Ping “localhost”:

Ping “192.168.0.10” (địa chỉ IP cục bộ):

Tại sao tôi nhận được kết quả khác nhau như vậy?

Câu trả lời

Bạn không ping trên cùng một giao diện, không có bất kỳ giao diện vật lý nào, bạn vẫn có một “localhost”.

Của bạn localhost được sử dụng để chỉ máy tính của bạn từ IP “bên trong” của nó, không phải từ bất kỳ IP “bên ngoài” nào của máy tính của bạn. Vì vậy, các gói ping không đi qua bất kỳ giao diện mạng vật lý nào; chỉ thông qua một giao diện ngược vòng lặp ảo trực tiếp gửi các gói từ cổng này sang cổng khác mà không cần bất kỳ bước nhảy vật lý nào.

Bạn vẫn có thể thắc mắc tại sao localhost đang giải quyết ::1, trong khi theo truyền thống, chúng tôi mong đợi nó phân giải thành địa chỉ IPv4 127.0.0.1. Lưu ý rằng .localhost theo truyền thống là TLD (xem RFC 2606) trỏ về địa chỉ IP quay lại của vòng lặp (đối với IPv4, xem RFC 3330, đặc biệt là 127.0.0.0/8).

Tra cứu localhost sử dụng nslookup cho chúng tôi:

nslookup localhost

...
Name:    localhost
Addresses:  ::1
          127.0.0.1

Do đó, Windows thích sử dụng địa chỉ IP quay lại IPv6 ::1 (xem RFC 2373) vì nó được liệt kê đầu tiên.

Được rồi, vậy nó đến từ đâu, chúng ta hãy xem tệp hosts.

type %WINDIR%System32DriversEtcHosts

...
# localhost name resolution is handled within DNS itself.
#       127.0.0.1       localhost
#       ::1             localhost
...

Hmm, chúng ta phải xem cài đặt DNS của Windows.

Bài viết KB này cho chúng ta biết về một cài đặt ảnh hưởng đến những gì Windows ưa thích, được nhấn mạnh bằng chữ in đậm:

  1. Trong Registry Editor, định vị và sau đó bấm vào khóa con đăng ký sau:
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6Parameters
    
  2. Bấm đúp vào DisabledComponents để sửa đổi mục nhập DisabledComponents. Lưu ý: Nếu mục nhập DisabledComponents không khả dụng, bạn phải tạo nó. Để làm điều này, hãy làm theo các bước sau:
    1. Trong menu Edit , trỏ chuột vào New, sau đó bấm Giá trị DWORD (32-bit).
    2. Nhập DisabledComponents, rồi nhấn ENTER.
    3. Bấm đúp vào DisabledComponents.
  3. Nhập bất kỳ giá trị nào sau đây vào trường Dữ liệu giá trị: để định cấu hình giao thức IPv6 ở trạng thái mong muốn, sau đó bấm OK:
    • Kiểu 0 để kích hoạt tất cả các thành phần IPv6. (Cài đặt mặc định của Windows)
    • Kiểu 0xffffffff để tắt tất cả các thành phần IPv6, ngoại trừ giao diện lặp lại IPv6. Giá trị này cũng định cấu hình Windows thích sử dụng Internet Protocol security (IPsec) phiên bản 4 (IPv4) hơn IPv6 bằng cách sửa đổi các mục nhập trong bảng chính sách tiền tố.
    • Kiểu 0x20 thích IPv4 hơn IPv6 bằng cách sửa đổi các mục nhập trong bảng chính sách tiền tố.
    • Kiểu 0x10 để tắt IPv6 trên tất cả các giao diện không có kênh (trên cả LAN và Giao thức điểm-điểm [PPP] giao diện).
    • Kiểu 0x01 để tắt IPv6 trên tất cả các giao diện đường hầm. Chúng bao gồm Giao thức địa chỉ đường hầm tự động nội bộ (ISATAP), 6to4 và Teredo.
    • Kiểu 0x11 để tắt tất cả các giao diện IPv6 ngoại trừ giao diện lặp lại IPv6.
  4. Khởi động lại máy tính để cài đặt này có hiệu lực.

Bảng chính sách tiền tố này là gì?

netsh interface ipv6 show prefixpolicies (hoặc là prefixpolicy trên các phiên bản trước đó)

Precedence  Label  Prefix
----------  -----  --------------------------------
        50      0  ::1/128
        45     13  fc00::/7
        40      1  ::/0
        10      4  ::ffff:0:0/96
         7     14  2002::/16
         5      5  2001::/32
         1     11  fec0::/10
         1     12  3ffe::/16
         1     10  ::/96

Bảng này quyết định tiền tố nào được ưu tiên hơn các tiền tố khác trong quá trình phân giải DNS.

Ah, vì vậy bằng cách sử dụng KB đó, chúng tôi có thể thêm các mục ở đây biểu thị rằng IPv4 có mức độ ưu tiên cao hơn IPv6.

Ghi chú: Không có lý do gì để ghi đè, trừ khi bạn đang gặp sự cố về khả năng tương thích. Việc thay đổi cài đặt này trên Máy chủ Windows của chúng tôi đã làm hỏng máy chủ của chúng tôi, vì vậy cần xử lý cẩn thận…

Rõ ràng localhost và địa chỉ IP cục bộ là các thực thể riêng biệt, phục vụ các mục đích khác nhau và bây giờ chúng ta đều biết tại sao.


Hy vọng rằng bài viết này đã giúp ích được cho bạn! Followeek chúc bạn một ngày mới tốt lành.