Ще инсталираме и настроим OpenConnect VPN сървър на Linux. Ще инсталираме VPN клиент на Linux, Windows, MacOS и Android. Ще тестваме скоростта на VPN връзката. И ще подобрим скоростта на VPN връзката с алгоритъм за контрол на претоварването от Google.

Изисквания

За да следвате това ръководство, ще ви трябват:

  • Виртуален сървър VPS/VDS с Linux операционна система (Debian).
  • Домейнно име (например, vpn.yourdomain.com) и SSL/TLS сертификат за домейнно име, за да активирате HTTPS за OpenConnect VPN.

Ако някое изискване не е изпълнено, следвайте инструкциите на следния линк: „Преди инсталирането на OpenConnect VPN„.

Инсталиране и настройка на OpenConnect VPN сървър

Инсталация на Linux (Debian)

Инсталирайте OpenConnect VPN сървър:

apt install ocserv

Можете проверить статус на OpenConnect VPN сървъра, като използвате следната команда:

systemctl status ocserv

След инсталирането на OpenConnect VPN сървъра се стартира автоматично. Ако автоматичното стартиране е успешно, статусът ще бъде active (running):

Състояние на OpenConnect VPN сървъра

По подразбиране OpenConnect VPN сървърът слуша на протоколите TCP и UDP порт 443 (виж горната илюстрация).

Ръчно стартиране, спиране, рестартиране

За да стартирате OpenConnect VPN сървър ръчно:

systemctl start ocserv

За да спрете ръчно OpenConnect VPN сървъра:

systemctl stop ocserv

За презареждане:

systemctl restart ocserv

Конфигурационният файл /etc/ocserv/ocserv.conf

Редактираме конфигурационния файл на OpenConnect VPN сървъра, който се нарича /etc/ocserv/ocserv.conf.

Изключване на аутентикацията на VPN клиентите с използване на потребителски акаунти на операционната система. За целта ще намерим реда: „

auth = "pam[gid-min=1000]"

И закоментираме я, т.е. добавяме символ # в началото на реда:

#auth = "pam[gid-min=1000]"

С помощта на инструмента ocpasswd ще създадем потребителски акаунти (потребителско име/парола) за VPN клиентите. Тези акаунти ще бъдат съхранени в кодиран вид във файла с пароли /etc/ocserv/ocpasswd. Ще се занимаем с това в следващата част от статията, а докато това продължаваме с редактирането на конфигурационния файл.

Включете аутентикация на VPN клиентите по парол и посочете пътя към файла с пароли:

auth = "plain[passwd=/etc/ocserv/ocpasswd]"

Нека не използваме UDP протокола, затова търсим низ:

udp-port = 443

И коментираме я:

#udp-port = 443

Нека посочим пътищата към SSL/TLS сертификата, който ще се използва от сървъра на OpenConnect VPN. За целта ще намерим следните два реда:

server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem
server-key = /etc/ssl/private/ssl-cert-snakeoil.key

Поправете пътищата към SSL/TLS сертификата в тези редове:

server-cert = /etc/letsencrypt/live/vpn.yourdomain.com/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.yourdomain.com/privkey.pem

Keepalive пакетите са специални мрежови пакети, които помагат да се поддържа активна връзка и предотвратяват автоматично прекъсване на връзката. По подразбиране keepalive пакетите се изпращат на всеки 300 секунди (5 минути). За да намалите вероятността от прекъсване на VPN връзката, можете да намалите периода на изпращане на keepalive пакетите до 30 секунди:

keepalive = 30

MTU (Максимална предавателна единица) откриване – това е процесът на определяне на максималния размер на данните (MTU), които могат да бъдат предадени през мрежова връзка между две устройства. Включваме MTU откриване, като променим стойността false на true:“

try-mtu-discovery = true

С помощта на двата параметъра idle-timeout и mobile-idle-timeout може да се зададе времето в секунди, през което клиентът може да бъде неактивен, преди да бъде изключен. По подразбиране, idle-timeout е 1200 секунди (20 минути), mobile-idle-timeout е 1800 секунди (30 минути). За да задържите клиента на връзка за ограничено време, просто коментирайте тези параметри.

Установете по подразбиране домейн vpn.yourdomain.com:

default-domain = vpn.yourdomain.com

За да избегнем конфликт на IP адресите на VPN мрежата с друга мрежа, намираме следния ред:

ipv4-network = 192.168.1.0

И я го привеждам до следния вид:

ipv4-network = 10.10.10.0

Така, сменихме много популярния диапазон IP адреси 192.168.1.0/24 с непопулярния 10.10.10.0/24.

Сървърът за клиенти ще бъде зададен като default gateway. За целта, в конфигурационния файл ще коментираме всички route маршрути, така че да изглежда по следния начин:

#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default

#no-route = 192.168.5.0/255.255.255.0

Ще използваме само протокола TLS 1.3. Затова ще деактивираме предишните версии на протокола TLS. За да го направим това, намираме реда:

tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128"

И я го привеждам до вида:

tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-TLS1.2"

Запазваме промените в конфигурационния файл и рестартираме OpenConnect VPN сървъра:

systemctl restart ocserv

VPN клиенти профили

С помощта на инструмента ocpasswd ще създадем потребителски акаунт (потребителско име/парола) за VPN клиента. Например, избираме потребителско име vpnuser, а файла с паролите, където ще се съхраняват кодирани потребителски акаунти на VPN клиентите, е /etc/ocserv/ocpasswd. Въвеждаме командата:

ocpasswd -c /etc/ocserv/ocpasswd vpnuser

Следващата стъпка е да въведете парола за вход с потребителско име vpnuser и да го повторите.

За да нулирате паролата за логин vpnuser, просто въведете горепосочената команда отново.

За да изтриете акаунта с потребителско име vpnuser, въведете командата:

ocpasswd -c /etc/ocserv/ocpasswd -d vpnuser

Включване на Network Address Translation (NAT)

Включете Network Address Translation (NAT), което ще позволи на Linux сървъра с VPN сървър да действа като портал за VPN клиенти, като преобразува техните частни IP адреси в общодостъпен IP адрес на Linux сървъра при комуникация с Интернет.

Първо ще активираме IP Forwarding. Това е възможността на мрежово устройство, което работи като портал между две мрежи, да препраща мрежовия трафик от една мрежа към друга. За да го направим, във файла /etc/sysctl.conf ще разкоментираме реда (т.е. ще премахнем символа # в началото на реда), така че да изглежда по следния начин:

net.ipv4.ip_forward=1
Включване на IP Forwarding

Запазваме файла. За да приложим промените, въведете командата:

sysctl -p

Сега ще научим името на мрежовия интерфейс, свързан с Интернет:

ifconfig

Имам такова мрежово суинтерфейсно име – eth0:

Команда ifconfig

Ще настроим NAT правило, за което въведете следната команда:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

където eth0 е името на мрежовия интерфейс, свързан с интернет.

За да запазим промените в iptables след рестартиране на Linux сървъра, изпълнете командата:

iptables-save > /etc/iptables/rules.v4

Готово! Сега OpenConnect VPN сървърът е готов да приема клиентски връзки.

Инсталиране на VPN клиент в Linux, Windows, MacOS, Android и iOS

Инсталиране на Linux (Debian OS)

VPN клиент в Linux (ОС Debian) се нарича OpenConnect. Инсталираме клиента с командата:

apt install openconnect

Стартирайте OpenConnect VPN клиента и се свържете със сървъра vpn.yourdomain.com, на порт 443:

openconnect -b vpn.yourdomain.com:443

-b – за стартиране на OpenConnect VPN клиента във фонов режим (background mode).“

След като въведете потребителско име и парола, VPN клиентът установява VPN връзка. Използва се протоколът TLS 1.3. OpenConnect VPN клиентът продължава да работи в фонов режим.

Стартиране на OpenConnect VPN клиента

За да спрете OpenConnect VPN клиента, въведете командата:

pkill openconnect

Инсталация на Windows и MacOS

VPN клиент в Windows/MacOS, который поддерживает TLS 1.3 – это Cisco Secure Client версии 5. Нам понадобится только модуль Core & AnyConnect VPN:

Cisco Secure Client версия 5

След като инсталирате Cisco Secure Client версия 5 и стартирате AnyConnect VPN клиент, въведете https://vpn.yourdomain.com, след което въведете потребителско име и парола на VPN клиента:

Стартиране на AnyConnect VPN клиента в Windows

След като установите VPN връзка, можете да видите информация за транспортната мрежа и използвания протокол TLS 1.3 в прозореца Допълнителни настройки.

AnyConnect VPN поддържа протокол TLS 1.3.

Инсталация на Android и iOS

Търсим приложението Cisco Secure Client в Google Play или App Store, инсталираме го и го стартираме.

Cisco Secure Client за Android

Добавяме нова връзка. В полето Адрес на сървъра въвеждаме адреса на OpenConnect VPN сървъра (vpn.yourdomain.com) и натискаме бутона Готово.

Cisco Secure Client за Android. Адрес на OpenConnect VPN сървъра.

Следващото, натиснете върху AnyConnect VPN за да се свържете. И въведете потребителско име и парола на VPN клиента.

Cisco Secure Client за Android. Потребителско име и парола за връзка с OpenConnect VPN.

След установяването на VPN връзка, като натиснете в приложението върху VPN Статистика, можете да видите информация за транспортната мрежа и използваният протокол TLS 1.3.

Скорост на VPN връзката

Тестваме скоростта на VPN връзката с помощта на https://www.speedtest.net/.

При мен липсва VPN, резултатите са следните:

Speedtest на връзката без VPN

С включен VPN резултатите са следните:

Speedtest на връзката с VPN

Нека оптимизираме производителността на TCP връзките, като включим BBR (Bottleneck Bandwidth and RTT) – алгоритъм за контрол на претоварването, разработен от Google. BBR има няколко предимства пред други алгоритми за контрол на претоварването, като Cubic или Reno.

За да разберете текущия използван алгоритъм за контрол на претоварването, използвайте командата:

sysctl net.ipv4.tcp_congestion_control

Променим текущия алгоритъм за контрол на претоварването на BBR. За целта добавяме следните два реда във файла /etc/sysctl.conf:

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

Запазваме файла. За да приложим промените, въведете командата:

sysctl -p

При включенном VPN и включенном TCP BBR, скорость получилась такой: „

Скоростен тест на връзката с VPN с активиран TCP BBR

Актуализиране на SSL/TLS сертификат

Ако използвате SSL/TLS сертификат от Let’s Encrypt, то командата за актуализиране на сертификата е:

certbot renew

След като актуализирате SSL/TLS сертификата, трябва да рестартирате сървъра на OpenConnect VPN:

systemctl restart ocserv

За автоматизиране на тези две действия (обновяване на сертификата и рестартиране на VPN сървъра), ще добавим задача в crontab на потребителя root. За целта, като потребител root, въведете командата:

crontab -e

И добавете следващия ред:

30 2 * * 1 /usr/bin/certbot renew --quiet && /bin/systemctl restart ocserv

&& – оператор, който указва, че следващата команда ще бъде изпълнена, ако предходната команда завърши успешно.

Заключения

Надявам се, че това ръководство ви помогна да инсталирате и настроите OpenConnect VPN. Ако имате въпроси, моля, питайте в коментарите под статията. Ще е интересно!

Коментари

Вашият коментар

Этот сайт защищен reCAPTCHA, и к нему применяются Google Политика конфиденциальности и Условия использования.

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.