Đường hầm IP công cộng đến một máy từ xa


8

Tôi có máy chủ Linux A với một khối 5 địa chỉ IP công cộng , 8.8.8.122/29. Hiện tại, 8.8.8.122được gán cho eth0, và 8.8.8.123được gán cho eth0:1.

Tôi có một máy Linux B khác ở một địa điểm xa, phía sau NAT. Tôi muốn thiết lập một đường hầm giữa hai để B có thể sử dụng địa chỉ IP 8.8.8.123làm địa chỉ IP chính của nó.

OpenVPN có lẽ là câu trả lời, nhưng tôi hoàn toàn không thể tìm ra cách thiết lập mọi thứ ( topology subnethoặc topology p2pcó thể phù hợp. Hoặc tôi có nên sử dụng cầu nối Ethernet không?). Bảo mật và mã hóa không phải là mối quan tâm lớn vào thời điểm này, vì vậy GRE cũng sẽ ổn - máy B sẽ đến từ một địa chỉ IP đã biết và có thể được xác thực dựa trên điều đó.

Tôi có thể làm cái này như thế nào? Bất cứ ai cũng có thể đề xuất một cấu hình OpenVPN, hoặc một số phương pháp khác, có thể hoạt động trong tình huống này? Lý tưởng nhất là nó cũng có thể xử lý nhiều máy khách (ví dụ: chia sẻ cả bốn IP dự phòng với các máy khác) mà không để các máy khách đó sử dụng IP mà chúng không được hưởng.


Tường lửa nào ở cả hai vị trí?
Robert

1
Tôi hy vọng bạn chỉ tạo ra những địa chỉ đó, thay vì bạn thực sự làm việc tại Google. Nếu bạn không, bạn sẽ không thể sử dụng không gian địa chỉ của họ.
Michael Hampton

Robert: A là một máy chủ Linux với một số iptablesquy tắc đơn giản . B đứng sau NAT là một máy chủ Linux khác đang chạy shorewall.
Jim Paris

Michael: Vâng, tôi đã thay đổi ba octet đầu tiên thành 8 để làm xáo trộn chúng, nhưng vẫn cho biết chúng là công khai. Xin lỗi, Google.
Jim Paris

1
Để tham khảo trong tương lai, chúng tôi có RFC cho điều đó .
Michael Hampton

Câu trả lời:


7

Tôi đã kết thúc với cầu nối Ethernet. Rất nhiều ví dụ cực kỳ dài để lội qua trực tuyến, nhưng hóa ra nó khá dễ:

Đầu tiên, trên A , /etc/network/interfacesđã được thay đổi từ:

auto eth0
iface eth0 inet static
    address 8.8.8.122
    netmask 255.255.255.248
    gateway 8.8.8.121

đến:

auto br0
iface br0 inet static
    address 8.8.8.122
    netmask 255.255.255.248
    gateway 8.8.8.121
    pre-up openvpn --mktun --dev tap0
    bridge_ports eth0 tap0
    bridge_fd 3

để kết nối eth0(giao diện WAN thực) với tap0(giao diện đường hầm mới) khi khởi động.

Sau đó, trên A , chạy máy chủ openvpn với:

openvpn --dev tap0

Trên B , kết nối với nó bằng:

openvpn --remote 8.8.8.122 --dev tap0 --route-gateway 8.8.8.121 \
        --redirect-gateway def1 --ifconfig 8.8.8.123 255.255.255.248

Đó là cấu hình siêu đơn giản mà tôi đang tìm kiếm và nó hoạt động - B hiện có thể truy cập công khai vào ngày 8.8.8.123 và các kết nối gửi đi bắt nguồn từ cùng một địa chỉ.

Thêm bảo mật ( --secret, --tls-serverv.v.) khi cần, tất nhiên.


Đẹp! Tôi sẽ thử nó. Bạn có tìm thấy cách định cấu hình đó không: "không cho phép những khách hàng đó sử dụng IP mà họ không có quyền"?
Bastian

Tôi không bận tâm trong thiết lập của mình (tạm thời), nhưng tôi tưởng tượng bạn có thể làm điều đó với ebtables.
Jim Paris

Rất hữu ích. Một câu hỏi: những gì tôi cần thay đổi trong cấu hình A nếu tôi cần định tuyến hai IP từ A: A => B và A => C (trong đó C là một máy chủ khác)? Tôi có cần cấu hình một cây cầu khác không?
frhack

2
Vâng. Thêm một pre-up openvpndòng khác để tạo tap1quá, thêm tap1vào bridge_portsvà chạy một phiên bản khác của openvpn với openvpn --dev tap1.
Jim Paris

Sẽ thế nào nếu bạn muốn biến cổng A thành cục bộ qua B để bất kỳ hệ thống nào trên mạng LAN có thể sử dụng B và gán cổng mặc định từ xa và sử dụng IP công cộng?
Areeb Soo Yasir

1

Bạn sẽ có một thời gian khó khăn tôi nghĩ. Hầu hết các tường lửa sẽ gặp khó khăn khi định tuyến lưu lượng OpenVPN nếu cả hai mặt của VPN nằm trong cùng một mạng con.

Nếu bạn đang cố định tuyến để truy cập công khai, tôi sẽ di chuyển cả hai máy chủ đến các mạng con khác từ các địa chỉ công cộng của bạn và sau đó sử dụng IP ảo (1 đến 1 Nat) để kết nối chúng. Để kết nối hai trang web, OpenVPN sẽ hoạt động hoặc một đường hầm IP-Sec.

IP ảo: http://doc.pfsense.org/index.php/What_are_Virtual_IP_Addresses%3F

Trang web đến trang web: http://doc.pfsense.org/index.php/VPN_Capability_IPsec

Chỉnh sửa dựa trên ý kiến:

Cá nhân tôi đã cài đặt pfSense trên hộp A và cung cấp cho nó cổng bạn muốn cho mạng WAN của nó. Sau đó, thiết lập máy chủ OpenVPN trên mạng con cục bộ (tất cả đã sẵn sàng để đi vào giao diện web pfSense) và thiết lập máy khác với IP ảo được trỏ đến ip OpenVPN cục bộ của nó. Điều này sẽ cung cấp cho bạn cơ hội mở rộng sau này (thêm nhiều máy có IP ảo, chuyển tiếp cổng cụ thể tới các máy chủ khác nhau, thực sự có thiết lập LAN / WAN / DMZ đầy đủ với OpenVPN để truy cập ảo. Không đề cập đến việc bạn có bộ định tuyến đầy đủ để có thể an toàn hơn.


Tôi không hiểu tường lửa trung gian có liên quan như thế nào; họ chắc chắn sẽ không được nhìn vào bên trong gói OpenVPN giữa AB . Đối với cấu hình OpenVPN, tôi đã hy vọng rằng một cái gì đó giống như push "route 50.7.19.122 255.255.255.255 net_gateway"sẽ đảm bảo rằng dữ liệu VPN vẫn được đẩy qua mạng bình thường.
Jim Paris

Để rõ ràng, tôi muốn tạo đường hầm trực tiếp giữa AB , không phải trên tường lửa riêng biệt ở mỗi đầu.
Jim Paris

1
Nhưng khi máy tính A muốn định tuyến đến máy tính B thì sẽ không biết có nên sử dụng mạng LAN (với IP công cộng của bạn), mạng LAN (với IP tĩnh của nó) hay OpenVPN (cũng với IP công cộng của bạn) bởi vì tất cả chúng đều là cùng mạng con. B đến A nên làm việc mặc dù.
Robert

1
Ngoài ra còn có điều này, tôi đã có nó hoạt động nhưng không phải với các IP công cộng. Tôi nghĩ rằng ip ảo sẽ tốt hơn nhiều. openvpn.net/index.php/open-source/documentation/misiverse/iêu
Robert

"Để rõ ràng, tôi muốn tạo đường hầm trực tiếp giữa A và B, không phải trên tường lửa riêng biệt ở mỗi đầu." Bạn sẽ cần mở một cổng ở đâu đó cho máy chủ OpenVPN
Robert
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.