Анонимность в интернете своими руками. Подключение клиентов OpenVPN к SoftEther VPN Server.

Все настройки выполнены в 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

На этом всё.

Вы можите оставить комментарий, или поставить трэкбек со своего сайта.

Написать комментарий

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>