Openwrt vpn не работает

OpenWRT + OpenVPN: точечный обход блокировок

Как человек постоянно работающий в интернете, я привык к полному и беспрепятственному доступу ко всем его ресурсам независимо от содержания данных ресурсов, а в силу того, что обеспечиваю работу части ресурсов (работаю в хостинг-провайдере), мне просто необходим такой доступ.

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

Делать я это все буду на роутере TP-Link WR841N, чтобы обеспечить беспрепятственный доступ в интернет для всех сетевых устройств, а не только для рабочего компьютера.

Для начала нам потребуется поднять OpenVPN сервер или воспользоваться услугами VPN провайдера. Если же вы решите поднять собственный сервер, я бы рекомендовал использовать OpenVPN Access Server, т.к. с помощью него можно просто и быстро его развернуть, а также имеет веб-интерфейс. Достаточно просто установить пакет и задать пароль на учетную запись openvpn.

Читайте также:  Мультиварка филипс 3039 не работают кнопки

Я не буду описывать как прошить роутер под OpenWRT, уже есть такая статья. Я скажу даже больше, есть даже решение проблемы с отсутствием OpenVPN в прошивке OpenWRT под TP-Link WR841N — вот эта статья. Единственное, из этой статьи мне пришлось немного подправить init-скрипт, т.к. возникла проблема с автозапуском, а также я добавил условие при котором скрипт не будет скачивать дистрибутив OpenVPN при каждом запуске, а только при первом.

Итак, допустим у нас есть роутер с установленной прошивкой OpenWRT и OpenVPN. Правим файл-конфигурации подключения OpenVPN, у меня он находится в /etc/openvpn/my.cnf. Добавляем в него следующие параметры:

Создаем файл /etc/openvpn/login.conf в следующем формате:

Соответственно yourlogin и yourpassword нужно заменить на ваши авторизационные данные, если кто не понял.

Создаем скрипт /etc/openvpn/unban.sh, который будет выгружать список заблокированных IP и прописывать маршруты:

Опишу некоторые нюансы:

1. Мой провайдер, как оказалось, перехватывает DNS запросы и выдает мне ложный IP заблокированных сайтов, соответственно, чтобы этого избежать необходимо направить DNS запросы через VPN. Если Вы используете другие DNS серверы, стоит поправить строки:

route add 8.8.8.8/32 dev $TUN;
route add 8.8.4.4/32 dev $TUN;
route add 77.88.8.8/32 dev $TUN;

заменив IP Google и Yandex DNS на IP своих DNS серверов.

2. В переменной MIN_ROUTES задано минимальное количество существующих маршрутов при котором возможно дальнейшее выполнение скрипта. Обычно, до запуска данного скрипта, у меня не больше 15 маршрутов в таблице, если у вас больше маршрутов, следует изменить значение переменной MIN_ROUTES до минимального, но количество должно быть не менее существующих. Проверить это можно выполнив команду route | wc -l.

3. Т.к. роутер у меня очень слабенький, он не может осилить все 30000 с лишним маршрутов, бывает сбрасывает их, а также, чтобы прописать все 30к маршрутов уходило порядка 5 минут, а то и больше. Поэтому мне пришлось придумать как сократить список маршрутов. Решением стало добавление маршрутов подсетями по /24, это позволило сократить список до 8000 с лишним. Если ваш роутер позволяет прописывать большое количество маршрутов, то замените переменную LIST на:

4. Подсеть в которой находился мой VPN сервер была в списке блокировок, из-за этого у меня сбрасывался маршрут на сам VPN сервер, пришлось добавить в скрипт строки:

Если у вас такой проблемы нет, то это можно убрать из скрипта.

Далее включаем планировщик задач cron и активируем автозапуск:

Выполняем команду crontab -e и добавляем в планировщик задание:

Скрипт будет запускаться раз в 5 минут и проверять нужно ли прописывать маршруты. Частоту запуска можете изменить по своему усмотрению.

Источник

Домашняя VPN и подключение к ней с коробочки на OpenWrt

Недавно получилось так, что я уехал из дома. Далеко. Учиться. Подключил здесь интернет, поставил старый TP-LINK с OpenWrt в качестве точки вай-фая, и через некоторое время ощутил, что мне не хватает ресурсов моей домашней сети вроде NAS и бекап-сервера, а также осознал, что меня немного подзадолбали блокировки РКН. Соответственно, решил весь трафик с TP-LINK’а пустить через домашнюю сеть.

Решение этой проблемы, казалось, лежит на поверхности — OpenVPN. Но я не понимаю, как лучше это реализовать. Вообще, у меня дома уже есть OpenVPN сервер, поднятый на стандартной прошивке Netgear R7000, и для задач вроде «срочно подключиться с ноута к домашней сети в дороге» его хватало, но для использования на постоянной основе он оказался малопригоден ввиду, во-первых, маленькой скорости, во-вторых, старой версии OpenVPN, а в-третьих, постоянных глюков. Плюс ко всему, у меня не получилось подключиться к нему с моей местной OpenWrt-коробочки по TAP. Пакетики почему-то не ходили. По TUN кое-как получилось, пинги с самой коробочки до компьютеров в домашней сети шли, но маршрутизацию через него я так и не настроил.

Думаю, что можно поднять VPN-сервер на Debian-машине, которая у меня дома круглосуточно включена. Но проблема в том, что я, честно говоря, не особо понимаю, как это сделать. Нужна ли отдельная подсеть, или возможно как-то заставить мой домашний роутер просто выдавать VPN-клиентам, подключенным через сервер, IP-шники из своего DHCP пула? И что еще нужно? Просто порты пробросить? Я пробовал поднять на этой Debian-машине VPN-сервер с дефолтными настройками, к нему можно подключиться извне, но ресурсы домашней сети через него недоступны.

В общем, задача, вроде бы, простая, но я впал в какой-то ступор. Подскажите, пожалуйста, хотя бы, в какую сторону копать.

OpenVPN сам по себе тормозззз. Используй wireguard или xl2tpd.

ь мой домашний роутер просто выдавать VPN-клиентам,

Линукс версия openvpn это не умеет, если у тебя микротык — то там это можно сделать.

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

Но если не хочется парится заюзай https://www.softether.org/ — там просто создаешь bridge с физическим интерфейсом и юзеры будут получать ip с твоей локальной сети

Но если не хочется парится заюзай https://www.softether.org/ — там просто создаешь bridge с физическим интерфейсом и юзеры будут получать ip с твоей локальной сети

Это интересная тема. А для OpenWrt есть клиент?

ты имеешь ввиду сервер ?

но проще заюзать на openwrt wireguard.

Да не, сервер у меня дома на дебиане, а клиент тут на OpenWrt. Я хочу весь трафик с OpenWrt пустить через домашнюю сеть.

Но в случае openwrt с двух сторон проще организовать wireguard. Только ip с обоих сторон должны быть статическими

Статический IPv4 дома есть, а тут стоит дополнительных денег — не очень хочется их платить. Но есть IPv6 с обеих сторон — пойдет?

да только openwrt должен быть достаточно свежим

Источник

OpenVPN Руководство по установке для новичков

This article may contain network configuration that is version dependent post 2021-06

More Information

Данная статья является руководством для начинающих по установке OpenVPN соединения на OpenWrt. Основная цель данного документа — получить рабочий OpenVPN туннель и установить базовую платформу для дальнейшей настройки.

Ссылки на страницы дальнейшей конфигурации можно найти Other Considerations разделе этого руководства.

Сценарий использования (начальная настройка)

Пользователь хочет безопасно соединиться с OpenWrt маршрутизатором. На данный момент пользователь уже может получить доступ к OpenWrt маршрутизатору, но через внешнюю сеть, такую как Интернет. Конечным результатом станет прямое частное соединение между OpenVPN клиентом и сервером. В основном это будет выглядеть так, будто OpenVPN клиент находится в подсети маршрутизатора(но не в той подсети, которая является для маршрутизатора внешней).

Это руководство описывает 3 файла конфигурации для OpenVPN:

Следует отметить, что TAP это не синоним сетевого моста, тем не менее TAP адаптер нужен для сетевого моста, в то же время рекомендуется использовать TUN, если не нужен сетевой мост. Для простоты мы будем использовать эти термины как взаимозаменяемые, так как сравнение терминов “сервер” и “сервер-мост” может привести к путанице. TUN будет использоваться для обозначения традиционного сервера, в то время как TAP будет относиться к “серверу-мосту”.

Можно настраивать OpenVPN на OpenWrt удалённо. Однако рекомендуется делать это локально, так как это упростит поиск и устранение неисправностей.

TUN сервер расходует меньше ресурсов и только отсылает трафик, предназначенный только для клиента. В то время, как TAP сервер менее эффективный и отсылает клиентам широковещательный трафик.

Для TUN сервера легче настроить безопасность, так как его клиенты могут находиться в отдельной подсети, которая может легко контролироваться межсетевым экраном. Благодаря тому, что клиентам в данном режиме не отсылается широковещательная информация, злоумышленник не сможет получить доступ к большому объёму данных.

Сервер TAP объединяет клиентов в сеть более бесшовной образом, это может упростить процесс настройки различных сетевых приложений. Обратите внимание на то, что независимо от выбранного метода, создание правил межсетевого экрана имеет более важное значение безопасности, чем выбор между TUN и TAP сервером.

При использовании TAP сервера рекомендуется изменить маску подсети на отличную от 192.168.0.XXX или 192.168.1.XXX. Они очень распространены и приведут к конфликтам в маршрутизации. Это обычно может быть достигнуто путём изменения IP -адреса OpenWrt/OpenVPN маршрутизатора к чему-то наподобие 192.168.7.1

Системные требования

Для работы по данному руководству нужен OpenVPN сервер на OpenWrt маршрутизаторе с запущенным OpenWrt 15.05 Chaos Calmer.

Установка необходимого ПО

Создание сертификатов

Если вы создаёте OpenVPN сервер (любого типа), вы должны создать сертификаты безопасности по нижеприведённым инструкциям. Если вы используете OpenVPN как клиент, требуемые сертификаты должны были быть предоставлены вам с вашими конфигурационными данными.

Вышеприведённые команды создадут сертификат сервера с именем my-server и сертификат клиента с именем my-client.

Путь сохранения сертификатов и ключей по умолчанию /root/pki.

Вы можете создать несколько клиентских сертификатов, запустив easyrsa build-client-full несколько раз и указав разные имена.

Вы можете создать новый набор сертификатов, запустив clean-all и те же команды снова.

Распределение сертификатов

Скопируйте ключи сервера в папку /etc/openvpn/.

Настройка сети на OpenWrt маршрутизаторе

Традиционный (TUN) Сервер

Сервер в режиме моста(TAP)

Клиент

(для исходящих данных)

Конфигурация OpenVPN

OpenVPN может быть настроен как с помощью интерфейса UCI(характерного для OpenWrt), так и с помощью традиционных конфигурационных файлов OpenVPN (*.conf). OpenVPN будет автоматически подгружать все *.conf файлы из /etc/openvpn/.

Пользователи, знакомые с OpenVPN, вероятно, предпочитают использовать файлы конфигурации, и этот выбор, вероятно, будет более простым и удобным для тех кто планирует запускать несколько экземпляров OpenVPN.

Для простоты и последовательности, остальная часть этого руководства будет использовать интерфейс OpenWRT UCI для настройки OpenVPN, как описано ниже. Следует отметить, что раздел Routing Traffic section содержит инструкции для UCI интерфейса (Пользователям, использующим традиционные файлы конфигурации, придется подкорректировать эти команды под свою систему).

Традиционный (TUN) Сервер

Сервер в режиме моста (TAP)

Клиент

Конфигурация клиента очень сильно зависит от настроек сервера. Вам необходимо откорректировать их в соответствии с данными сервера, к которому вы подключаетесь.

Если ваш сервер требует проверки подлинности пароля:

Файл password.txt должен содержать в себе логин на первой строке и пароль на второй. Этот файл следует хранить в безопасном месте.

Вы можете также использовать опцию route.nopull. Это отключит автоматическую маршрутизацию. Имейте ввиду, что вам придётся самостоятельно прописывать все маршруты, к тому же сервер по-прежнему будет сам определять свойства TCP /IP для вашего TUN/TAP устройства:

На этом вы закончили базовую настройку. Запустите OpenVPN:

Настройка клиентов на сервер

Создайте клиентский конфигурационный файл OpenVPN, сохраните его с .ovpn расширением для Windows или .conf для *nix систем и отошлите его вашему клиенту:

Традиционный (TUN) Клиент

Клиент в режиме моста (TAP)

Проверка туннеля

Поздравляем! Теперь ваш OpenVPN сервер или клиент должен быть в рабочем состоянии. Однако возможно, что сервер до сих пор не может отправлять трафик клиентам, так как всё ещё не настроена маршрутизация. Перед настройкой маршрутизации вы должны убедиться, что клиенты могут связаться с сервером.

Проверьте соединение в соответствии с инструкциями вашей ОС.

На OpenWrt это можно сделать с помощью команды traceroute.

Традиционный (TUN) Сервер

Проверьте соединение, введя команду:

Тем не менее соединение с интернетом не будет идти через OpenWrt сервер без соответствующих маршрутов

После проверки работоспособности соединения вам нужно настроить встраивание маршрутов клиентам.

Server-Bridge (TAP) Server

Если вам требуется только доступ к интрасети и не требуется направлять обычный интернет-трафик (WAN ) через VPN , ваша конфигурация завершена!

Client

Unless the OpenVPN option route-nopull was specified by the client, routes pushed by the server should be in place. If route-nopull was used, only the server will be accessible. Using traceroute on any address with a route pushed by the server should result in that traffic being sent through the VPN , while other addresses should be sent through the default gateway.

The OpenVPN gateway can generally be found on *nix systems using:

And you can then test it using:

If you are not using route-nopull, then your configuration should now be complete!

Routing Traffic

If you are running a client instead of a server, then the server you connected to should have pushed the appropriate routes to you already. Advanced users may wish to alter this behavior.

Please be aware that just because a route is not pushed doesn’t mean the client can’t add it themselves and send that traffic through the VPN anyway. That is when your firewall configuration should take effect. A notable example is our TAP configuration, which has no firewall rules preventing WAN access since clients are treated the same as any other LAN client.

Traditional (TUN) Server

Server-Bridge (TAP) Server

Client

Корректные маршруты должны автоматически предоставляться сервером без дополнительной настройки. Однако, в зависимости от потребностей, продвинутый пользователь может изменить маршруты самстоятельно. Это можно сделать опцией клиента route-nopull, которая заставляет игнорировать маршруты указанные сервером. После поднятия VPN -канала пользователь может добавлять свои собственные маршруты вручную или скриптом. Это можно сделать с использованием приведенного ниже примера:

Обратите внимание, что использование опции route-nopull приведет к появлению ошибок в журнале OpenVPN, после того, как он отклонит перенаправленные маршруты сервера. Это нормально.

Маршрутизация из сети сервера в сеть клиента

Тем не менее разработчики технологии OpenVPN предусмотрели возможность такого взаимодействия, однако, на момент написания этой части статьи (июнь 2018) возможность настроек этих опций в интерфейсе Luci или в командной строке uci разработчиками OpenWRT не была реализована. Тем не менее этот механизм доступен для использования через подключения конфигурационного файла OpenVPN. На примере сервера TUN делается это следующим образом —

Через команды uci создается VPN -соединение

Файл /etc/easy-rsa/vpn.cfg/server.ovpn создается как стандартный конфигурационный файл OpenVPN, содержащий те же самые настройки, что и описаны в настоящей статье. Например:

Где строка push route 192.168.10.0 255.255.255.0 указывает на адрес сети сервера, а строка route 192.168.20.0 255.255.255.0 — маршрут к сети клиента

Основное назначение этого файла — обеспечение возможности использования опции client-config-dir и ccd-exclusive, которые на момент написания настоящей статьи (июнь 2018) не была реализована в интерфейсе uci . В опции client-config-dir сохраняется путь к каталогу содержащему индивидуальные конфигурационные файлы для маршрутизации к каждой из сетей клиентов. Имя файла должно совпадать с именем сертификата (Внимание! не путать с именем файла сертификата) В каждом файле прописывается правило маршрутизации для сервера OpenVPN пример конфигурационного файла (обычно) содержит две строки

iroute — адрес сети клиента к которому осуществляется маршрутизация из сети сервера

ifconfig-push — указание клиентскому маршрутизатору на адрес шлюза

Подробности можно найти в описании этих стандартных опций в документации на OpenVPN

Клиентские файлы читаются сервером при создании нового vpn-соединения

После указанных действий сеть клиента должна пинговаться из сети сервера.

Other Considerations

When attempting to add an OpenVPN option which would normally use a hyphen (such as route-nopull), OpenWRT’s UCI system requires you to replace the hyphen with an underscore (route_nopull).

Troubleshooting

If something doesn’t work as expected while following this HOWTO:

Asking for help

You can ask for help on the OpenWrt forum: https://forum.openwrt.org/.

When asking for help, you should at a minimum include the contents of the following files:

  • Last modified: 2021/07/24 05:45
  • by someothertime

Self-registration in the wiki has been disabled.
If you want to contribute to the OpenWrt wiki, please post HERE in the forum or ask on IRC for access.

Except where otherwise noted, content on this wiki is licensed under the following license:
CC Attribution-Share Alike 4.0 International

Источник

Оцените статью