Làm thế nào đến máy chủ lưu trữ chuyển hướng thất bại?


12

Tôi đang cố gắng chuyển hướng google.com sang máy cục bộ của mình để giải trí và tìm hiểu với tệp / etc / hosts này trên máy Mac.

127.0.0.1 www.google.com

Tuy nhiên, www.google.com vẫn ánh xạ tới trang chủ Google khi tôi truy cập nó trong Chrome trên máy Mac của tôi. Tại sao?

Về cơ bản, đây là tất cả những gì tôi đã làm:

  1. Nhập sudo vim /etc/hostsvào thiết bị đầu cuối.
  2. Nhập 127.0.0.1 www.google.comvào tập tin máy chủ.
  3. Lưu và thoát vim.

Câu trả lời:


10

Các hoststập tin không hoạt động theo cách này. Bạn chỉ có thể sử dụng nó để ánh xạ tên máy chủ thành địa chỉ IP, không thể localhost.

Đối với trường hợp của bạn, bạn sẽ sử dụng 127.0.0.1 www.google.com, tức là ánh xạ www.google.com thành 127.0.0.1.

Nếu bạn muốn ánh xạ nhiều tên máy chủ đến IP singe, bạn chỉ cần thêm những tên máy trong cùng một dòng, ví dụ 127.0.0.1 www.a.com www.b.com.


1
Cảm ơn bạn. Tôi vừa thay đổi tập tin / etc / hosts trên máy Mac của mình thành 127.0.0.1 www.google.com. Tuy nhiên, google.com vẫn dẫn đến trang chủ Google. Tôi có cần phải làm mới bất cứ điều gì? Tôi có nên khởi động lại máy tính của mình?
David Faux

Bạn không cần phải làm vậy. Hãy thử thêm 127.0.0.1 google.com(không có www) sau dòng này và kiểm tra xem nó có hoạt động không.
Renan

127.0.0.1 google.comcũng không hoạt động. Tôi không chắc điều gì đang xảy ra ... Tôi biết đó /etc/hostslà một liên kết mềm /private/etc/hoststrên máy Mac, nhưng tôi không nghĩ điều đó có ích gì cả.
David Faux

1
Một kỹ thuật: hostsánh xạ tên máy chủ đến địa chỉ IP, không phải ngược lại.
Dennis

1
@Dennis, đó là những gì tôi sẽ nói, nhưng một lần nữa, nó thực sự hoạt động cả hai cách khi bạn nghĩ về nó, bởi vì nó tạo ra một sự liên kết giữa hai mục.
Synetech

9

Trình duyệt web không phải là cách tốt nhất để kiểm tra xem hostscú pháp của bạn có đúng không. Hãy thử thực hiện

ping www.google.com

và xác minh rằng nó ping 127.0.0.1.

Lý do Chrome xuất hiện để bỏ qua hoststệp của bạn là bộ đệm:

Nếu Chrome đã truy vấn IP gần đây (định nghĩa gần đây rất có thể phụ thuộc vào thời gian tồn tại (TTL) được máy chủ DNS trả về), nó sẽ bỏ qua hoststệp, vì nó đã biết IP chính xác. Điều này được thực hiện để tăng tốc độ duyệt web.

Để làm cho Chrome tôn trọng mục nhập mới, hãy thực hiện theo dõi:

  1. Chỉnh sửa /etc/hostsnhư @Renan mô tả.

  2. Tới chrome://chrome/settings/clearBrowserData.

  3. Chọn since the beginning of time.

  4. Kiểm tra Empty the cache, nhưng bỏ chọn mọi thứ khác.

  5. Nhấn Clear browsing datavà chờ cho nó kết thúc.

  6. Khởi động lại Chrome.

Chrome nên tôn trọng hoststệp của bạn ngay bây giờ.


2
Tôi đã học được điều này từ lâu với IE6. Nếu tôi thực hiện thay đổi tệp HOSTS trong khi IE vẫn đang mở, tôi sẽ phải đóng nó một cách cụ thể và chạy lại nó để nhận các thay đổi. Điều này đi cho hầu hết các chương trình. Tuy nhiên, một số chương trình (như các phiên bản Chrome từ một hoặc hai năm trước) sẽ thực sự đọc lại tệp HOSTS theo định kỳ, vì vậy nếu bạn thực hiện thay đổi, chỉ cần đợi một hoặc hai phút, sau đó làm mới (không cần xóa bộ nhớ cache). (Chính sách đọc lại này đôi khi rất hữu ích như thế này, nhưng thực tế thường khá tệ vì nó lãng phí và đặc biệt tệ nếu tệp HOSTS lớn.)
Synetech

@Synetech: Chrome tiếp nhận các thay đổi hostsngay lập tức, miễn là mục nhập không phải là tên máy chủ đã được lưu trong bộ nhớ cache. Tôi giả sử rằng nó hostschỉ kiểm tra nếu TTL đã qua. Với các trang web lớn , có thể mất một thời gian.
Dennis

Tôi không biết chi tiết cụ thể về cách các phiên bản khác nhau đọc lại tệp HOSTS, nhưng bạn có thể sử dụng Filemon / ProcMon để xem nó hoạt động; chrome.exethỉnh thoảng sẽ đọc toàn bộ tập tin.
Synetech

2
Có một cách ít tàn bạo hơn để
xóa

@hakunin: gọn gàng. Trên Chromium 25.0.1364.160 Ubuntu 12.04, điều này thậm chí không còn cần thiết nữa. Tôi đã đăng ký net-internals/#dnsvà bộ đệm máy chủ sẽ tự động bị xóa khi /etc/hostsbị thay đổi.
Dennis

1

Câu trả lời của tôi là sự kết hợp của những điều trên bởi vì tôi đang kết nối với văn phòng của mình thông qua Fortinet SSL VPN cho Ubuntu 16.04.

Điều đầu tiên tôi phải làm là đưa lên bàn điều khiển thiết bị đầu cuối của mình và chạy lệnh sau:

sudo nano /etc/resolvconf/resolv.conf.d/base

Tôi đã thêm ví dụ sau:

searchdomain domain.local
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

Sau đó, tôi đã lưu tệp bằng cách nhấn CTRL-Ovà đóng nano bằng cách nhấn CTRL-X.

Sau đó tôi đã làm như sau và nó hoạt động hoàn hảo:

Để làm cho Chrome tôn trọng mục nhập mới, hãy thực hiện theo dõi:

Chỉnh sửa /etc/hostsnhư @Renan mô tả.

  1. Tới chrome://chrome/settings/clearBrowserData.
  2. Chọn từ đầu thời gian.
  3. Kiểm tra Làm trống bộ đệm, nhưng bỏ chọn mọi thứ khác.
  4. Nhấp vào Xóa dữ liệu duyệt web và đợi cho đến khi kết thúc.
  5. Khởi động lại Chrome.

Chrome nên tôn trọng tệp máy chủ của bạn ngay bây giờ.

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.