Kết nối với máy chủ từ xa thông qua VPN khi địa chỉ mạng con cục bộ xung đột với mạng từ xa


35

Đây là Câu hỏi Canonical về việc giải quyết xung đột mạng con IPv4 giữa mạng cục bộ của máy khách VPN và mạng liên kết qua VPN.

Sau khi kết nối với một vị trí từ xa thông qua OpenVPN, khách hàng cố gắng truy cập máy chủ trên mạng tồn tại trên mạng con như 192.0.2.0/24. Tuy nhiên, đôi khi, mạng trên mạng LAN của máy khách có cùng địa chỉ mạng con: 192.0.2.0/24. Khách hàng không thể kết nối với máy chủ từ xa bằng cách nhập IP của nó do xung đột này. Họ thậm chí không thể truy cập internet công cộng trong khi kết nối với VPN.

Vấn đề là mạng con 192.0.2.0/24 này cần được định tuyến bằng VPN, nhưng nó cũng cần được định tuyến như mạng LAN của máy khách.

Có ai biết làm thế nào để giảm thiểu vấn đề này? Tôi có quyền truy cập vào máy chủ OpenVPN.


3
Bạn có thể thử đặt tuyến tĩnh cho địa chỉ / 32 của máy chủ lưu trữ mà bạn đang cố truy cập và sử dụng VPN ngang hàng làm cổng của bạn và xem điều gì sẽ xảy ra.
SpacemanSpiff

nếu bộ tập trung vpn tôn vinh các tuyến của khách hàng, thì bảo mật vành đai của bạn có thể cần một số trợ giúp. Tôi có quyền truy cập vào kế toán lan, thêm tuyến đến phạm vi kỹ thuật và sau đó tôi có thể kết nối không có vấn đề gì. tường lửa crappy như
sonicwall

@SpacemanSpiff: Mặc dù điều này có thể giải quyết vấn đề ở phía máy khách, máy chủ vẫn không thể trả lời, vì nó sẽ thấy kết nối đến từ mạng riêng của mình chứ không phải từ máy khách VPN.
Massimo

Câu trả lời:


18

Có thể giải quyết điều này bằng cách sử dụng NAT; nó không phải là rất thanh lịch.

Vì vậy, theo giả định, bạn không thể giải quyết điều này bằng cách có các mạng nội bộ có số mạng không phổ biến đến mức không bao giờ thực sự xảy ra xung đột, đây là nguyên tắc:

Vì cả mạng con cục bộ và mạng con từ xa đều có số mạng giống hệt nhau, lưu lượng truy cập từ máy khách của bạn sẽ không bao giờ nhận ra nó phải đi qua cổng đường hầm để đến đích. Và ngay cả khi chúng ta tưởng tượng nó có thể, tình huống sẽ giống như vậy đối với máy chủ từ xa vì nó sắp gửi câu trả lời.

Vì vậy, hãy ở lại với tôi và giả vờ rằng, cho đến nay, không có vấn đề phụ nào khi tôi viết rằng để kết nối đầy đủ, bạn sẽ cần NAT cả hai đầu bên trong đường hầm để phân biệt máy chủ và cho phép định tuyến.

Làm một số lưới ở đây:

  • Mạng văn phòng của bạn sử dụng 192.0.2.0/24
  • Văn phòng từ xa của bạn sử dụng 192.0.2.0/24
  • Cổng mạng VPN văn phòng của bạn ẩn các máy chủ 192.0.2.0/24 đằng sau số mạng NATed 198.51.100.0/24
  • Mạng VPN văn phòng từ xa của bạn ẩn các máy chủ 192.0.2.0/24 đằng sau số mạng NATed 203.0.113.0/24

Vì vậy, bên trong đường hầm VPN, các máy chủ văn phòng hiện có 198.51.100.x và máy chủ văn phòng từ xa là 203.0.113.x. Ngoài ra, hãy giả vờ tất cả các máy chủ được ánh xạ 1: 1 trong NAT của các cổng VPN tương ứng của chúng. Một ví dụ:

  • Máy chủ mạng văn phòng của bạn 192.0.2.5/24 được ánh xạ tĩnh là 198.51.100.5/24 trong cổng vpn văn phòng NAT
  • Máy chủ mạng văn phòng từ xa 192.0.2.5/24 của bạn được ánh xạ tĩnh thành 203.0.113.5/24 trong cổng vpn văn phòng từ xa NAT

Vì vậy, khi máy chủ 192.0.2.5/24 trong văn phòng từ xa muốn kết nối với máy chủ có cùng ip trong mạng văn phòng, nó cần phải sử dụng địa chỉ 198.51.100.5/24 làm đích. Sau đây xảy ra:

  • Tại văn phòng từ xa, máy chủ 198.51.100.5 là một điểm đến từ xa thông qua VPN và được chuyển đến đó.
  • Tại văn phòng từ xa, máy chủ 192.0.2.5 được giả mạo là 203.0.113.5 khi gói vượt qua chức năng NAT.
  • Tại văn phòng, máy chủ 198.51.100.5 được dịch thành 192.0.2.5 khi gói vượt qua chức năng NAT.
  • Tại văn phòng, trả lại lưu lượng truy cập cho máy chủ lưu trữ 203.0.113.5 trải qua quá trình tương tự theo hướng ngược lại.

Vì vậy, trong khi có một giải pháp, có một số vấn đề phải được giải quyết để làm việc này trong thực tế:

  • IP giả mạo phải được sử dụng để kết nối từ xa; DNS trở nên phức tạp. Điều này là do các điểm cuối phải có một địa chỉ IP duy nhất, khi được xem từ máy chủ kết nối.
  • Một chức năng NAT phải được thực hiện cả hai đầu như một phần của giải pháp VPN.
  • Máy chủ ánh xạ tĩnh là phải cho khả năng tiếp cận từ đầu kia.
  • Nếu lưu lượng là một chiều, chỉ có đầu nhận mới cần ánh xạ tĩnh của tất cả các máy chủ liên quan; khách hàng có thể thoát khỏi trạng thái NAT động nếu muốn.
  • Nếu lưu lượng truy cập hai chiều, cả hai đầu cần ánh xạ tĩnh của tất cả các máy chủ liên quan.
  • Kết nối Internet không được suy yếu bất kể VPN phân tách hay không phân chia.
  • Nếu bạn không thể ánh xạ 1-1 thì nó sẽ bị lộn xộn; kế toán cẩn thận là một điều cần thiết.
  • Đương nhiên, người ta có nguy cơ sử dụng các địa chỉ NAT cũng bị trùng lặp :-)

Vì vậy, giải quyết điều này cần thiết kế cẩn thận. Nếu văn phòng từ xa của bạn thực sự bao gồm các chiến binh đường phố, bạn sẽ thêm một lớp vấn đề trong đó:

  • họ không bao giờ biết trước khi họ kết thúc trên các id mạng chồng chéo.
  • cổng văn phòng từ xa NAT sẽ cần được triển khai trên máy tính xách tay của họ.
  • cổng văn phòng sẽ cần hai VPN, một NAT-free và NATed, để bao quát cả hai kịch bản. Mặt khác, trong trường hợp ai đó chọn một trong các mạng con bạn chọn cho phương thức NAT, mọi thứ sẽ không hoạt động .

Tùy thuộc vào máy khách VPN của bạn, bạn có thể tự động chọn một VPN hoặc cái kia tùy thuộc vào địa chỉ mạng của phân khúc cục bộ.

Quan sát rằng tất cả các đề cập đến NAT trong bối cảnh này biểu thị một chức năng NAT có thể diễn ra trong viễn cảnh đường hầm. Theo quy trình, ánh xạ NAT tĩnh phải được thực hiện trước khi gói "đi vào" đường hầm, tức là trước khi nó được gói gọn trong gói vận chuyển để đưa nó qua internet đến cổng VPN khác.

Điều này có nghĩa là người ta không được nhầm lẫn các địa chỉ IP công cộng của các cổng VPN (và trong thực tế cũng có thể là NAT: ed, nhưng sau đó hoàn toàn nằm ngoài quan điểm vận chuyển đến trang web từ xa thông qua VPN) với các địa chỉ riêng tư được sử dụng làm giả mạo cho các địa chỉ riêng trùng lặp. Nếu sự trừu tượng này khó hình dung, một minh họa về cách NAT có thể được tách biệt về mặt vật lý khỏi cổng VPN cho mục đích này được thực hiện ở đây:
Sử dụng NAT trong Mạng chồng chéo .

Thu gọn hình ảnh tương tự vào một phân tách hợp lý bên trong một máy, có khả năng thực hiện cả chức năng cổng NAT và VPN, chỉ đơn giản là lấy ví dụ tương tự một bước nữa, nhưng lại chú trọng nhiều hơn vào khả năng của phần mềm. Việc hack nó cùng với ví dụ OpenVPN và iptables và đăng giải pháp ở đây sẽ là một thách thức xứng đáng.

Softwarewise chắc chắn là có thể:
PIX / ASA 7.x trở lên: VPN IPsec LAN với mạng chồng chéo Ví dụ về cấu hình mạng chồng chéo
và: Định
cấu hình đường hầm IPSec giữa các bộ định tuyến với mạng con trùng lặp LAN

Do đó, việc triển khai thực tế phụ thuộc vào rất nhiều yếu tố, các hệ điều hành liên quan, phần mềm liên quan và khả năng của nó không phải là ít nhất. Nhưng nó chắc chắn là có thể làm được. Bạn sẽ cần phải suy nghĩ và thử nghiệm một chút.

Tôi đã học được điều này từ Cisco khi nhìn thấy bởi các liên kết.


NAT có thể làm việc với nhiều kết nối VPN và bản dịch của họ không? Tôi không hoàn toàn hiểu trường hợp ở đây. Tôi có một chủ đề ở đây unix.stackexchange.com/q/284696/16920 về Cách thực hiện VPN Site-To-Site với các mạng con chồng chéo Unix-Way?
Léo Léopold Hertz

17

Nếu bạn cần một cách giải quyết bẩn tạm thời cho một ips máy chủ được biết đến một hoặc một số ít, giải pháp đơn giản nhất là tùy chọn định tuyến phía máy khách tĩnh.

Trong trường hợp của tôi, tôi đã thêm máy chủ đích mong muốn (192.168.1.100) vào bảng định tuyến trên máy khách linux của mình thông qua:

route add 192.168.1.100 dev tun0

Sau đó, loại bỏ tuyến tĩnh này bằng lệnh xóa tuyến.


2
Đây là một giải pháp hoàn hảo, và một thời gian thậm chí hoàn hảo! :)
Yuval A

Điều này kéo dài bao lâu? Cho đến khi bạn ngắt kết nối? Cho đến khi khởi động lại?
carbocation

1
Trên hệ thống linux của tôi (xfce với ubfox / mint), các cài đặt bị "mất" sau khi ngắt kết nối vpn và vâng, sau khi khởi động lại cũng vậy. Bạn có thể xác minh xem cài đặt có hoạt động với lệnh tuyến đường không (sẽ có một mục có ip và thiết bị tun0 thường ở phía dưới)
Aydin K.

Phiên bản OSX của tuyến đường có giao diện khác nhau thay vì dev tun0bạn cần-interface tun0
Sirens

5

yup đây là điều tồi tệ nhất Đối với tôi, điều đó xảy ra mọi lúc từ phòng khách sạn, trước khi quản trị viên vpn nhận ra rằng họ nên sử dụng phạm vi ip tối nghĩa hơn. 10.0.0.0/24 và 10.1.1.1/24 là tồi tệ nhất. nếu bạn có thể giúp nó không bao giờ ip một mạng không dây như thế.

Vì vậy, câu trả lời là "sửa" wap để sử dụng một mạng nội bộ khác (ví dụ 10.255.255.0/24) và sau đó cung cấp cho bạn một hợp đồng thuê khác (tức là ip trong một phạm vi có thể định tuyến trở lại corp vpn) hoặc nếu bạn không có / không thể có được quản trị viên trên wap, chỉ cần truy cập starbucks. hoặc 20 phút di chuyển :)

nếu đây chỉ là trong một thiết lập phòng thí nghiệm, chỉ cần sử dụng các phạm vi khác nhau.


Dang thực sự? Không có lựa chọn nào tốt hơn?
John Russell

1
không phải là tôi biết .... đây luôn là một vấn đề ... có vẻ như ai đó đã bỏ phiếu cho câu trả lời của tôi, nhưng thực sự không đề xuất một giải pháp .... ha giết sứ giả!
nandoP

3

Tôi đang dùng mac chạy El Capitan. Trong khi những gợi ý ở trên không hiệu quả với tôi, họ đã đưa tôi đến một giải pháp hiệu quả:

  1. trước khi bắt đầu VPN, hãy thực thi ifconfig
  2. khởi động VPN, làm ifconfigvà lưu ý đó là giao diện mới. Trong trường hợp của tôi, nó là ppp0 với địa chỉ IP là 192.168.42.74

    ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
        inet 192.168.42.74 --> 192.0.2.1 netmask 0xffffff00
    
  3. gõ vào:

    sudo route add 192.168.1.79  192.168.42.74
    

Tôi đã thử nghiệm đầu tiên với một pingvà sau đó tôi đã chứng minh rằng nó hoạt động bằng cách truy cập máy chủ git.

Khi tôi thử sử dụng dev ppp0 cho phần cuối của lệnh tuyến đường như đã đề cập ở trên, nó đã phàn nàn.


2
Điều gì 192.168.1.79đến từ cuộc trao đổi này?
carbocation

Máy chủ đích mà bạn đang kết nối. Máy chủ này nằm trong cùng một mạng với VPN của bạn chứ không phải kết nối cục bộ của bạn.
Carlo del Mundo

1

Tôi có một giải pháp đơn giản mà tôi đang sử dụng tại một không gian làm việc chung có dải IP xung đột (10.x)

Tôi kết nối mạng với điện thoại di động, sau đó tôi chia sẻ kết nối mạng qua bluetooth với máy tính xách tay của mình. Bây giờ tôi có thể sử dụng VPN cho chủ nhân từ xa của mình.

Tôi chắc chắn rằng điều này sẽ hoạt động tương tự thông qua USB nếu bạn cần kết nối nhanh hơn.


1
Này, đó thực sự là một giải pháp khá thông minh.
Nathan Osman

1

Nếu bạn chỉ cần nhấn một hoặc hai địa chỉ IP, hãy thêm câu lệnh định tuyến vào tệp cấu hình ovpn của bạn như thế này:

tuyến 192.168.1.10 255.255.255.255

tuyến 192.168.1.11 255.255.255.255

Nó sẽ thêm một tuyến đường cho chỉ những Ip đó khi bạn kết nối vpn của mình và xóa nó khi vpn bị ngắt kết nối.

Làm việc cho tôi trên Windows nào.


1

Câu trả lời từ Aydin K. là dành cho linux. Nếu bạn muốn cùng chức năng cho windows, bạn có thể gõ

route ADD 192.168.1.10 <IP of tunnel adapter>

hoặc là

route ADD 192.168.1.10 IF <interface id>

bạn có thể lấy id giao diện bằng lệnh:

route print

0

Cũng như một lời nhắc nhở: toàn bộ vấn đề này là do nhiều năm thiếu địa chỉ IPv4 và việc sử dụng rộng rãi dải IP riêng phía sau NAT để khắc phục sự thiếu hụt này!

Giải pháp lý tưởng và dứt khoát cho vấn đề này khá đơn giản (mặc dù có thể, và sẽ mất một thời gian để được triển khai trên toàn cầu): IPv6 ...

Trong một thế giới IPv6, không có sự thiếu hụt IP công cộng (và sẽ không có sự kiện nào trong một vài thập kỷ). Vì vậy, không có lý do gì để không có IP công khai trên mỗi thiết bị của mọi mạng. Và nếu bạn cần cách ly mạng, hãy tiếp tục lọc bằng tường lửa, nhưng không có NAT xấu xí ...

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.