TG Telegram Group & Channel
ServerAdmin.ru | United States America (US)
Create: Update:

Тема VPN серверов всё актуальнее день ото дня. Покажу, как быстро настроить VPN сервер OpenConnect. В чём его особенности, я рассказывал в отдельной заметке, не буду повторяться. Кратко поясню, что это VPN с использованием TLS шифрования, что делает его похожим на HTTPS трафик. Сразу скажу, что это не означает, что его нельзя отличить от реального трафика к веб сайтам. Можно, но пока такая блокировка не особо практикуется, так что можно пользоваться.

Я установлю OpenConnect на Debian 12 с использованием сертификатов от Let's Encrypt и аутентификацией пользователей через связку логин/пароль. Это максимально простая настройка, в которой вы получаете полнофункциональный VPN сервер с возможностью управления маршрутизации клиентов централизованно на сервере.

Подготовимся и получим сертификаты:

# apt install certbot
# certbot certonly -d 333271.simplecloud.ru --standalone

В директории /etc/letsencrypt/live/333271.simplecloud.ru будут файлы fullchain.pem и privkey.pem, которые нам понадобятся позже.

Устанавливаем OpenConnect из пакетов:

# apt install ocserv

Рисуем ему примерно такой конфиг /etc/ocserv/ocserv.conf. Показываю только те параметры, что поменял. Остальное отставил по умолчанию, как было:

# включаем аутентификацию по данным из файла
auth = "plain[passwd=/etc/ocserv/passwd]"
# указываем сертификат от let's encrypt
server-cert = /etc/letsencrypt/live/333271.simplecloud.ru/fullchain.pem
server-key = /etc/letsencrypt/live/333271.simplecloud.ru/privkey.pem
# указываем подсеть для внутренней адресации в туннеле
ipv4-network = 192.168.155.0
# заворачиваем в туннель все dns запросы и резолвим их через 1.1.1.1
tunnel-all-dns = true
dns = 1.1.1.1
# заворачиваем весь трафик в VPN туннель
route = default
# эти 2 подсети отправляем мимо туннеля
no-route = 192.168.13.0/255.255.255.0
no-route = 10.20.1.0/255.255.255.0


Файл конфигурации хорошо прокомментирован, нетрудно разобраться. Здесь я весь трафик отправляю в туннель. А вот такая настройка:

route = 10.10.10.0/255.255.255.0
route = 1.2.3.4/255.255.255.255

Отправит в туннель только указанные подсети.

Теперь создаём файл с учётками и добавляем пользователя zerox:

# ocpasswd -c /etc/ocserv/passwd zerox

Перезапускаем службу и проверяем её работу:

# systemctl restart ocserv
# systemctl status ocserv

Логи смотрим либо в /var/log/syslog, либо в systemd, если syslog отключен:

# journalctl -f -u ocserv

В завершении важная настройка, которую некоторые либо забывают, либо не понимают, что это такое и для чего. По умолчанию на сервере не работает перенаправление пакетов с одного сетевого интерфейса на другой. В данном случае с VPN интерфейса на WAN. Нам нужно включить эту настройку. Для этого раскомментируем в файле /etc/sysctl.conf параметр:

net.ipv4.ip_forward = 1

И применим его:

# sysctl -p

Теперь нам нужно настроить NAT, чтобы клиенты VPN сети могли выходить в интернет. Сам OpenConnect эти вопросы не решает. Для этого воспользуемся старым добрым iptables:

# apt install iptables
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Eth0 - WAN интерфейс, который смотрит в интернет.

Теперь идём на клиент, качаем клиентское приложение:

https://gui.openconnect-vpn.net/download/

Запускаем приложение, добавляем новый профиль, указав единственный параметр gateway с url сервера. В моём случае https://333271.simplecloud.ru. Далее подключаемся с использованием созданного пользователя и пароля.

Нужно не забыть настроить hook в certbot на перезапуск сервера после обновления сертификата:

post_hook = systemctl restart ocserv

Ну и не забудьте применить правила файрвола после перезапуска сервера. Подробно не останавливаюсь на этих вопросах, так как уже лимит на объём заметки исчерпан.

Получился удобный многофункциональный VPN сервер для решения различных прикладных задач маршрутизации трафика и доступа к корпоративным ресурсам.

Если кто-то пользуется данным сервером, скажите, сталкивались ли с блокировками протокола этого VPN сервера на уровне провайдеров.

#vpn

Тема VPN серверов всё актуальнее день ото дня. Покажу, как быстро настроить VPN сервер OpenConnect. В чём его особенности, я рассказывал в отдельной заметке, не буду повторяться. Кратко поясню, что это VPN с использованием TLS шифрования, что делает его похожим на HTTPS трафик. Сразу скажу, что это не означает, что его нельзя отличить от реального трафика к веб сайтам. Можно, но пока такая блокировка не особо практикуется, так что можно пользоваться.

Я установлю OpenConnect на Debian 12 с использованием сертификатов от Let's Encrypt и аутентификацией пользователей через связку логин/пароль. Это максимально простая настройка, в которой вы получаете полнофункциональный VPN сервер с возможностью управления маршрутизации клиентов централизованно на сервере.

Подготовимся и получим сертификаты:

# apt install certbot
# certbot certonly -d 333271.simplecloud.ru --standalone

В директории /etc/letsencrypt/live/333271.simplecloud.ru будут файлы fullchain.pem и privkey.pem, которые нам понадобятся позже.

Устанавливаем OpenConnect из пакетов:

# apt install ocserv

Рисуем ему примерно такой конфиг /etc/ocserv/ocserv.conf. Показываю только те параметры, что поменял. Остальное отставил по умолчанию, как было:

# включаем аутентификацию по данным из файла
auth = "plain[passwd=/etc/ocserv/passwd]"
# указываем сертификат от let's encrypt
server-cert = /etc/letsencrypt/live/333271.simplecloud.ru/fullchain.pem
server-key = /etc/letsencrypt/live/333271.simplecloud.ru/privkey.pem
# указываем подсеть для внутренней адресации в туннеле
ipv4-network = 192.168.155.0
# заворачиваем в туннель все dns запросы и резолвим их через 1.1.1.1
tunnel-all-dns = true
dns = 1.1.1.1
# заворачиваем весь трафик в VPN туннель
route = default
# эти 2 подсети отправляем мимо туннеля
no-route = 192.168.13.0/255.255.255.0
no-route = 10.20.1.0/255.255.255.0


Файл конфигурации хорошо прокомментирован, нетрудно разобраться. Здесь я весь трафик отправляю в туннель. А вот такая настройка:

route = 10.10.10.0/255.255.255.0
route = 1.2.3.4/255.255.255.255

Отправит в туннель только указанные подсети.

Теперь создаём файл с учётками и добавляем пользователя zerox:

# ocpasswd -c /etc/ocserv/passwd zerox

Перезапускаем службу и проверяем её работу:

# systemctl restart ocserv
# systemctl status ocserv

Логи смотрим либо в /var/log/syslog, либо в systemd, если syslog отключен:

# journalctl -f -u ocserv

В завершении важная настройка, которую некоторые либо забывают, либо не понимают, что это такое и для чего. По умолчанию на сервере не работает перенаправление пакетов с одного сетевого интерфейса на другой. В данном случае с VPN интерфейса на WAN. Нам нужно включить эту настройку. Для этого раскомментируем в файле /etc/sysctl.conf параметр:

net.ipv4.ip_forward = 1

И применим его:

# sysctl -p

Теперь нам нужно настроить NAT, чтобы клиенты VPN сети могли выходить в интернет. Сам OpenConnect эти вопросы не решает. Для этого воспользуемся старым добрым iptables:

# apt install iptables
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Eth0 - WAN интерфейс, который смотрит в интернет.

Теперь идём на клиент, качаем клиентское приложение:

https://gui.openconnect-vpn.net/download/

Запускаем приложение, добавляем новый профиль, указав единственный параметр gateway с url сервера. В моём случае https://333271.simplecloud.ru. Далее подключаемся с использованием созданного пользователя и пароля.

Нужно не забыть настроить hook в certbot на перезапуск сервера после обновления сертификата:

post_hook = systemctl restart ocserv

Ну и не забудьте применить правила файрвола после перезапуска сервера. Подробно не останавливаюсь на этих вопросах, так как уже лимит на объём заметки исчерпан.

Получился удобный многофункциональный VPN сервер для решения различных прикладных задач маршрутизации трафика и доступа к корпоративным ресурсам.

Если кто-то пользуется данным сервером, скажите, сталкивались ли с блокировками протокола этого VPN сервера на уровне провайдеров.

#vpn
2👍120👎5


>>Click here to continue<<

ServerAdmin.ru






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)