TLDR;Tóm tắt
Một nhóm máy ảo, mỗi máy ảo có địa chỉ IPv4 công cộng riêng, có thể được tổ chức sao cho giống như đang ở trên một mạng con riêng không và nếu vậy, làm cách nào tôi có thể kết nối các máy chủ đó với phần còn lại của mạng?
Cấu hình hiện tại
10.0.0.0/24 AWS Oregon - công khai
10.1.0.0/24 AWS Oregon - riêng tư
10.52.5.0/24 Trang chủ, San Diego
10.62.5.0/24 Trang chủ, Las Vegas
Mạng công cộng AWS có máy chủ OpenVPN. Cả San Diego và Las Vegas đều có máy khách OpenVPN riêng kết nối với máy chủ AWS đó.
Thông qua việc sử dụng thiết lập VPN điểm-điểm này, bất kỳ máy ảo nào trên mạng của tôi đều có thể nói chuyện với bất kỳ máy ảo nào khác mà không có sự can thiệp của NAT. Tất cả mọi thứ hoạt động hoàn hảo.
Vấn đề
Tôi đã được yêu cầu chứng minh rằng ứng dụng web do tôi thiết kế, hiện đang chạy tại AWS Oregon, có thể chạy thành công bên ngoài hệ sinh thái AWS.
"Không thành vấn đề," tôi nói. Vì vậy, tôi thuê năm máy chủ từ một nhà cung cấp Thụy Sĩ và chuẩn bị kết nối những máy chủ đó với mạng của mình.
Tôi đoán giả định của mình là SwissVendor sẽ cung cấp năm máy chủ cho tôi và đặt chúng trên mạng nội bộ do tôi chọn (ví dụ: 10.72.5.0/24, gw:.1) và có thể cung cấp cho tôi một IP công khai (tức là "co giãn?") để khoan theo cách của tôi từ bên ngoài. Sau đó, tôi sẽ chọn một trong năm máy chủ làm ứng dụng khách OpenVPN của mình, trỏ nó tới máy chủ AWS Oregon OpenVPN của tôi và bùm, các máy chủ Thụy Sĩ hiện có thể truy cập được từ mọi nơi trên mạng của tôi.
Tuy nhiên, thật không may cho tôi, đó không phải là cách mọi thứ hoạt động tại SwissVendor. Thay vào đó, mỗi máy chủ trong số năm máy chủ đều có địa chỉ IP công khai của riêng mình và hơn nữa, không có gì đảm bảo rằng các địa chỉ IP này thậm chí nằm trên cùng một mạng con. Vì vậy, tôi đã kết thúc với một cái gì đó như:
Máy chủ 1: 11.11.11.11/24
Máy chủ 2: 22.22.22.22/24
Máy chủ 3: 33.33.33.33/24
Máy chủ 4: 44,44,44,44/24
Máy chủ 5: 55,55,55,55/24
Cổng RDP 3389 được mở trên toàn thế giới trên mỗi máy chủ, cho phép khách hàng truy cập thông qua mật khẩu quản trị được chia sẻ trước. Tất cả các kết nối gửi đến khác đều bị chặn bởi tường lửa của máy chủ được bật theo mặc định. Đó đơn giản là cách SwissVendor cung cấp máy chủ của mình cho những khách hàng như tôi. Tôi không thể thay đổi điều này.
Mục tiêu của tôi
Đây là lúc mọi thứ trở nên khó diễn tả vì tôi là người có sở thích chứ không phải dân chuyên nghiệp. Trong thế giới lý tưởng của tôi:
- Mỗi máy chủ Thụy Sĩ, ngoài việc có địa chỉ công khai thực của riêng mình, còn có một số loại NIC tổng hợp/ảo trên mạng nội bộ 10.72.5.0/24.
- Các máy chủ sẽ có thể giao tiếp với nhau ở tốc độ cao với độ trễ gần như bằng không. [Bạn có thể cho rằng mỗi máy chủ Thụy Sĩ sống trong cùng một tủ vật lý và thực sự có thể thực sự sống trên cùng một phần cứng vật lý!]
- Một trong các máy chủ sẽ hoạt động như một ứng dụng khách OpenVPN, được kết nối với máy chủ AWS OpenVPN của tôi, máy chủ này sẽ kéo 10.72.5.0/24 vào mạng của tôi một cách hiệu quả, giúp mỗi máy chủ này có thể truy cập được vào phần còn lại của mạng của tôi chứ không phải Internet, và không có sự can thiệp của NAT.
Tôi hoàn toàn không thể tìm ra cách thực hiện điều này, hoặc thậm chí liệu nó có khả thi hay không. Đây là hai cách tiếp cận tôi đã xem xét nhưng cuối cùng đã loại trừ:
Ý tưởng thất bại #1: Mỗi Máy chủ đóng vai trò là máy khách OpenVPN
Tôi có thể từ bỏ ý tưởng có một máy khách OpenVPN chuyên dụng trên mạng Thụy Sĩ. Thay vào đó, mỗi máy chủ Thụy Sĩ sẽ chạy ứng dụng khách OpenVPN của riêng mình, cung cấp cho mỗi máy chủ địa chỉ IP bổ sung của riêng nó. Vì vậy, ngoài địa chỉ IP công cộng, mỗi máy chủ cũng sẽ có một IP ảo, có thể là 10.8.0.0/24.
Điều này sẽ hoạt động trong chừng mực các máy chủ Thụy Sĩ có thể giao tiếp với nhau cũng như phần còn lại trong mạng của tôi.
Vấn đề là để một gói đi từ SwissServer1 đến SwissServer2, nó sẽ phải di chuyển đến Oregon và ngược lại -- hoàn toàn không hiệu quả do cả SwissServer1 và SwissServer2 đều hoạt động trên cùng một máy vật lý. Nhớ lại rằng tôi cần liên lạc nhanh với độ trễ thấp giữa các máy chủ Thụy Sĩ.
Ý tưởng thất bại #2: Máy chủ Thụy Sĩ giao tiếp bằng địa chỉ công cộng của họ
Tôi chỉ có thể cho phép các máy chủ Thụy Sĩ giao tiếp với nhau bằng địa chỉ IP công cộng tương ứng của chúng. Điều này chắc chắn sẽ giải quyết vấn đề độ trễ.
Vấn đề chính mà tôi thấy trước với cách tiếp cận này là vì IP của mỗi máy chủ Thụy Sĩ là công khai và do đó được tiếp xúc với Internet, tôi phải THỰC SỰ cẩn thận trong việc định cấu hình quy tắc tường lửa của từng máy chủ. Ví dụ: nếu SwissServer1 muốn sử dụng tính năng chia sẻ tệp với SwissServer2, thì tôi phải biết chính xác cổng nào được sử dụng để hỗ trợ điều đó và chỉ mở những cổng đó và chỉ với SwissServer1. Nếu tôi mắc một lỗi nhỏ, tôi có thể sẽ để lộ dịch vụ chia sẻ tệp đó ra Internet công cộng.
Ngoài ra còn có vấn đề về cách kết nối các máy này với phần còn lại của mạng của tôi một cách rõ ràng. Vì vậy, tôi cũng thấy cách tiếp cận này là không bắt đầu.
Từ đâu đến đây?
Tôi đã nghiên cứu nó và không thể tìm ra cách tiếp cận chính xác. Tôi nghĩ thứ tôi có thể đang tìm kiếm là thứ gọi là "cầu nối" và tôi nghĩ OpenVPN có thể hỗ trợ điều này nhưng tôi không chắc. Theo tôi hiểu từ nghiên cứu sâu rộng của mình trên Wikipedia và Reddit, việc sử dụng công nghệ cầu nối có thể cho phép năm máy chủ Thụy Sĩ hoạt động như thể chúng nằm trên một mạng duy nhất, chẳng hạn như 10.52.7.0/24, do đó tạo điều kiện liên lạc nhanh chóng giữa các đồng nghiệp này . Nhưng sau đó thì? Làm cách nào để tôi có thể truy cập 10.52.7.0/24 vào/từ phần còn lại của mạng hiện tại của mình?
Tất cả các máy chủ đang chạy Windows 2019 Server hoặc Windows 2022 Server.
Bất kỳ và tất cả lời khuyên đánh giá cao!