[Entware] Openvpn клиент на роутере

Используем пакеты, расширяющие возможности оборудования
Аватара пользователя
Zyxmon
Администратор
Сообщения: 1264
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 17 апр 2016, 11:55

В соседней теме - [Entware] Поднимаем OpenVPN сервер обсуждается использование OpenVPN в качестве сервера на маршрутизаторе. Эта тема посвящена настройке openvpn в качестве клиента.
Если первый случай подходит для, например, подключения с работы в квартирную сеть, то клиент Openvpn часто нужен совсем для другого. Как пишут на одном из сайтов, предлагающим VPN серверы - VPN обеспечит Вам анонимность, безопасность и свободу. Поясню, если Вы купили (поставили) VPN сервер во Франции, то теперь везде, где захотите, можете выдавать себя за француза - ip у Вас будет французский.
Как правило не везде Вам нужен французский ip, и я расскажу как при обращении на одни сайты оставлять старый ip, а на других использовать ip openvpn сервера.

Итак, прежде всего нужно поставить openvpn

Код: Выделить всё

opkg install openvpn-openssl

Поместим конфиг openvpn клиента в папку /opt/etc/openvpn. У меня этот конфиг называется router.ovpn.
Отредактируем скрипт запуска /opt/etc/init.d/S20openvpn и укажем этот конфиг в строке

Код: Выделить всё

ARGS="--daemon --cd /opt/etc/openvpn --config router.ovpn"

В скрипте, возможно, понадобиться загрузка модуля tun.ko (это зависит от конкретного устройства).
Конфиги openvpn серверов обычно содержат директиву `push route ....` или `push "redirect-gateway ..."` и у клиента, при запуске openvpn клиента измениться шлюз по умолчанию. Нам это не нужно, мы будем использовать openvpn туннель только для нескольких ip.
Отредактируем текстовый файл /opt/etc/openvpn/router.ovpn. Добавим в него в самое начало строку

Код: Выделить всё

route-nopull

Примечание. Вместо route-nopull можно использовать route-noexec. См. официальную документацию по openvpn.

А в следующих строках с помощью директив route укажим ip на которые будем "ходить" через vpn

Код: Выделить всё

route 178.62.9.171
route ....

Примечание. Командой route можно задавать не единичные ip, а подсети. См. официальную документацию по openvpn.

Запустим openvpn сервер командой

Код: Выделить всё

/opt/etc/init.d/S20openvpn start

и выполним правила iptables

Код: Выделить всё

iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Здесь br0 - сетевой интерфейс LAN, а tun0 - openvpn интерфейс. Правила iptables зависят от устройства.
Теперь если Вы зайдете на myip.ru (именно его мы добавили командой `route 178.62.9.171`), то Вам скажут, что Ваш ip из Франции (из той страны, где у Вас vpn сервер).

На этом все. Замечания, примеры для конкретных моделей роутеров приветствуются.

steils
Сообщения: 4
Зарегистрирован: 07 фев 2016, 20:59

Сообщение steils » 05 июл 2016, 13:03

OpenVPN запустил и работает. Но осталась небольшая проблема: при подключении долго висит надпись: "Ожидание ответа от сервера"

zoom
Сообщения: 1
Зарегистрирован: 29 авг 2016, 09:27

Сообщение zoom » 29 авг 2016, 09:35

Zyxmon писал(а):Источник цитаты и выполним правила iptables

Код: Выделить всё | Строки: Вкл.Нумерацию · Развернуть

iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE


Здесь br0 - сетевой интерфейс LAN, а tun0 - openvpn интерфейс. Правила iptables зависят от устройства.


На Keenetic LTE любые вмешательства в iptables зарезаются, похоже, и команды действуют только несколько секунд.
Правила принялись только когда поместил их в файл в папку /opt/etc/ndm/netfilter.d/
Разумеется, сделал chmod +x и первой строкой #!/bin/sh

Inspired
Сообщения: 4
Зарегистрирован: 24 сен 2016, 19:50

Сообщение Inspired » 25 сен 2016, 11:55

Изменилось поведение по отношению к правилам интерфейсов в NDMS v1: при пинге (и т.п.) сети за OpenVPN-сервером, при соответствующих настройках iptables, сетевые устройства принимали внутренний IP-адрес компьютера за OpenVPN-клиентом, но в NDMS v2 видимо где-то жестко маскарадинг прописан для всех нелокальных интерфейсов и к компьютеру за сервером всё приходит только с IP VPN-клиента, а не компьютера за ним.

Подскажите куда копать, что отключить маскарадинг на tap-интерфейсах?

Это не использую:

Код: Выделить всё

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1264
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 25 сен 2016, 12:16

В прошивке V2 правила iptables другие (можете посмотреть и изучить их сами). Не думаю, что кто-либо возьмется это делать за Вас с Вашим конфигом.
Дополнительные правила ОБЯЗАТЕЛЬНО нужно прописывать в хуках https://github.com/ndmsystems/packages/ ... netfilterd
Прошивка сбрасывает доп. правила по любому "чиху" до нескольких десятков раз в час.

PS Я лично не настраивал L2-туннель (tap) на Entware. На старом форуме ЕМНИП только одно упоминание об успешной настройке openvpn(tap).
Я думаю отдельная тема по openvpn в этом режиме была бы интересна другим. Если есть время - создайте такую в этом разделе и опишите свой опыт (v1 или v2 - не важно).

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1264
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 25 сен 2016, 12:58

Inspired писал(а):Источник цитаты MASQUERADE

Если у Вас tap (L2 туннель), то маскарад не нужен. Нужно разрешить прохождение пакетов между сетевым интерфейсом openvpn и br0. Подсеть же у них одна!

Inspired
Сообщения: 4
Зарегистрирован: 24 сен 2016, 19:50

Сообщение Inspired » 25 сен 2016, 13:51

Маскарад не использую, видимо он где-то прописывается в ядре прошивки. В v1 такой проблемы не было, трафик спокойно бегал с оригинальными IP конечных устройств. Теперь только с адресами VPN-интерфейсов.

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1264
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 25 сен 2016, 14:06

Inspired писал(а):Источник цитаты видимо он где-то прописывается в ядре прошивки.

Вроде есть такое. Поищите на http://forum.keenetic.net/

plagioklaz
Сообщения: 1
Зарегистрирован: 20 май 2016, 15:06

Сообщение plagioklaz » 08 дек 2016, 15:57

Zyxmon писал(а):Источник цитаты PS Я лично не настраивал L2-туннель (tap) на Entware. На старом форуме ЕМНИП только одно упоминание об успешной настройке openvpn(tap).

Если и мне память не изменяет, то пот с конфигами для tap вот этот http://forum.zyxmon.org/post13727.html#p13727

Faizrakhmanov
Сообщения: 6
Зарегистрирован: 04 янв 2017, 05:58
Откуда: Казань

Сообщение Faizrakhmanov » 04 янв 2017, 06:06

Zyxmon писал(а):
Поместим конфиг openvpn клиента в папку /opt/etc/openvpn. У меня этот конфиг называется router.ovpn.

Добрый день. Как создать правильно или где находится файл router.ovpn после установки OpenVPN в качестве сервера? Заранее спасибо.
Последний раз редактировалось Faizrakhmanov 06 янв 2017, 01:17, всего редактировалось 1 раз.
<Keenetic Ultra II> <Entware-3х>


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 1 посетитель :: 1 зарегистрированный, 0 скрытых и 0 гостей (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (121) здесь было 18 май 2016, 18:19

Сейчас этот форум просматривают: Yandex [Bot] и 0 гостей