- Поднимаем OpenVPN для роутера
- Как сделать?
- Покупаем VPS
- Поднимаем OpenVPN
- Настраиваем OpenVPN на роутере
- ZyXEL Keenetic OpenVPN: полное руководство по созданию и подключению
- Хочу организовать сеть OpenVPN между двумя Keenetic
- ШАГ 1: Запуск DDNS и проверка внешнего IP адреса
- ШАГ 2: Настройка сервера
- ШАГ 3: Настройка клиента
- Хочу подключиться к OpenVPN сети
- Поднимаем VPN-туннель из мира домой в обход NAT
- Исходные данные
- Настройка туннеля
- Маршрутизация
- Источники
Поднимаем OpenVPN для роутера
Интернеты всех страх окукливаются в рамках своих границ, но пока еще есть способы смотреть, качать, открывать благодаря VPNам. В данном посте я вам покажу как настроить VPN на вашем роутре. В моем роутере AX5400 Wi-Fi 6 Router есть втроенный VPN клиент, он на многих роутреах есть в силу распростроненности протокола.
Как сделать?
Покупаем VPS
Выбор на ваш вкус. Любой сервис который работает и который вам нравится.
Поднимаем OpenVPN
Качаем и запускаем скрипт от Nyr
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
Отвечаем на вопросы скрипта:
Which protocol should OpenVPN use? 1) UDP (recommended) 2) TCP
What port should OpenVPN listen to? Port [1194]:
— можно использовать дефолтный порт 1194. Нажимаем Enter
Select a DNS server for the clients: 1) Current system resolvers 2) Google 3) 1.1.1.1 4) OpenDNS 5) Quad9 6) AdGuard DNS server [1]:
Enter a name for the first client: Name [client]:
OpenVPN installation is ready to begin. Press any key to continue.
В конце вывода скрипта вы увидите такой текст
The client configuration is available in: /root/blog.ovpn
- это и есть нужный нам конфиг. Скачайте его через scp, sftp, просто скопируйте через cat себе в “блокнот”…кароче как-то добутьте файл c вируталки.
Настраиваем OpenVPN на роутере
- логинимся в вебморду роутера. У меня это 192.168.0.1 и вводим ваш пароль к роутеру
- переходим в пункт OpenVPN client и нажимаем ADD
- вводим название подключения (Description) и в секции Configuration File, выбираем и загружаем сохраненный вами конфиг ранее
- в моем роутере еще есть настройка списка устройств (Device List) для которых трафик идет через VPN. Т.е мы можем выбрать устройство для которого будет “работать” OpenVPN. Очень удобная функция
ZyXEL Keenetic OpenVPN: полное руководство по созданию и подключению
Всех приветствую на нашем ламповом портале WiFiGid. Сегодня я расскажу вам, как настроить OpenVPN на роутерах Keenetic. Я рассмотрю два варианта. Первый – когда вы хотите организовать свою собственную сеть VPN между двумя Keenetic. Второй – когда вы хотите подключиться к выделенной VPN.
Сразу предупрежу, что делается все очень неудобно. Вся претензия к разработчикам ОС Keenetic. На том же самом ASUS все делается куда проще, но тут все не так. Также напомню, что у Keenetic есть и другие способы использования VPN: PPTP, L2TP и WireGuard. Последняя штука была добавлена в новой версии прошивки (3.3). О настройках этих вариантов можно почитать тут.
Они конфигурируются куда проще чем OpenVPN. В общем я вас предупредил. Я постарался описать все максимально подробно, но если что-то пойдет не так или возникнут вопросы – пишите в комментариях.
Хочу организовать сеть OpenVPN между двумя Keenetic
ШАГ 1: Запуск DDNS и проверка внешнего IP адреса
ПРИМЕЧАНИЕ! Если у вас белый и статический IP адрес, то пропустите эту главу.
Все службы, которые работают с интернетом, и внешний IP могут работать, только если у пользователя белый IP адрес. Поэтому в первую очередь вам нужно проверить, какой именно IP у вас – белый или серый. О том, что же такое белый и серый IP, а также как это проверить читаем тут.
Кто-то сейчас может возразить – ведь мы будем использовать KeenDNS, который может связываться с роутером по облаку в обход серого IP. Да это так, но на официальном сайте сказано, что OpenVPN может работать с KeenDNS только в режиме «Прямого доступа» (когда IP белый), а не через «Облако» (когда IP серый). Дело в том, что с KeenDNS к роутеру можно иметь доступ только через HTTP и HTTPS. Даже TELNET не работает по KeenDNS, не говоря уже о VPN.
В общем вы проверили и узнали, что ваш IP белый. Если он серый, то просто ищем другого провайдера. Если он у вас динамический, то вам нужно также подключить DDNS. Мы будем использовать встроенный сервис KeenDNS, который заменяет IP адрес роутера на доменное имя.
- Перейдите в раздел «Доменное имя».
- На первой вкладке введите любое наименование латинскими буквами.
- Помните, я говорил про два режима работы? В общем, если у вас белый IP, то выбираем «Прямой доступ». Режим «Через облако» работать с VPN не будет.
- Чтобы проверить, что служба работает – запустите браузер и в адресной строке введите DDNS, который вы придумали.
ШАГ 2: Настройка сервера
Прежде чем мы начнем, давайте я покажу пример, на основе которого мы будем работать. В общем ничего сложного, у нас есть два роутера Keenetic, которые мы хотим подключить друг к другу по VPN тоннелю. Задача в том, чтобы устройства этих сетей видели друг друга и были в одной (виртуальной) локальной сети. Туннель у нас будет иметь два конца: 10.1.0.1 и 10.1.0.2 (это не внешние IP адрес, а именно адреса туннеля).
- В первую очередь нужно установить нужный нам компонент. Идем в «Общие настройки» – «Обновления и компоненты» кликаем по кнопке «Изменить набор компонентов» и в списке находим «Клиент OpenVPN». Пусть вас не вводит в заблуждение название, этот компонент работает как сервер и как клиент.
cd C:\Program Files\OpenVPN\bin (команда перехода в папку, с установленной программой)
openvpn.exe –genkey –secret static.key (команда генерирует секретный ключ)
ПРИМЕЧАНИЕ! Если у вас 64-битная система, и вы скачали OpenVPN для 32-х битной ОС, то программа будет лежать по пути: C:\Program Files (x86)\OpenVPN\bin
- Теперь смотрите, идем в папку «bin» в установочной папке. Ищем там файлик «static.key» и открываем его через блокнот. Копируйте все содержимое – это и есть ключ.
- Скачайте файл static-server , откройте его блокнотом. И между тэгами «secret» содержимое замените на свой ключ. Сохраните файл.
- Теперь идем обратно в настройки роутера. Идем по пути «Другие подключения» – «VPN-подключения». Кликаем по кнопке добавления. В первую очередь вводим имя – можно указать любое. Далее указываем «Тип (протокол)» – «OpenVPN». Теперь копируем содержимое файлика «static-server» в поле «Конфигурация OpenVPN». Обязательно проверьте, чтобы в поле «Подключаться через» стоял параметр «Любое интернет-подключение» – иначе подключение может не произойти. Сохраняем параметр.
ШАГ 3: Настройка клиента
- Опять же нам нужно установить компонент «Клиент OpenVPN» – повторяем 1 шаг из прошлого шага.
- Скачиваем другой файлик static-client и открываем его в блокноте, вставляем ключ.
- Находим строку, которая начинается со слова «remote», и после нее заменяем значение на свой DDNS или IP.
- Добавляем OpenVPN подключение уже на клиенте. Все делается аналогично. Настройки файлика вставляем в «Конфигурацию OpenVPN».
- А теперь нам нужно установить Telnet к себе в систему. Если у вас Windows Vista, 7, 8 или 10, то делаем следующие шаги. Я предупреждал, что настройка тут геморная.
- Открываем «Панель управления».
- Открываем консоль со стороны нашего роутера-сервера и прописываем команду, чтобы через телнет попасть внутрь настроек.
interface OpenVPN0 no ip global
interface OpenVPN0 security-level private
no isolate-private
ip nat 10.1.0.2 255.255.255.255 (Для того, чтобы устройства этой сети имели доступ к интернету)
system configuration save
- Также нужно открыть UDP порт под номером 1194 (на серверном роутере). Переходим в «Межсетевой экран» и создаем правило, при создании вам нужно выбрать выше в строке «Интерфейс» подключение, которое вы используете для интернета (смотрите по названию).
Хочу подключиться к OpenVPN сети
- «Общие настройки» – «Обновления и компоненты» – «Изменить набор компонентов» – добавляем компонент, указанный на картинке ниже.
- Нам нужен OpenVPN файл, который нужен для подключения к VPN-сети. Если он уже у вас есть, или вам его выдал провайдер или системный администратор – хорошо. Вы также можете попробовать бесплатные сервера от проекта «VPNGate». Я буду показывать на их примере. Переходим на сайт . Пролистываем вниз до таблицы и оставляем галочку только с параметром «OpenVPN», далее нажимаем по кнопке «Refresh Servers List». Останутся сервера, которые используют эти подключения. Далее из нужного нам столбца скачиваем конфиг-файл.
- Ниже вы увидите два файла, в скобках указан протокол и порт, через который мы будем подключаться.
- Скачайте файлик, откройте его в блокноте, выделите все и скопируйте в буфер с помощью клавиш ( Ctrl + C ).
- В Web-интерфейсе роутера идем в «Другие подключения» – «VPN-подключения» добавляем новый коннект.
- Указываем любое имя подключения и ниже указываем тип. В конфигурацию нужно будет скопировать содержимое файла.
- Если помимо файла также выдается логин и пароль, то его нужно будет добавить в файл. Для этого находим строку «auth-user-pass».
login
password
- Между тегами вставляем сначала логин, а потом пароль.
- Если же вам дали сертификаты, который обычно идет в отдельных файликах, то нужно найти строки:
ca ca.crt
cert xxxxxxxxxx.crt
key xxxxxxxxxx.crt
#ca ca.crt
#cert xxxxxxxxxx.crt
#key xxxxxxxxxx.crt
- Далее в самом конце файлика вставляем строки с сертификатами. В нужных полях вставляем содержимые файла.
Копируем содержимое из ca.crt
—–BEGIN CERTIFICATE—–
—–END CERTIFICATE—–
Копируем содержимое из xxxx.crt
—–BEGIN CERTIFICATE—–
—–END CERTIFICATE—–
Копируем содержимое из xxxx.key
—–BEGIN RSA PRIVATE KEY—–
—–END RSA PRIVATE KEY—–
На этом все, дорогие друзья. Обращаю ваше внимание, что вы всегда можете обратиться ко мне, или кому-то из нашей команды в комментариях. Всем добра!
Поднимаем VPN-туннель из мира домой в обход NAT
.
Хочу рассказать вам про то как имея в интернете свой VPS-сервер можно поднять туннель в домашнюю сеть. И не платить при этом за статический IP провайдеру, и даже находясь за NAT, все равно сделать доступными в интернете свои домашние сервисы.
Исходные данные
- VPS сервер на debian со статическим реальным IP
- роутер с прошивкой OpenWRT, который находится за провайдерским NAT
- домашняя сеть с компьютерами и виртуальными машинами в 192.168.1.0/24
Настройка туннеля
apt-get update apt-get install openvpn
dev tun0 ifconfig 10.9.8.1 10.9.8.2 secret /etc/openvpn/static.key route 192.168.1.0 255.255.255.0
Здесь 10.9.8.x будет наша VPN-сеть, в которой адрес 10.9.8.1 мы назначем VPN-серверу, а адрес 10.9.8.2 VPN-клиенту.
Последняя строчка являет ссобой статисческий маршрут, который нужен для того, что бы наш VPS знал что путь в нашу домашнюю сеть лежит через роутер
Еще нам нужно сгенерировать ключ с которым будет подключаться к серверу наш роутер:
openvpn --genkey --secret static.key
Теперь установим OpenVPN на наш роутер с которого мы будем инициализировать VPN-соединение:
opkg update opkg install openvpn
scp root@your-server.org:/etc/openvpn/static.key /etc/openvpn/static.key
remote your-server.org dev tun0 ifconfig 10.9.8.2 10.9.8.1 secret /etc/openvpn/static.key keepalive 60 120
keepalive 60 180
Означает следующее: каждые 60 секунд посылать ping на удаленный хост, и, если за 180 секунд не было получено ни одного пакета — то перезапускать туннель.
openvpn --config /etc/openvpn/tun0.conf
/etc/init.d/openvpn start /etc/init.d/openvpn enable
Маршрутизация
Теперь настроим маршрутизацию.
Что бы наш роутер пропускал наш сервер в домашнюю сеть, а машины из домашней сети пропускал к серверу, нужно добавить следующие правила на роутер.
Создадим файлик и запишем в него эти правила:
#!/bin/sh #Allow forwarding via tunnel iptables -I INPUT -i tun0 -j ACCEPT iptables -I FORWARD -i tun0 -j ACCEPT iptables -I OUTPUT -o tun0 -j ACCEPT iptables -I FORWARD -o tun0 -j ACCEPT
chmod +x /etc/iptables.up.rules
Добавлять нужно перед exit 0
В принципе все готово.
Наши сети соединены, все машины прекрасно друг-друга видят и обмениваются пакетами.
Теперь, при желании, можно настроить проброс портов с внешнего на внутренний адрес.
Вот так, к примеру, выглядит проброс ssh порта на одну из машин у меня в домашней сети:
# Forward SSH port to server iptables -t nat -A PREROUTING -d XX.XX.XX.XXX -p tcp --dport 666 -j DNAT --to-dest 192.168.1.200:22 iptables -t nat -A POSTROUTING -d 192.168.1.200 -p tcp --dport 22 -j SNAT --to-source 10.9.8.1
Где XX.XX.XX.XXX — внешний IP сервера, 192.168.1.200 — IP моей машины внутри домашней сети, 666 — порт при обращении к которому я попадаю на эту машину
PS: Если у вас что-то не получается убедитесь что на вашем VPS есть и подключены все необходимые для этого модули ядра