Все настройки выполнены в VPS от hostsailor.com
Текст данной статьи подразумевает, что вы уже знакомы со статьями по установке SoftEther VPN Server и подключению к нему клиентов SoftEther.
Для подключения OVPN клиентов можно использовать уже имеющийся Virtual HUB, но я рекомендую создавать отдельный хаб для каждой технологии подключения.
Зайдем в SoftEther VPN Manager и создадим новый хаб.
Заполним имя хаба и пароль администратора хаба
Нажмём ОК. Хаб появится в списке
Встанем на него и нажмем «Manage Virtual Hub». В открывшемся окне нажмём «Virtual NAT and Virtual DHCP Server (SecureNAT)». Убедитесь что SecureNAT выключен (кнопка Disable SecureNAT серая)
И нажмите «SecureNAT Configurations»
Сделайте настройки как на скриншоте. Обратите внимание, для хаба, созданного при установке SoftEther VPN Server мы использовали подсеть 10.8.0.0/24, здесь мы будем использовать подсеть 10.8.1.0/24. Если вы будете делать еще хабы, также делайте им отдельную подсеть.
Нажмём ОК и закроем это окно. В окне «Virtual NAT and Virtual DHCP Server (SecureNAT) Setting» нажмём Exit.
Сразу создадим пользователя для хаба.
В открывшемся окне нажмём «New». Заполним атрибуты пользователя.
Обратите внимание, что мы настраиваем аутентификацию по логину и паролю. Сертификаты делать не нужно.
Жмём ОК. И дальше в окнах Exit пока не вернётесь с окну SoftEther VPN Manager.
Теперь создадим Local Bridge для нового хаба
При входе он по традиции ругнётся на отсутствие физического адаптера. Жмём ОК. Выберем наш новый хаб, придумаем имя новому Local Bridge и созадим его.
Командой
ifconfig tap_se_ovpn
проверим, что Local Bridge создан и присутствует в системе
Откроем файл /etc/dnsmasq.conf и к уже имеющимся строчкам добавим новые:
interface=tap_se_ovpn dhcp-range=tap_se_ovpn,10.8.1.2,10.8.1.200,12h dhcp-option=tap_se_ovpn,3,10.8.1.1 server=8.8.8.8
Пробуем перезапустить dnsmasq
systemctl restart dnsmasq
и смотрим состояние
systemctl status dnsmasq
Должно быть типа такого:
Если есть ошибка «warning: interface tap_softether does not currently exist», то либо вы ошиблись где-то в настройках ранее, либо не запущен VPN-сервер. Как запустить, написано в статье.
Если ошибка «failed to bind DHCP server socket: Address already in use», то смотрим вывод команды
netstat -anlp | grep -w LISTEN
Скорее всего увидим что-то типа
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/init tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 19819/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 110/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 196/sendmail: accep tcp6 0 0 :::111 :::* LISTEN 15492/rpcbind tcp6 0 0 :::80 :::* LISTEN 104/httpd tcp6 0 0 :::53 :::* LISTEN 19819/dnsmasq tcp6 0 0 :::22 :::* LISTEN 110/sshd
Видим, что висит процесс dnsmasq и занимает интерфейс. Запоминаем число перед /dnsmasq (в моём случае это 19819) и используем его в команде
kill 19819
После этого пробуем
systemctl start dnsmasq systemctl status dnsmasq
Всё должно стать хорошо.
Теперь открываем наш скрипт запуска VPN-сервера /etc/rc.d/init.d/sevpnserver и редактируем по образцу (можно просто очистить содержимое и вставить отсюда):
#!/bin/sh # # chkconfig: 2345 20 80 # description: SoftEther VPN Server # # # # DAEMON=/etc/sevpn/vpnserver/vpnserver LOCK=/var/lock/vpnserver/vpnserver TAP_ADDR=10.8.0.1 TAP_ADDR2=10.8.1.1 test -x $DAEMON || exit 0 case "$1" in start) echo Starting SoftEther VPN Server... $DAEMON start touch $LOCK sleep 3 /sbin/ifconfig tap_softether $TAP_ADDR /sbin/ifconfig tap_softether $TAP_ADDR2 sleep 3 systemctl restart dnsmasq ;; stop) echo Stopping SoftEther VPN Server... $DAEMON stop rm $LOCK ;; restart|reload) echo Reloading SoftEther VPN Server... $DAEMON stop sleep 5 $DAEMON start sleep 3 /sbin/ifconfig tap_softether $TAP_ADDR /sbin/ifconfig tap_softether $TAP_ADDR2 sleep 3 systemctl restart dnsmasq ;; *) echo Usage: $0 "{start|stop|restart}" exit 1 esac exit 0
Сохраняем.
Теперь допишем файл /root/ipt-set. Откроем его для редактирования и внесем дополнения для сети 10.8.1.0/24
#!/bin/sh IF_EXT="venet0" IF_VPN="tap_softether" IF_OVPN="tap_se_ovpn" VPN_PORT="443" IPT="/sbin/iptables" IPT6="/sbin/ip6tables" IP_EXT="123.123.123.123" # flush $IPT --flush $IPT -t nat --flush $IPT -t mangle --flush $IPT -X $IPT6 --flush # loopback $IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT # default $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP $IPT6 -P INPUT DROP $IPT6 -P OUTPUT DROP $IPT6 -P FORWARD DROP # allow forwarding echo 1 > /proc/sys/net/ipv4/ip_forward # NAT # ######################################### # SNAT - local users to out internet $IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source $IP_EXT $IPT -t nat -A POSTROUTING -s 10.8.1.0/24 -j SNAT --to-source $IP_EXT # INPUT chain # ######################################### $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # ssh $IPT -A INPUT -i $IF_EXT -p tcp --dport 22 -j ACCEPT # DNS $IPT -A INPUT -i $IF_VPN -p udp --dport 53 -s 10.8.0.0/24 -j ACCEPT $IPT -A INPUT -i $IF_OVPN -p udp --dport 53 -s 10.8.1.0/24 -j ACCEPT # vpn $IPT -A INPUT -i $IF_VPN -p icmp -s 10.8.0.0/24 -j ACCEPT $IPT -A INPUT -i $IF_OVPN -p icmp -s 10.8.1.0/24 -j ACCEPT $IPT -A INPUT -i $IF_EXT -p tcp --dport $VPN_PORT -j ACCEPT $IPT -A INPUT -p udp --dport 500 -j ACCEPT $IPT -A INPUT -p udp --dport 4500 -j ACCEPT $IPT -N syn_flood $IPT -A INPUT -p tcp --syn -j syn_flood $IPT -A syn_flood -m limit --limit 500/s --limit-burst 2000 -j RETURN $IPT -A syn_flood -j DROP # FORWARD chain # ######################################### $IPT -A FORWARD -i $IF_VPN -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -i $IF_EXT -o $IF_VPN -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -i $IF_OVPN -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -i $IF_EXT -o $IF_OVPN -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j ACCEPT $IPT -A FORWARD -s 10.8.1.0/24 -d 10.8.1.0/24 -j ACCEPT #IPT -A FORWARD -s 10.8.0.0/24 -d 10.8.1.0/24 -j ACCEPT #IPT -A FORWARD -s 10.8.1.0/24 -d 10.8.0.0/24 -j ACCEPT # OUTPUT chain # ######################################### $IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Обратите внимание, что в секции # FORWARD chain закоментированны строки
#IPT -A FORWARD -s 10.8.0.0/24 -d 10.8.1.0/24 -j ACCEPT #IPT -A FORWARD -s 10.8.1.0/24 -d 10.8.0.0/24 -j ACCEPT
Т.е. внутри хабов клиенты друг друга видят, а между хабами нет. Если вы хотите, чтобы была связь между хабами, раскоментируйте эти строки (убрать символ # в начале строк).
После сохранения файла выполните команду
/root/ipt-set
чтобы применить настройки.
Перезапустим SoftEther VPN server
/etc/rc.d/init.d/sevpnserver stop /etc/rc.d/init.d/sevpnserver star
Включим SecureNAT для нашегог нового Virtual Hub
Теперь зайдем в окно настройки OpenVPN
Проверяем, что стоит галочка
И жмём кнопку генерации конфига для OpenVPN клиентов
Выбираем любой удобный путь для сохранения zip файла и распакуем его. Внутри будет два ovpn файла. Нам нужен тот, имя которого заканчивается на _l3.
Распакуем его из архива и отредактируем.
Найдём строчку
proto udp
и заменим на
proto tcp
Найдем строчку вида
remote megavpntest.softether.net 1194
и исправим в конце неё 1194 на 443.
Больше ничего менять не нужно. Можете прокрутить файл до конца и посмотреть, что сертификаты вставлены автоматически.
Сохраняем файл и используем его, как написано в статье про подключение клиентов к OpenVPN серверу.
При подключении вас попросят ввести логин и пароль клиента. Логин вводим вида <user>@<virtual_hub>. В моём случае будет
test_ovpn@OVPN_clients
На этом всё.