Клиент OpenVPN как шлюз для других клиентов

Клиент OpenVPN как шлюз для других клиентов

У меня есть сеть OpenVPN с одним сервером и двумя клиентами. Когда я настраиваю свой маршрут по умолчанию на C1, чтобы он проходил через S (где включены IP-пересылка и NAT), все работает так, как и ожидалось. Проблема в том, что если я указываю маршрут по умолчанию C1 на C2 (который также правильно настроен на трафик NAT из VPN в Интернет), трафик в любом случае перехватывается S и пересылается им. Когда я запускаю tcpdump на C2, нет никаких признаков того, что туда что-то поступает. Возможно ли настроить клиента в качестве шлюза для других клиентов в OpenVPN или это свойство системы, что пакеты маршрутизируются событием сервера, если маршрут на клиенте указывает на другого клиента?

Редактировать:

Квадратные скобки представляют мою виртуальную сеть (физически она не существует). C1/C2/S могут пинговать друг друга внутри сети без проблем. Я хочу направить трафик из C1 через C2 в Интернет. Я могу направить из C1 (и, вероятно, из C2) через S в Интернет, но маршрутизация через C2 не работает, так как пакеты вместо этого перенаправляет S. Похоже, проблема в том, что сервер OpenVPN не хочет отправлять пакеты туда, куда им следует идти.

                [C1-S(NAT)] -- Интернет
Интернет -- [(NAT)C2/ ]

решение1

Ответить на этот вопрос полностью сложно, не зная топологию сети, которую вы пытаетесь описать. Хотя я думаю, что могу сказать, что в целом возможно сделать то, о чем вы спрашиваете.

Рассмотрим следующий сценарий:

C1 -- R1 --(NAT)-- Интернет --(NAT)-- R2 -- C2

Здесь, если между R1 и R2 создан (правильно настроенный) туннель OpenVPN, то C1 может взаимодействовать с C2 и наоборот.

Этот сценарий сложнее исправить:

C2 -- R1 --(NAT)-- Интернет --(NAT)-- R2 -- C3
С1 / \ С4

Где C2 и C3 являются конечными точками OpenVPN, а C1 должен использовать VPN, чтобы добраться до C4. Первое препятствие — установить туннель OpenVPN между C2 и C3, вероятно, используя переадресацию портов с R1 и R2 UDP 1190 на C2 и C3 соответственно.

Следующим шагом будет заставить C1 использовать C2 в качестве способа передачи пакетов в C4. Это включает в себя настройку таблицы маршрутизации на C1 и C4. C1 устанавливает маршрут к сети C4, проходящей через C2, а C4 устанавливает маршрут к сети C1, проходящей через C3. Оба этих маршрута должны иметь приоритет над маршрутом по умолчанию. Так, возможно, на C1: {route add 192.168.3.0 gw 192.168.2.2} и на C4: {route add 192.168.1.0 gw 192.168.3.2}. Это предполагает, что адреса C2 и C3 — 192.168.2.2 и 192.168.3.2 соответственно, и что C1 и C4 находятся в той же сети, что и C2 и C3 соответственно.

Надеюсь, этого достаточно, чтобы ответить на ваш вопрос и продемонстрировать, что гораздо проще настроить VPN на шлюзе по умолчанию, чем на клиенте, но существуют варианты использования обоих вариантов.

Редактировать: С этой топологией и описанием проблемы я считаю, что есть проблемы с маршрутизацией на C1 и C2... Маршрут по умолчанию C1 должен указывать на адрес VPN C2 как маршрутизатора. Это заставит C1 использовать VPN для передачи пакетов на C2, затем C2 решит, что с ними делать.

В случае, если C2 использует собственное подключение к Интернету, как вы показали, маршрут C2 по умолчанию должен вести к его собственному подключению к Интернету.

Если же у C2 на самом деле нет собственного пути к Интернету, а он проходит через S, то S должен быть маршрутизатором по умолчанию для C2.

решение2

Я сталкивался с этой проблемой раньше, у меня работал vpn-клиент, который не давал мне подключиться к другому устройству в моей домашней сети. Мне пришлось настроить статический маршрут ко второй машине, так как vpn-клиент автоматически добавит маршрут по умолчанию и будет пересылать весь трафик на сервер.

Если вас устраивает, что трафик от C1 до C2 идет через сервер, вам нужно включить директиву client-to-client в server.conf, чтобы клиенты могли добираться друг до друга через VPN. По умолчанию клиенты смогут добираться только до сервера.

Проверятьhttp://openvpn.net/index.php/open-source/documentation/howto.htmlв разделе «Включение нескольких машин на стороне клиента при использовании маршрутизируемого VPN (dev tun)».

Связанный контент