Điểm nhiều địa chỉ IP cho một tên máy chủ


25

Trong Windows System, có tệp này tại C:\WINDOWS\system32\drivers\etc\hosts. Tập tin này cho phép chúng tôi mặc định một địa chỉ IP cụ thể thành tên máy chủ.

Vấn đề bây giờ là liệu tôi có thể đặt nhiều địa chỉ IP thành tên máy chủ hay không. Ví dụ: tôi có thể làm một cái gì đó như thế này:

192.168.244.128   gateway.net
192.168.226.129   gateway.net

Và mong đợi rằng trình duyệt có thể giải quyết cho cả hai, xem cái nào sẽ hoạt động và do đó chỉ vào cái đó?

Nếu không, có cách nào khác để có được hành vi tôi muốn không?

Lưu ý: Tôi đang triển khai ứng dụng này trong mạng cục bộ của mình, do đó không cần internet.

Câu trả lời:


25

Thông thường bạn sẽ không sử dụng máy chủ để làm điều này, nhưng DNS của bạn. Hầu hết DNS sẽ cung cấp cái được gọi là "Round Robin" nếu bạn gán nhiều bản ghi A cho một tên trong vùng.

Những gì nó sẽ làm sau đó, là yêu cầu đầu tiên thông qua sẽ nhận được 192.168.244.128, yêu cầu tiếp theo sẽ nhận được 192.168.226.129, v.v. Tuy nhiên, theo thiết kế, máy cục bộ của bạn sẽ lưu trữ độ phân giải DNS của nó và thường sẽ sử dụng cùng một địa chỉ IP cho đến khi hết hạn (Time To Live, TTL).


1
EDIT: Nevermind, tôi đứng chính xác !! Đăng dưới đây
MagnaVis

17

Có, bạn có thể làm điều này, tôi đã sử dụng nó để kiểm tra các kịch bản DNS vòng tròn mà không cần phải thực sự nhập các máy chủ trong DNS.

Khi một ứng dụng gọi gethostbyname, nó sẽ lấy lại danh sách đầy đủ các địa chỉ IP (có thể theo thứ tự ngẫu nhiên - tùy thuộc vào các thư viện / HĐH).


2
+1 để thực sự trả lời câu hỏi
CLF

bạn muốn nói là nó sẽ chọn một cách ngẫu
nhiên..tôi

12

Tôi nghĩ rằng bạn đang đi về điều này sai cách. Hãy cho tôi biết nếu tôi đang đưa ra các giả định sai ở đây.

Kịch bản:

  • Bạn có hai máy chủ windows chạy cùng một ứng dụng web, có thể là trên IIS.
  • Bạn muốn ứng dụng của mình có khả năng chịu lỗi để nếu một trong các máy chủ bị lỗi, ứng dụng của bạn vẫn khả dụng.
  • Bạn muốn khả năng chịu lỗi này được minh bạch đối với trình duyệt, để người dùng có thể tiếp tục truy cập ứng dụng có cùng tên máy chủ tức là gateway.net

Những gì bạn đang cố gắng thực hiện được gọi là DNS vòng tròn (hay còn gọi là cân bằng tải của người nghèo), nhưng bạn đang cố gắng làm điều này từ phía khách hàng. Điều này dường như không có hiệu ứng mong muốn (ít nhất là trên hộp Windows XP của tôi) ngay cả khi tôi xóa bộ đệm DNS. Windows sẽ chỉ giải quyết IP đầu tiên trong tệp. Tuy nhiên, DNS vòng tròn không có khả năng chịu lỗi, vì vậy điều này sẽ không giúp bạn đạt được những gì bạn muốn.

Đề xuất giải pháp:

Cân bằng tải phần cứng: Một số tên thương hiệu là Alteon, Big-IP, Barracuda. Điều này về cơ bản là trình bày một IP duy nhất để người dùng của bạn kết nối với & nó chuyển tiếp các yêu cầu đến các máy chủ web. Nếu một trong các máy chủ trở nên không khả dụng, thì nó sẽ không còn chuyển tiếp lưu lượng truy cập đến nó. Đây là lựa chọn đắt tiền.

Dịch vụ cân bằng tải mạng: Đây là công nghệ của Microsoft có sẵn trên máy chủ windows, sẽ cung cấp cho bạn một cụm IP duy nhất. Nó đạt được kết quả tương tự như một bộ cân bằng tải phần cứng, nhưng theo một cách khác. Tất cả bạn cần làm là cấu hình nó .


1
ZEN-LB là một bộ cân bằng tải thực sự đơn giản và dễ dàng. Chúng tôi đã có rất nhiều thành công với nó và yêu thích nó vì nguồn mở của nó (miễn phí.)
Derrick

2

Từ http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_Vf/index.htm?hosts.5.html~main

Ví dụ về IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

Trong ví dụ này, hostA có 2 địa chỉ IP và 3 bí danh. Bí danh hostB chỉ định địa chỉ đầu tiên và bí danh hostC và host-C chỉ định địa chỉ thứ hai. LSF sử dụng tên máy chủ chính thức, hostA, để xác định rằng cả hai địa chỉ IP đều thuộc về cùng một máy chủ.


1
"Định dạng của LSF_CONFDIR / hosts tương tự như định dạng của tệp / etc / hosts trên các máy UNIX." Tức là: nguồn không phải là về các tập tin máy chủ thông thường.
gertvdijk

1

Đề xuất của tôi là sử dụng máy chủ DNS nội bộ với vòng tròn DNS và TTL = 0. Nếu bạn cập nhật bản ghi DNS (cũng với hệ thống kiểm tra ip tự động) khi IP / máy chủ không hoạt động, bạn có thể có một hệ thống có tính sẵn sàng cao.


Đây không phải là một giải pháp cho tính sẵn sàng cao. DNS không được thiết kế cho việc này và chỉ nên được sử dụng cùng với các phương thức không thành công khác. Rất nhiều bộ giải quyết cũng bỏ qua bộ đệm TTL, làm cho phương pháp này không đáng tin cậy.
Mark Henderson

1

Tôi đã thực hiện điều này trên mạng gia đình nơi tôi gán IP tĩnh cho cả giao diện mạng có dây và không dây của máy tính xách tay và từ tệp máy chủ của máy khác chỉ một tên máy chủ duy nhất cho cả hai địa chỉ IP đó. Nó dường như làm việc ổn.


1

Từ http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_Vf/index.htm?hosts.5.html~main

Ví dụ về IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

Trong ví dụ này, hostA có 2 địa chỉ IP và 3 bí danh. Bí danh hostB chỉ định địa chỉ đầu tiên và bí danh hostC và host-C chỉ định địa chỉ thứ hai. LSF sử dụng tên máy chủ chính thức, hostA, để xác định rằng cả hai địa chỉ IP đều thuộc về cùng một máy chủ.

Dựa trên ví dụ này tôi đã thực hiện 10.18.yx 192.168.zx hostA sau đây

Trong đó hostA là tên máy chủ của máy chủ mà tôi dự định truy cập từ cả mạng nội bộ (192.168.yx) và VPN (10.8.zx).

ping hostA
sending 'ping' on 192.168.y.x [10.8.z.x]
Answer from 10.8.z.x : bytes=32 time=98 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=78 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=111 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=136 ms TTL=64

Vì vậy, nó hoạt động tốt và tôi có thể khiến samba hoạt động thông qua VNP bằng tên máy chủ để tôi có thể có các ổ đĩa được kết nối trong các cửa sổ trong cả hai trường hợp (kết nối LAN hoặc VPN).

Trân trọng.


0

@ Plamen Dimitrov Bạn sẽ cần một thiết bị để xử lý loại cân bằng đó, có thể là một công tắc có thể xử lý BGP trước FW- hoặc sử dụng FW của bạn nếu có khả năng. Nếu Ciscos của bạn xử lý BGP, hãy xem xét việc thực hiện điều đó. Bằng cách này, bạn có thể đưa cả IP ISP của mình vào Cisco / hoặc chuyển đổi và các máy chủ mục tiêu sẽ có IP hợp lệ của IP công cộng 24 bit (KHÁC BIỆT TỪ 2 IP ISP). Tại thời điểm đó (bạn đang sử dụng 3 khối IP công cộng khác nhau, một khối cho máy chủ của bạn PHẢI 24 BIT), bạn cần phải có mỗi ISP của bạn biết về giải pháp này và họ phải sẵn sàng hỗ trợ Giải pháp BGP giữa họ, mà hầu hết sẽ làm. Bây giờ, khi FQDN của bạn phân giải, nó sẽ phân giải thành khối IP 24 bit của bạn, ngay cả khi 1 dòng ISP bị hỏng. Mục tiêu là địa chỉ 24 bit của bạn sẽ luôn khả dụng do các ISP của bạn đồng ý định tuyến địa chỉ 24 bit đó qua các dòng của họ. Điều này cũng hoạt động với VPN vì tất cả những gì bạn đang sử dụng cho VPN là các địa chỉ 24 bit, không phải là IP từ ISP mà bạn đã cắm vào cisco / hoặc chuyển đổi. Tại thời điểm đó, bạn phải cảnh giác với BGP FLAPPING trong đó nếu các dòng của bạn tăng và giảm nhiều, do một dòng nhận DOS, các địa chỉ DNS sẽ thay đổi rất nhiều, trên internet, các máy chủ DNS sẽ TỰ ĐỘNG XÓA IP R LENG LÃNH ĐẠO ĐẾN SỐ 24 BIT IP CỦA BẠN. Đó là một cuộc tấn công của DOS vào các giải pháp BGP. Tại thời điểm đó, bạn phải cảnh giác với BGP FLAPPING trong đó nếu các dòng của bạn tăng và giảm nhiều, do một dòng nhận DOS, các địa chỉ DNS sẽ thay đổi rất nhiều, trên internet, các máy chủ DNS sẽ TỰ ĐỘNG XÓA IP R LENG LÃNH ĐẠO ĐẾN SỐ 24 BIT CỦA IP. Đó là một cuộc tấn công của DOS vào các giải pháp BGP. Tại thời điểm đó, bạn phải cảnh giác với BGP FLAPPING trong đó nếu các dòng của bạn tăng và giảm nhiều, do một dòng nhận DOS, các địa chỉ DNS sẽ thay đổi rất nhiều, trên internet, các máy chủ DNS sẽ TỰ ĐỘNG XÓA IP R LENG LÃNH ĐẠO ĐẾN SỐ 24 BIT CỦA IP. Đó là một cuộc tấn công của DOS vào các giải pháp BGP.


0

Làm rõ một chút ở đây, ít nhất là trong thế giới Windows: Bạn CÓ THỂ có hai địa chỉ IP cho một tên trong một tệp lưu trữ. Khi truy vấn, tất cả các địa chỉ được trả lại. Ứng dụng (tức là trình duyệt) sẽ cố gắng kết nối lần lượt cho đến khi kết nối được thực hiện. IOW, nó sẽ thử tất cả các địa chỉ trước khi hết thời gian. (Đây là một sự hiểu lầm phổ biến vì nhiều người tin rằng nó sẽ chỉ thử địa chỉ "đầu tiên".)

Bạn có thể xác minh điều này bằng thí nghiệm sau:

Thêm hai hoặc nhiều địa chỉ cho một máy chủ lưu trữ trong tệp máy chủ, một địa chỉ thật và địa chỉ khác. (Làm cho các địa chỉ giả nhỏ hơn theo thứ tự bảng chữ cái.) Mở trình duyệt và thử kết nối với tên máy chủ. Chạy netstat -no cùng một lúc. Bạn sẽ thấy các nỗ lực kết nối đến địa chỉ giả mạo. (bị kẹt trong SYN_SENT) Trình duyệt cuối cùng sẽ đến địa chỉ tốt và sẽ kết nối. Có một sự chậm trễ trong việc kết nối, nhưng nó S work hoạt động.


Không nói bạn sai nhưng tôi chỉ thử nó trên Win 10 Pro của tôi bằng Chrome và nó không hoạt động. Tôi đã điều chỉnh tệp máy chủ của mình (và lưu nó), sau đó chạy ipconfig /flushdnsđể đảm bảo các độ phân giải trước đó bị lãng quên. Đã thử mở trang web (cục bộ vào máy của tôi) trong cửa sổ ẩn danh trong Chrome để loại trừ kết quả bộ đệm. Nó chỉ thất bại (và tôi đã đợi vài phút để xem liệu cuối cùng nó có hoạt động không). Nhấn refresh chỉ để chắc chắn. Sau đó, tôi nhận xét IP không có thật từ tập tin máy chủ của tôi. Không làm gì khác, tôi làm mới trang và nó hoạt động. Điều tương tự với Firefox.
Andrew Steitz

Vì vậy, nó CÓ THỂ hoạt động dựa trên ứng dụng nhưng nó chắc chắn KHÔNG hoạt động trong hai trình duyệt hiện đại.
Andrew Steitz

-1

Bạn không thể làm điều này với tập tin máy chủ.

Bạn cũng không thể làm điều này với DNS: bạn có thể cung cấp nhiều IP cho một tên, nhưng trình duyệt sẽ chỉ chọn một trong số nhiều IP đó, hãy thử và nếu máy chủ này hiện không hoạt động, trình duyệt sẽ hiển thị lỗi kết nối .

Một giải pháp khả thi là thiết lập một máy chủ proxy và định cấu hình hai IP này làm cha mẹ cho miền mà chúng phục vụ. Ít nhất là trong trường hợp của Squid, proxy sẽ thử một máy chủ và nếu thất bại, hãy thử máy chủ thứ hai. Sau đó cấu hình trình duyệt của bạn để sử dụng máy chủ proxy này.


Không đúng về robin tròn: www-archive.mozilla.org/docs/netlib/dns.html Lưu ý rằng lượt thích của google trả về nhiều bản ghi DNS. Mặc dù sắp xếp lại RFC3484, rõ ràng nó giúp trả lại nhiều IP như một chiến lược chuyển đổi dự phòng.
BrianEss

vâng, bạn có thể làm điều đó với tệp máy chủ
warren
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.