Настроить ОpenVpn сервера и клиента на Вики Мини 10
Татьяна Корешкова
2 года назад Обновлено
Подробная документация по настройке есть на официальном сайте и доступна по ссылке https://openvpn.net/community-resources/
Внимание!
1. Для установки OpenVpn могут потребоваться привилегии супер-пользователя sudo
2. На Вики Мини 10 версия клиента 2.66
OpenVpn корректно работает на Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS или Fedora.
Установите OpenVpn
Для ОС Linux перейдите на сайт https://github.com/Nyr/openvpn-install и скачайте скрипт.
Для ОС Windows на сайт https://openvpn.net/community-downloads/
Настройка OpenVPN на ОС Windows и ОС Linux схожа. Мы настраивали на примере Ubuntu.
Выполните следующие команды:
cd /root
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
Результат выполнения:
В папке /root появится openvpn-install.sh – основной скрипт для работы с OpenVPN
Добавьте клиентское подключение
Запустить скрипт openvpn-install.sh
Запустите скрипт openvpn-install.sh Выберите опцию Add a new client → Укажите наименование client.ovpn → Нажмите Enter
Клиентский конфиг добавится в папку /root/*client.ovpn
Далее файл нужно перенести на кассу одним из двух способов: через кассовую программу (перезагрузка не понадобится) и через сервисный режим (нужно будет перезагрузить):
- Добавить конфигурацию клиента на кассу Вики Мини 10 в кассовой программе:
Начиная с версии 11.0.2 в кассовой программе предусмотрен сценарий подключения в режиме VPN через USB-носитель.
Для этого вставьте USB-носитель с файлом client.ovpn в кассу → В кассовой программе перейдите в «Меню» → «Настройка» → «Сеть» → «OpenVpn» → Включите тумблер «Соединение установлено в положение»
Откроется окно выбора нужного конфигурационного файла (если файлов несколько). Выберите нужный.
Откроется окно с сообщением «Настройки OpenVPN изменены»
Касса в режиме работы с VPN-сервером.
Чтобы узнать текущий IP-адрес кассы перейдите в «Меню» → «Настройка» → «Сеть» → «OpenVpn»
- Добавить конфигурацию клиента на кассу Вики Мини 10 в сервисном режиме:
Перейдите в /opt → Создайте папку networks → Скопируйте в неё файл client.ovpn → Перезагрузите кассу
При ручном копировании профиля пользователя наименование файла должно быть client.ovpn
Настройте конфигурационный файл клиента
Параметры comp-lzo и mssfix сервер при создании client.ovpn не добавляет. Оба параметра рекомендуем включить в конфигурацию и клиента и сервера вручную.
Пример правильно настроенного конфига клиента:
client - говорим что мы подключаемся как клиент
dev tun - указываем такое же устройство, как и у vpn-сервера
proto udp - используем UDP, так как vpn-сервер тоже на UDP
remote *ip-адрес сервера* 1194 - указываем адрес vpn-сервера
resolv-retry infinite - резолвим VPN-сервер до бесконечности, полезно после потери соединения и подключения снова (например после suspend в ноутбуках)
nobind - не создаем постоянный порт для подключения клиента
comp-lzo - включаем LZO-компрессию трафика
mssfix – немного улучшает ping
persist-key - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно перечитывать сертификаты
persist-tun - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно пересоздавать TUN/TAP устройства
remote-cert-tls server
auth SHA512
cipher AES-256-CBC - используемый тип шифрования пакетов (должен совпадать с серверным)
ignore-unknown-option block-outside-dns
verb 3 - уровень логов от 0 до 11
<ca>
-----BEGIN CERTIFICATE-----
*сертификат, сгенерированный сервером автоматически*
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
*сертификат, сгенерированный сервером автоматически *
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
*ключ, сгенерированный сервером автоматически *
-----END PRIVATE KEY-----
</key>
<tls-crypt>
-----BEGIN OpenVPN Static key V1-----
*ключ, сгенерированный сервером автоматически *
-----END OpenVPN Static key V1-----
</tls-crypt>
Иногда бывают ситуации, когда нужно использовать OpenVPN и авторизацию не по ключам, а по логину и паролю. Можно так же использовать совместно, для увеличения безопасности оба этих метода. Для этого потребуется изменить конфигурационный файл сервера и клиента.
Добавляем в конфигурационный файл сервера следующие строки:
auth-user-pass-verify /etc/openvpn/verify.sh via - file - отвечает за авторизацию по логину паролю. При каждом подключении будет запускаться файл /etc/openvpn/verify.sh, который будет производить проверку.
client-cert-not-required - при проверке логина/пароля не будет запрашиваться проверка сертификата
username-as-common-name - позволяет использовать для дальнейшей идентификации клиента не CommonName (имя из предъявленного сертификата клиента), а введенный UserName.
tmp-dir /etc/openvpn/tmp - путь к временной папке, где будет создавать файл с переданным логином/паролем, который потом будет передаваться как аргумент в наш скрипт проверки для сверки с файлом паролей
script-security 2 – позволяет выполнять внешние скрипты
Если нужно дополнительно проверка сертификатов, тогда нужно будет убрать опцию client-cert-not-required
Cкрипт проверки verify.sh:
#!/bin/sh
USERS=`cat /etc/openvpn/user.pass`
vpn_verify() {
if [ ! $1 ] || [ ! $2 ]; then
#echo "No username or password: $*"
exit 1
fi
for i in $USERS; do
if [ "$i" = "$1:$2" ]; then
exit 0
fi
done
}
if [ ! $1 ] || [ ! -e $1 ]; then
exit 1
fi
vpn_verify `cat $1`
exit 1
При создании скрипта необходимо дать ему права на запуск (chmod u+x 777)
Далее следует создать файл /etc/openvpn/user.pass в котором будут храниться пароли пользователей, и указать логин и пароль в формате user:password. Учетные данные нескольких пользователей можно указать через пробел в формате user1:pass1 user2:pass2 ...
Настройте конфигурационный файл OpenVpn сервера
Для корректной работы созданного подключения следует правильно сконфигурировать OpenVPN сервер.
Конфиг находится в папке: /etc/openvpn/server/server.conf
Пример правильно настроенного конфига OpenVpn сервера:
local 203.0.113.42 - можете указать конкретный IP-адрес на котором надо слушать (например, если у вас несколько внешних сетевых интерфейсов)
или
local 0.0.0.0 - предпочтительно
port 1194 - порт который будет слушать
proto udp - используем UDP, так как он экономичнее по трафику, вы можете также указать TCP
dev tun - использовать управляемый IP-туннель, также возможно использовать "tap" (ethernet tunnel)
ca ca.crt - путь до сгенерированного нами файла корневого сертификата
cert server.crt - путь до сгенерированного файла сертификат сервера
key server.key - путь до сгенерированного нами файла приватного ключа сервера
dh dh.pem - путь до сгенерированного нами файла с параметрами Diffie Hellman (используется только для подключения через TLS-сервер)
auth SHA512
tls-crypt tc.key
topology subnet – параметр для экономии адресов
server 10.8.0.0 255.255.255.0 - выделяет IP-адреса с диапазоном "10.8.0.0-10.8.0.0.255", причем адрес "10.8.0.0.1" займет сам сервер, остальное для клиентов;
ifconfig-pool-persist ipp.txt - файл, в котором будут храниться связи "профиль клиента, выделенный ip-адрес", и после переподключения будет выдан снова прежний адрес;
keepalive 10 120 - устанавливаем количество секунд для ping и ping-restart соответственно (нужно для поддержания подключенного состояния между соединениями к VPN-серверу);
cipher AES-256-CBC - используемый тип шифрования пакетов
comp-lzo - включаем LZO-компрессию трафика (этот параметр должен быть включен в конфиг client.ovpn)
mssfix - немного улучшает ping
persist-key - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно
persist-tun - при получении сигнала SIGUSR1 или срабатывания ping-restart не нужно пересоздавать tun/tap устройства
verb 3 - уровень логов, от 0 до 11, детализация по нарастающей:
0 - только фатальные ошибки; 1 - загрузочная информация, информация о соединении, сетевые ошибки; 2,3 - TLS данные и маршрутная информация; 4 - показывает параметры; 5 - показывает 'RrWw' символы в консоли для каждого пакета, отправленные и принятые по TCP/UDP (caps) или tun/tab (lc); 6-11 - отладочная информация, повышающая детализацию лога;
crl-verify crl.pem
explicit-exit-notify
Представленные ниже строки необязательны, но в руководстве приведены для общего понимания, так как в базовом конфиге они присутствуют. Они не должны работать, поэтому стоит перед ними поставить символ # или удалить.
#push "dhcp-option DNS 8.8.8.8"
#push "dhcp-option DNS 8.8.4.4"
#push "block-outside-dns"
#user nobody - понижаем пользовательские привилегии VPN-сервера
#group nogroup - понижаем пользовательские привилегии VPN-сервера
#server-ipv6 fddd:1194:1194:1194::/64
#push "redirect-gateway def1 ipv6 bypass-dhcp"
Если вы настраиваете аутентификацию по логину и паролю, то добавляем в конфигурационный файл клиента следующие строки:
auth-user-pass c:\\vpn\\pass.txt
и создаём соответственно файл pass.txt, где будет находится логин и пароль в таком виде:
username
password
Если в параметре auth-user-pass убрать путь к файлу, будет запрашиваться логин/пароль.
Также можно избежать использования дополнительного файла для хранения паролей pass.txt, добавив в конфигурационный файл client.ovpn следующие строки после указания основных параметров:
<auth-user-pass>
login
password
</auth-user-pass>
На ОС Windows следует использовать следующий bat-скрипт:
@echo off
rem copy %1 C:\Users\Alex\OpenVPN\config\server
SETLOCAL EnableDelayedExpansion
set /A count=0
for /F "tokens=*" %%A in (%~1) do (
if !count!==1 (
set password=%%A
set /A count=2
)
if !count!==0 (
set username=%%A
set /A count=1
)
)
if "%username%"=="login" (
if "%password%"=="password" (
exit 0
)
)
exit 1
Логин и пароль следует указывать непосредственно в скрипте в значениях "%username%"=="login" и "%password%"=="password"



Комментариев 1
Авторизуйтесь, чтобы оставить свой комментарий