Ставим OpenVPN на OpenWRT для туннельного сервиса VPNKI.ru
by XamleTT
Дано:
- 2 роутера. Оба с OpenWRT
- сеть на Хазе 192.168.1.0
- сеть на Даче 192.168.2.0
Цель:
- создать ВПН-туннель с Дачи на Хазу
Задача:
- просто вводить в компе Хазы IP-адрес дачного устройства и попадать на это устройство, не взирая на Серые IP с обеих сторон, NAT, Firewall и прочую муть
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
</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)
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 данные по туннелю, чтоб диоды красиво мигали в момент обмена данными.
P.S.
Если вы с чистого листа настроите протокол TCP через uCI - все будет в порядке.
Но если вы перейдёте с протокола UDP на протокол TCP через перенастройку в web-интерфейсе LuCi, то (возможно!) в конфиге останется пустой параметр explicit_exit_notify, который не даст установить соединение по ТСР.
Даже если c нуля настраиваете OpenVPN через web-интерфейсе LuCi не забывайте в puTTy сперва выполнить команду:
echo > /etc/config/openvpn
и очистить конфиг-файл от всякого мусора, в виде примеров.
Эти примеры входят в комплект пакета luci-app-openvpn и поставляются вам вместе с ним из репо.
Последнее редактирование: 3 года 9 мес. назад пользователем Mast.
Спасибо сказали: admin
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Добрый день!
Настроил все по инструкции через openvpn, так как через PPTP очень медленная скорость (видимо из-за мобильного оператора)
Но не подключается openvpn, в статусе Started - нет (фото прилагаю)
Проверил и даже заново настроил конфиг, пробовал и TCP и UDP порты,
Какие еще могут быть методы диагностики? (сертификат, логин пароль, порты проверяю)
Вложения:
Спасибо сказали: DenRazBoy
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Вчера весь день копался, сегодня в 5ый раз перенастраивая таки обнаружил косяк:
Мы в конфиге ссылаемся на tls.key
uci set openvpn.ovpnki.tls_auth=/etc/openvpn/tls.key
А в папку кладём tlsauth.key
Вот и вся проблема. А теперь сижу пытаюсь подружить телефон с роутером.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.