Рейтинг:0

OpenVPN и IPTABLES - Как назначить шлюз lan (vpn) клиентам

флаг cn

Я пытаюсь настроить свою сеть openvpn, но у меня проблема.

Моя конфигурация локальной сети выглядит следующим образом:

  • основной роутер Zyxel 192.168.1.1, выступающий в роли шлюза (подключение vdsl) и точка доступа;
  • Маршрутизатор openwrt TD-W8970 192.168.1.2 в качестве доступа точка и впн сервер (10.212.79.1)

Что я хочу сделать, так это создать сеть VPN с клиентами, которые должны отправлять интернет-запросы только через мой шлюз локальной сети (192.168.1.1); Другими словами, я хочу, чтобы общедоступный IP-адрес клиентов, отображаемый в Интернете, был шлюзом моей локальной сети (192.168.1.1), а не тем, который был назначен им их интернет-провайдером.

Здесь ниже моя конфигурация openvpn.

server.conf

пользователь никто
группа
разработчик тун
порт 1194
прото удп
сервер 10.212.79.0
255.255.255.0
топология подсети
клиент-клиент
поддержка 10 60
упорный тун
постоянный ключ
глагол 3
нажать "постоянно-тун"
нажмите «постоянный ключ»
нажмите "dhcp-опция DNS 8.8.8.8"
нажмите "dhcp-опция DNS 8.8.4.4"
нажмите "маршрут 192.168.1.0 255.255.255.0"
ca /etc/easy-rsa/pki/ca.crt
сертификат /etc/easy-rsa/pki/выпущенный/server.crt
ключ /etc/easy-rsa/pki/private/server.key
дх /etc/easy-rsa/pki/dh.pem
tls-auth /etc/easy-rsa/pki/ta.key 0

client.conf

разработчик тун
прото удп
удаленный myserver_xyz.com 1194 udp
разрешить-повторить бесконечный
ни к чему
пользователь никто
группа
постоянный ключ
упорный тун
ca ca.crt
сертификат client1.crt
ключ клиент1.ключ
сервер удаленного сертификата tls
tls-auth ta.key 1
шифр AES-256-CBC
глагол 3

Сеть openvpn установлена ​​правильно, и клиент 10.212.79.2 может пинговать vpn-сервер 10.212.79.1 и перемещаться в Интернете.

Проблема в том, что общедоступный IP-адрес клиента, показанный в Интернете, назначен его интернет-провайдером, а не шлюзом локальной сети (192.168.1.1), где находится сервер vpn (192.168.1.2 / 10.212.79.1).

Я попытался внести некоторые изменения в конфигурацию сервера, но безуспешно.

Я также пытался поставить push «redirect-gateway def1» или push «redirect-gateway autolocal», но в этом случае клиент вообще перестал перемещаться в Интернете.

Если это не проблема openvpn, то проблема связана с правильной настройкой IPTABLES?

Не могли бы вы мне помочь?

Заранее спасибо :)

Рейтинг:0
флаг bd

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

перенаправление-шлюз def1 кажется адекватным, но, чтобы быть уверенным, было бы лучше показать нам IP-адрес маршрута вывод на все узлы (клиентский ПК, клиентский маршрутизатор, серверный маршрутизатор). Эти выходные данные позволят нам убедиться, что разные таблицы маршрутов верны. https://openvpn.net/community-resources/how-to/ предлагает местный флаг в зависимости от вашей точной конфигурации.

Команда маскировки должна быть размещена на сервере VPN, обычно на маршрутизаторе сервера: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE где eth0 — внешнее устройство (ближайшее к интернету). Видеть https://linuxhacks.org/what-is-ip-masquerade-and-how-to-rule-it-with-iptables/ или же https://bobcares.com/blog/iptables-nat-masquerade/ Вы также должны включить переадресацию (см. эти статьи).

Francesco avatar
флаг cn
Прежде всего спасибо за поддержку. Я решил таким образом. В openvpn server.conf: нажмите «redirect-gateway def1». В маршрутизаторе OpenWRT, на котором размещен сервер openvpn: sysctl net.ipv4.ip_forward=1, iptables -I FORWARD -j ACCEPT, iptables -t nat -I POSTROUTING -s 10.212.79.0/24 -o br-lan -j MASQUERADE. Я также удалил из server.conf: push "dhcp-option DNS 8.8.8.8", push "dhcp-option DNS 8.8.4.4", push "route 192.168.1.0 255.255.255.0". Теперь мне интересно, смогу ли я добиться того же результата без использования iptables, а только с использованием определенной конфигурации openvpn на сервере и клиенте.
Frédéric Loyer avatar
флаг bd
Если в вашей конфигурации есть 2 сети с одинаковым префиксом (192.168.1.0/24), я думаю, маскировка обязательна. Это позволяет избежать того, что один пакет из одной из этих сетей поступает во вторую без изменений, что может привести к проблемам с маршрутизацией (сеть назначения считает, что пакет поступил от соседа, а не с другой стороны VPN). Я не могу больше настаивать. Затем сохраните маскарад или замените один из 192.168.1.0, скажем, на 192.168.2.0.
Francesco avatar
флаг cn
У меня нет контроля над конфигурацией клиентской сети, потому что клиент подключается к моему VPN из общедоступной сети (отель, ключ LTE, ...). Что я могу сделать, чтобы избежать проблем с маршрутизацией, так это изменить конфигурацию IP в локальной сети сервера, избегая общего 192.168.x.x и предпочитая что-то среднее из 10.x.x.x, снижая вероятность конфликтов IP с клиентской сетью.В этом случае (локальная сеть сервера и клиентская сеть с разной конфигурацией IP) можно ли добиться того же результата без использования iptables, а только с правильной настройкой server.conf и client.conf?
Frédéric Loyer avatar
флаг bd
С одним клиентом это будет работать. Для двух клиентов с одинаковым диапазоном адресов 192.16.1.0 требуется маскировка. Обратите внимание, что есть объявление маршрута 193.168.1.0, которое должно где-то появиться. И вам по-прежнему нужен маскарад между всеми вашими личными адресами и Интернетом, но я полагаю, что это делается в другом месте.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.