Kiểm tra khả năng của máy chủ để phục vụ một tên miền cụ thể


11

Giả sử bạn đã Server Athiết lập với máy chủ web yêu thích của mình để phục vụ www.example.com. Bây giờ bạn muốn di chuyển này đến Server B. Sau một loạt các sao chép và cấu hình, máy chủ mới dường như đã sẵn sàng. Một thử nghiệm cuối cùng sẽ theo thứ tự: Trước khi thay đổi bản ghi DNS, làm thế nào để yêu cầu www.example.comtừ Máy chủ B khi bản ghi DNS vẫn trỏ đến máy chủ A?


Trong khi câu hỏi chính của tôi đã được trả lời, trong trường hợp / etc / hosts không nằm trong phạm vi ảnh hưởng của tôi, có thể kiểm tra nó bằng telnet bằng cách thay vì nói HTTP1.1 thô với máy chủ web không?


8
Vui lòng không chỉnh sửa câu hỏi của bạn để hỏi một câu hỏi hoàn toàn mới. Nó có xu hướng (phần nào) làm mất hiệu lực các câu trả lời hiện có và nền tảng cũng không gửi thông báo rằng một câu hỏi đã thay đổi, khiến mọi người không liên quan đến câu hỏi của bạn sẽ xem lại câu trả lời của họ. Bạn có thể để lại một bình luận trực tiếp cho họ rằng bạn có một câu hỏi tiếp theo. Thay vào đó, một chiến lược tốt hơn là đặt một câu hỏi mới (có thể chỉ vào Hỏi & Đáp trước đó của bạn).
HBruijn

2
Đánh giá cao việc bỏ phiếu chỉ dành cho sự thay đổi mục tiêu hoàn chỉnh với chỉnh sửa. > _ <
Wesley

Câu trả lời:


12

DNS là một điều kỳ diệu. Với đủ quyền kiểm soát một máy tính khách hàng, bạn có thể làm right.comvào wrong.comviceversa.io. Nhảy lên PC máy khách thử nghiệm và xử lý độ phân giải DNS của nó bằng cách thay đổi tệp máy chủ trên máy khách đó hoặc bạn có thể làm điều gì đó phức tạp hơn một chút và cung cấp cho máy chủ DNS đó một truy vấn đơn giản dnsmasq. Dù bạn đi theo quy trình nào, mục tiêu cuối cùng là tạo phản hồi DNS cho các truy vấn liên quan đến www.example.comphản hồi với địa chỉ IP cho Máy chủ B. Các tiêu đề máy chủ HTTP sau đó sẽ mang tên DNS cho www.example.com, nhưng được nhắm vào Máy chủ B.

Ma thuật!


3
Bằng cách nào đó /etc/hostsđã không xảy ra với tôi, và điều này làm việc hoàn hảo. Chúc mừng cho lời nhắc nhở!
Jarmund

2
Các hoststập tin được không tham gia vào phân giải DNS nhưng là một cơ chế tra cứu tên hoàn toàn riêng biệt mà thư viện phân giải được cung cấp bởi hệ điều hành khách hàng có thể, và trong nhiều trường hợp sẽ, sử dụng ngoài việc tra cứu trong DNS. Cá nhân tôi nghĩ rằng bit "thật kỳ diệu" chỉ ăn nhập vào "không cần phải hiểu", đó chắc chắn là một điều tồi tệ cho các chuyên gia.
Håkan Lindqvist

@ HåkanLindqvist Bạn đã hiểu nhầm ngữ cảnh và cách sử dụng cụm từ.
Wesley

Trong mọi trường hợp, lưu trữ tệpDNS . Đây là SF; Tôi mong mọi người ở đây, nếu ở bất cứ đâu, biết sự khác biệt.
Ilmari Karonen

@IlmariKaronen Và tôi không nói rằng các tệp lưu trữ là DNS, vì vậy những mong đợi của bạn đối với ServerFault đã được đáp ứng và tất cả chúng ta đều tốt ở đây! (ᐛ)
Wesley

11

Điều quan trọng cần lưu ý là những gì quan trọng để thực hiện một thử nghiệm như thế này đối với HTTP hoàn toàn không liên quan đến DNS mà là những gì máy khách HTTP gửi làm Hostgiá trị tiêu đề.

Rõ ràng, khách hàng cần kết nối với đúng địa chỉ IP và cổng, nhưng ngoài ra, tất cả đều đi vào Hosttiêu đề nằm trong chính yêu cầu HTTP.


Để kiểm tra nhanh, lệnh sau có thể được sử dụng mà không thay đổi bất kỳ cấu hình cấp hệ điều hành nào trên máy khách:

$ curl -H "Host: www.example.com" http://192.0.2.17/foo/bar

hoặc, cho vấn đề đó,

$ curl -H "Host: www.example.com" http://beta.example.com/foo/bar


Để thực hiện tương tự với trình duyệt web thông thường, bạn sẽ cần một tiện ích mở rộng trình duyệt có thể sửa đổi các tiêu đề yêu cầu (hoặc có thể là proxy HTTP thay đổi tiêu đề) hoặc bạn cần thay đổi cấu hình của hệ điều hành máy khách.

Như đã đề cập, phương tiện đơn giản nhất để thực hiện thay đổi cấu hình như vậy sẽ là thêm một mục vào hoststệp. Bằng cách này, thư viện trình phân giải hệ điều hành khách sẽ bị ảnh hưởng khi tư vấn hoststệp và thậm chí sẽ không cần thực hiện tra cứu DNS.

Các tùy chọn khác bao gồm thay đổi máy chủ trình phân giải DNS được định cấu hình trên máy khách thành máy chủ tên được thiết lập để trả lời theo ý muốn.


1
+1 cho một giải pháp không liên quan đến mucking xung quanh với độ phân giải tên
Jarmund

2
Recent curlcho phép bạn ghi đè độ phân giải tên bình thường (DNS hoặc hostfile) và vẫn tự động thực hiện các tiêu đề và SNI nếu sử dụng / kiểm tra httpS. Xem --resolvetrong trang của bạn hoặc tại curl.haxx.se/docs/manpage.html .
dave_thndry_085

4

Bạn có thể kiểm tra điều này với telnet. Bạn cần tạo một yêu cầu HTTP thô bằng cách gõ các lệnh. Bạn không thể mắc lỗi nào và một số máy chủ có thời gian chờ vì vậy bạn cũng phải nhập toàn bộ yêu cầu trong khung thời gian đó.

Lệnh sẽ giống như thế này:

telnet serverb 80

Yêu cầu sẽ trông giống như thế này:

GET / HTTP/1.1
Host: www.example.com

Lưu ý rằng nó phải kết thúc bằng một dòng trống, vì vậy bạn sẽ nhấn enter hai lần sau tiêu đề máy chủ.


1
Nitpick: trong khi các tiêu đề HTTP không được coi là phân biệt chữ hoa chữ thường, thì tiêu đề chuẩnHost không phải là tất cả. (Và rõ ràng một số máy chủ có thể gặp sự cố với các cách viết hoa khác nhau.)
Bob

@Bob đúng, đã chỉnh sửa
briantist

3

Những gì tôi thường làm là buộc www.example.com vào máy chủ B địa chỉ IP trong / etc / hosts của tôi. Tôi đã làm điều đó kể từ khi tôi sử dụng khảm và vì tôi không thường xuyên làm điều đó nên tôi không cảm thấy cần phải tìm kiếm tốt hơn.

Nhìn xung quanh một chút cho bạn, tôi tìm thấy /superuser/403042/custom-host-file-for-firefox được trả lời bởi https://addons.mozilla.org/es/firefox/addon/ foxyproxy-standard / nhưng có một lưu ý rất gần đây nói rằng nó bị bỏ rơi.


Trả lời chỉnh sửa của bạn yêu cầu một phương pháp thử nghiệm không có / etc / hosts, vâng, tồn tại. Nó có thể là telnet để thử nghiệm rất cơ bản, một addon như tôi đã đề cập trong câu trả lời của tôi ở trên hoặc proxy được cấu hình tùy chỉnh hoặc (và đây là phương pháp tôi muốn) trên ServerAlias ​​trên máy chủ B của www2.example. com.
Luật29

3

Nếu bạn cần kiểm tra xem nó có hoạt động không, tôi khuyên bạn nên sử dụng plugin broswer đơn giản như Modify Headerscho Firefox và thay đổi HOSTthành www.mydomain.com.

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.