Авторизация

Topic-icon Ставим OpenVPN на OpenWRT для VPNKI.ru

Больше
07 фев 2021 11:54 #6579 от Mast
Mast создал эту тему: Ставим OpenVPN на OpenWRT для VPNKI.ru
Ставим OpenVPN на OpenWRT для туннельного сервиса VPNKI.ru
by XamleTT

Дано:
- 2 роутера. Оба с OpenWRT
- сеть на Хазе 192.168.1.0
- сеть на Даче 192.168.2.0
Цель:
- создать ВПН-туннель с Дачи на Хазу
Задача:
- просто вводить в компе Хазы IP-адрес дачного устройства и попадать на это устройство, не взирая на Серые IP с обеих сторон, NAT, Firewall и прочую муть

1.
Ставим пакеты:
- openvpn-openssl
- luci-app-openvpn
opkg update
opkg install openvpn-openssl
opkg install luci-app-openvpn

2.
Обновляем страницу LuCi
во вкладе Services должна появиться вкладка OpenVPN.
если вдру не появилась - отлогиниваемся из LuCi и залогиниваемся заново.
если снова нету - перегуз. Если и после перегруза нету, то см. п.1

3.
Идем на ВПНКИ, ставим галку openvpn на настройках туннелей, скачиваем файл .ovpn.
каждая новая поставновка галки генерирует НОВЫЙ файл, поэтому скачиваем его один раз, или используем последний из скаченных.
Файл этот внурти состоит из трех частей. Открываем его как ТХТ и разбираем на части.

Часть-1 Настройки от ВПНКИ.ру

client
remote msk.vpnki.ru
port номер-вашего-порта
proto udp
cipher AES-128-CBC
ns-cert-type server
key-direction 1
dev tun
auth-user-pass
explicit-exit-notify 2
reneg-sec 0


Часть-2 Root CA Certificate:
<ca>
-BEGIN CERTIFICATE-
..Тут всякие символы..
-END CERTIFICATE-
/ca>
Эту часть, <ca> и </ca> НЕ надо, помещаем текстовым редактором в отдельный файл и называем его ca.crt

Часть-3 TLS-auth Key:
<tls-auth>
-BEGIN OpenVPN Static key V1-
..Тут всякие символы..
-END OpenVPN Static key V1-
</tls-auth>
Эту часть, <tls-auth> и </tls-auth> НЕ надо, помещаем текстовым редактором в отдельный файл и называем его tlsauth.key

4.
Текстовым редактором создаем файл userpass.txt
В первой строчке только логин. Во второй строчке только пароль на нужный нам туннель.
user666
portwein777

Три готовых файла отложили в отдельную папку.
Больше никакие файлы не нужны! На Gargoyle (говорят, что..) не дает сохранить профиль, пока не присунешь туда "валидные" client.key и client.crt. Используйте OpenWRT, а не всякие форки типа Гаргульи, ГолденОрб и прочие недосборки.

5.
Через puTTy заходим на роутер по SSH.

6.
Чистим конфигурацию openvpn от разных sample-примеров, которые там болтаются.
echo > /etc/config/openvpn

7.
Придумываем название своему OpenVPN профилю. Скажем очень оригинальное: ovpnki
uci set openvpn.ovpnki=openvpn
uci set openvpn.ovpnki.enabled=1
uci set openvpn.ovpnki.verb=3
uci set openvpn.ovpnki.client=1
uci set openvpn.ovpnki.remote=msk.vpnki.ru
uci set openvpn.ovpnki.port= номер-вашего-порта-из-файла-настроек
uci set openvpn.ovpnki.proto=udp
uci set openvpn.ovpnki.cipher=AES-128-CBC
uci set openvpn.ovpnki.ns_cert_type=server
uci set openvpn.ovpnki.key_direction=1
uci set openvpn.ovpnki.dev=tun
uci set openvpn.ovpnki.explicit_exit_notify=2
uci set openvpn.ovpnki.reneg_sec=0
uci set openvpn.ovpnki.ca=/etc/openvpn/ca.crt
uci set openvpn.ovpnki.tls_auth=/etc/openvpn/tls.key
uci set openvpn.ovpnki.auth_user_pass=/etc/openvpn/userpass.txt
uci commit openvpn
Можно и нужно копировать и применять весь блок, а не по одной строчке.

8.
Проверяем содержание файла /etc/config/openvpn
скажем через
nano /etc/config/openvpn
(предварительно установив на OpenWRT редaктор nano, или по старинке через vi)

config openvpn 'ovpnki'
option enabled '1'
option verb '3'
option client '1'
option remote 'msk.vpnki.ru'
option port 'номер-вашего-порта'
option proto 'udp'
option cipher 'AES-128-CBC'
option ns_cert_type 'server'
option key_direction '1'
option dev 'tun'
option explicit_exit_notify '2'
option reneg_sec '0'
option ca '/etc/openvpn/ca.crt'
option tls_auth '/etc/openvpn/tls.key'
option auth_user_pass '/etc/openvpn/userpass.txt'


9.
Мутим себе openvpn интерфейс tun0 с именем ovpn:
uci set network.ovpn=interface
uci set network.ovpn.ifname=tun0
uci set network.ovpn.proto=none
uci set network.ovpn.auto=1
uci commit network
/etc/init.d/network reload

10.
Мутим себе фаерволл для openvpn интерфейса:
uci set firewall.vpn=zone
uci set firewall.vpn.name=vpn
uci set firewall.vpn.network=ovpn
uci set firewall.vpn.input=ACCEPT
uci set firewall.vpn.forward=REJECT (REJECT- если юзаете vpn как замену WAN)
uci set firewall.vpn.output=ACCEPT
uci set firewall.vpn.masq=1
uci set firewall.vpn_forwarding_lan_in=forwarding
uci set firewall.vpn_forwarding_lan_in.src=vpn
uci set firewall.vpn_forwarding_lan_in.dest=lan
uci set firewall.vpn_forwarding_lan_out=forwarding
uci set firewall.vpn_forwarding_lan_out.src=lan
uci set firewall.vpn_forwarding_lan_out.dest=vpn
uci commit firewall
/etc/init.d/firewall reload

11.
Три файла, что были ранее в п. 3, закидываем по адресу /etc/config/openvpn
Имена файлов:
ca.crt
tlsauth.key
userpass.txt

Это можно сделать через софтину WinSCP, по протоколу SCP. Помним, что для всех маршрутов ca.crt и tlsauth.key - это одни и те же файлы. А вот userpass.txt разный для каждого маршрута. В каждом роутере файл userpass.txt свой. Это если у вас много ВПНКИ-роутеров.

12.
Очевидно туннель у вас уже работает по протоколу РРтР, но херово. (А иначе бы ты в настройку опенвипиенки на опенвээртэшке не полез. ;) ) Теперь в настройках РРтР можно с сервера msk.vpnki.ru убрать ru. Выключить интерфейс, потом restart для ovpn интерфейса. Должен заработать туннель уже на OpenVPN, что можно проверить на сайте в "состояниях туннелей". Таким же образом можно переходить назад. Если же оставить запуск автоматом для обоих интерфейсов, то хорошего ничего не будет. При достаточной смекалке можно удаленно перенастроить роутер с РРТР на OpenVPN, не перегружая его gsm-розетками и не выезжая на место его установки.

14.
Не забываем про Статические Маршруты в ВПНКИ-роутерах.
Без них связи не будет.
В кажом из двух роутеров прописываем маршруты: (для Хаза)
- к сети 172.16.0.0. маска /16, шлюз 172.16.0.1
- к своей удаленной сети 192.168.Сеть.Дача, маска /24, шлюз 172.16.0.1

Если ВПНКИ-роутеры подключены к основным роутерам, раздающим инет (подключение должно быть из LAN-порта основного роутера в LAN-порт ВПНКИ-роутера), то там тоже нужно прописать два статических мрашрута:
- к сети 172.16.0.0. маска /16, шлюз 192.168.Ваш_Впнки.Роутер_на_хазе
- к своей удаленной сети 192.168.Сеть.Дача, маска /24,
шлюз 192.168.Ваш_Впнки.Роутер_на_хазе

Для тех кто не одупляет как пользоваться консольным uCI, а привык к web-интерфейсу LuCI я понаснимаю скрин-шотов того, что получилось.

15.
Скрипты
Так же в систему надо вставить скрипты:
- перегрузка интерфейса по отсутствию пинга на шлюз сервер ВПНКИ, 172..16.хх.хх
- перегрузка роутера по отсутствию пинга на инет, скажем на гугл 8.8.8.8
- перегрузка роутера по шедулеру раз в сутки
- прописать настройки для трех светодиодов, чтобы было визуально видно:
--- связь роутера с сервером ВПНКИ на , 172..16.хх.хх
--- связь вашего роутера с другим вашим роутером, т.е. рабочий поднятый туннель
--- RX-TX данные по туннелю, чтоб диоды красиво мигали в момент обмена данными.

® XamleTT, 2021.02.07

Extra-read:
openwrt.org/docs/guide-user/services/vpn/openvpn/start

Скрины для web-интерфейса LuCI в PDF-файле, вложенном внизу.

Вложенный файл:

Имя файла: OpenVPN_at..._Pub.pdf
Размер файла:689 KB
Вложения:
Спасибо сказали: admin

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
07 фев 2021 13:42 #6586 от admin
admin ответил в теме Ставим OpenVPN на OpenWRT для VPNKI.ru
Ну круто! Спасибо за гайд! Думаю он поможет владельцам OpenWRT

если все заработало - нажмите на баннеры!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
10 фев 2021 02:41 - 10 фев 2021 03:11 #6719 от Mast
Mast ответил в теме Ставим OpenVPN на OpenWRT для VPNKI.ru
Скоро на сайте vpnki.ru появится выбор TCP или UDP для подключения по протоколу OpenVPN.

Процесс настройки OpenWRT на протокол OpenVPN-TCP аналогичен процессу настройки на OpenVPN-UDP, описанном постом выше.

Понятно, что в настройках сам протокол должен быть выбран или UDP или TCP соответственно.
И правильно указан выданный вам номер порта.

Но есть еще один нюанс:
это параметр
explicit_exit_notify
в файле
/etc/config/openvpn

Для UDP значение для сервера vpnki.ru должно быть 2
Для TCP параметр explicit_exit_notify должен ваще отсутствовать в конфиге

Пример правильного, рабочего, проверенного UDP-конфига
config openvpn 'ovpnki'
option verb '3'
option client '1'
option remote 'msk.vpnki.ru'
option cipher 'AES-128-CBC'
option ns_cert_type 'server'
option key_direction '1'
option dev 'tun'
option reneg_sec '0'
option ca '/etc/openvpn/ca.crt'
option tls_auth '/etc/openvpn/tlsauth.key'
option auth_user_pass '/etc/openvpn/userpass.txt'
option enabled '1'
option port 'ВЫДАННЫЙ-ВАМ-НОМЕР-ПОРТА'
option proto 'udp'
option explicit_exit_notify '2'

Пример правильного, рабочего, проверенного TCP-конфига
config openvpn 'ovpnki'
option verb '3'
option client '1'
option remote 'msk.vpnki.ru'
option cipher 'AES-128-CBC'
option ns_cert_type 'server'
option key_direction '1'
option dev 'tun'
option reneg_sec '0'
option ca '/etc/openvpn/ca.crt'
option tls_auth '/etc/openvpn/tlsauth.key'
option auth_user_pass '/etc/openvpn/userpass.txt'
option enabled '1'
option port 'ВЫДАННЫЙ-ВАМ-НОМЕР-ПОРТА'
option proto 'udp'

Пример НЕ-правильного, НЕ-рабочего, проверенного TCP-конфига
config openvpn 'ovpnki'
option verb '3'
option client '1'
option remote 'msk.vpnki.ru'
option cipher 'AES-128-CBC'
option ns_cert_type 'server'
option key_direction '1'
option dev 'tun'
option reneg_sec '0'
option ca '/etc/openvpn/ca.crt'
option tls_auth '/etc/openvpn/tlsauth.key'
option auth_user_pass '/etc/openvpn/userpass.txt'
option enabled '1'
option port 'ВЫДАННЫЙ-ВАМ-НОМЕР-ПОРТА'
option proto 'udp'
option explicit_exit_notify

P.S.
Если вы с чистого листа настроите протокол TCP через uCI - все будет в порядке.
Но если вы перейдёте с протокола UDP на протокол TCP через перенастройку в web-интерфейсе LuCi, то (возможно!) в конфиге останется пустой параметр explicit_exit_notify, который не даст установить соединение по ТСР.

Даже если c нуля настраиваете OpenVPN через web-интерфейсе LuCi не забывайте в puTTy сперва выполнить команду:
echo > /etc/config/openvpn
и очистить конфиг-файл от всякого мусора, в виде примеров.
Эти примеры входят в комплект пакета luci-app-openvpn и поставляются вам вместе с ним из репо.
Последнее редактирование: 10 фев 2021 03:11 от Mast.
Спасибо сказали: admin

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.