OpenConnect и haproxy

Ответить
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

OpenConnect и haproxy

Сообщение ya »

systemd-файл

Код: Выделить всё

[Unit]
Description=OpenConnect SSL VPN server
Documentation=man:ocserv(8)
After=network-online.target

[Service]
PrivateTmp=true
PIDFile=/run/ocserv.pid
Type=simple
ExecStart=/usr/sbin/ocserv --foreground --pid-file /run/ocserv.pid --config /etc/ocserv/ocserv.conf
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
По умолчанию конфиги сервера лежат в /etc/ocserv, а именно:
ocserv.conf - основной конфиг;
ocpasswd - файл со списком пользователей для подключения к VPN-серверу;

Возможно также создать директорию "config-per-user" и кидать в нее файлы, соответствующие имени пользователя из ocpasswd, чтобы переопределять какие-либо параметры конфигурации для конкретного юзера (например, если нужно постоянно выдавать какому-нибудь юзеру определенный IP-адрес).

Добавляются новые пользователи в "ocpasswd" очень просто, с комплекте с OCserv идет утилита с таким же названием "ocpasswd", то есть перейдя в /etc/ocserv и запустив ocpasswd, передав ей в качестве аргумента имя пользователя, которое вы хотите добавить в список, она спросит у вас пароль для него и добавит новый аккаунт куда надо. Естественно, никто не запрещает открывать этот файл в текстовом редакторе и удалять оттуда строки, которые уже не нужны.


/etc/ocserv/ocsvserv.conf

Код: Выделить всё


# TLS-сертификат вашего сервера. Нужно подсунуть сюда пути для сертификатов
# для вашего домена - можете сгененировать их с помощью Letsencrypt/Certbot.
server-cert = /etc/letsencrypt/live/yourdomain.com/fullchain.pem
server-key = /etc/letsencrypt/live/yourdomain.com/privkey.pem

# Можно ограничить количество одновременно подключенных клиентов
max-clients = 32

# И одновременно подключенных одинаковых клиентов (с одинаковым логином), 0 - безлимитно
max-same-clients = 0

# ваш домен
default-domain = video.uralnix.ru

# диапазон IP-адресов, которые вы будете выдавать подключенным клиентам
ipv4-network = 172.16.5.1
ipv4-netmask = 255.255.255.0

# предотвращает утечку DNS, должно быть true
tunnel-all-dns = true

# DNS-сервер, которые будут использовать ваши клиенты.
# Их можем быть несколько
dns = 77.88.8.1
dns = 77.88.8.8
dns = 1.1.1.1
dns = 8.8.8.8


# маршруты, которые будут переданы клиентам: какие диапазоны IP
# нужно будет отправлять через VPN
# route = 10.10.10.0/255.255.255.0
# route = 192.168.0.0/255.255.0.0
# route = fef4:db8:1000:1001::/64
# default = все
route = default

# либо можно пойти "от противного"
# no-route = 192.168.5.0/255.255.255.0

# про это я уже упоминал чуть выше, можно указать путь к дире
# с файлами для переопределения параметров конфигурации для отдельных юзеров
# config-per-user = /etc/ocserv/config-per-user/

# должно быть true если мы подключаемся клиентами от Cisco
cisco-client-compat = true
iptables -t nat -A POSTROUTING -s 172.16.5.0/24 -o ens33 -j SNAT --to-source <ваш внешний IPv4>

iptables -t nat -A POSTROUTING -s 172.16.5.0/24 -o ens33 -j SNAT --to-source 192.168.10.1

iptables-save > /etc/iptables

Генерация пароля:
ocpasswd -c /etc/ocserv/ocpasswd gt

haproxy

https://www.linuxbabe.com/linux-server/ocserv-vpn-server-apache-nginx-haproxy

Apache

/etc/apache2/sites-enabled/example.com.conf

Код: Выделить всё

<VirtualHost 127.0.0.2:443>
/etc/apache2/ports.conf

Код: Выделить всё

Listen 127.0.0.2:443
systemctl restart apache2

ocserv

/etc/ocserv/ocserv.conf

Код: Выделить всё

listen-proxy-proto = true
listen-host = 127.0.0.1
systemctl restart ocserv

haproxy

Закомментировать в файле /etc/haproxy/haproxy.cfg всё что связано с ssl

Код: Выделить всё

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
#       ca-base /etc/ssl/certs
#       crt-base /etc/ssl/private

        # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
#        ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
#        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
#        ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

defaults
        log     global
        mode    http
        #option httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

Добавить в конец файла:
/etc/haproxy/haproxy.cfg

Код: Выделить всё

frontend https
#   bind 31.25.244.70:443
   bind 192.168.10.245:443

   mode tcp
   tcp-request inspect-delay 5s
   tcp-request content accept if { req_ssl_hello_type 1 }

   use_backend ocserv if { req_ssl_sni -i vpn.example.com }
   use_backend apache if { req_ssl_sni -i www.example.com }
   use_backend apache if { req_ssl_sni -i example.com }

   default_backend ocserv

backend ocserv
   mode tcp
   option ssl-hello-chk
   # pass requests to 127.0.0.1:443. Proxy protocol (v2) header is required by ocserv.
   server ocserv 127.0.0.1:443 send-proxy-v2

backend apache
    mode tcp
    option ssl-hello-chk
    server apache 127.0.0.2:443 check
systemctl restart haproxy

Для проверки работоспособности:
echo | openssl s_client -connect 31.25.244.70:443 | grep subject

Логи:
journalctl -u haproxy.service --since today --no-pager
journalctl -xeu haproxy.service
Последний раз редактировалось ya 01 апр 2024, 02:23, всего редактировалось 4 раза.
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Включаем маскировку

Сообщение ya »

https://habr.com/ru/articles/776256/

# Включаем маскировку
camouflage = true

# Задаем свое секретное слово, которое клиенты должны иметь в URL'е после знака вопроса
camouflage_secret = "mysecretkey"

# А вот тут интересное. Если этот параметр не задан (закомментирован),
# то при отсутствии или несовпадении кодовоего слова сервер вернет
# ошибку HTTP 404, очень похожую на ту, что возвращает веб-сервер Apache.
# А если этот параметр _задан_, то сервер вернет ошибку HTTP 401,
# означающую "необходимо авторизоваться", как это делают многие
# веб-сервисы, админ-панели, морды разных устройств, и т.д.
# - в этом случае браузеры обычно показывают окошко с предложением
# ввести логин и пароль и текстовым сообщением,
# которое можно задать ниже, а OCserv будет "отвергать" все предложенные пароли.
# Если вы решили использовать этот вариант,
то желательно поменять это сообщение с дефолтного на какое-то свое.
camouflage_realm = "My admin panel"
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect

Сообщение ya »

Создание пользователей OpenConnect
Для создания клиентов воспользуемся утилитой ocpasswd:

ocpasswd -c /etc/ocserv/ocserv.passwd ivanov
Если файл не существует, то при первом выполнении команды он будет создан.

Для блокировки пользователя используйте:

ocpasswd -c /etc/ocserv/ocserv.passwd -l ivanov
Для разблокировки:

ocpasswd -c /etc/ocserv/ocserv.passwd -u ivanov
Для удаления пользователя выполните команду:

ocpasswd -c /etc/ocserv/ocserv.passwd -d ivanov
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect

Сообщение ya »

Для проверки:

echo | openssl s_client -servername www.example.com -connect your-server-IP:443 | grep subject

echo | openssl s_client -servername vpn.example.com -connect your-server-IP:443 | grep subject
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect

Сообщение ya »

перевыпуск сертификата для http вместо tls
certbot certonly --standalone --preferred-challenges http --agree-to -d vpn.uralnix.ru
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect

Сообщение ya »

/etc/ocserv/ocserv.conf

Код: Выделить всё

tcp-port = 443 
#udp-port = 443

try-mtu-discovery = true

#Это обязательно закомментировать
#cert-user-oid = 0.9.2342.19200300.100.1.1

Просмотр журнала ошибок
journalctl -xeu haproxy.service
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Конфигурация /etc/haproxy/haproxy.cfg

Сообщение ya »

Конфигурация /etc/haproxy/haproxy.cfg
Изображение
Вложения
ha1.jpg
(112.37 КБ) 0 скачиваний
ha1.jpg
(112.37 КБ) 0 скачиваний
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Проверка на правильность конфигурирования haproxy

Сообщение ya »

Проверка на правильность конфигурирования haproxy

Код: Выделить всё

haproxy -f /etc/haproxy/haproxy.cfg -c
Проброс по порту

Конфигурация /etc/haproxy/haproxy.cfg
Изображение
Вложения
ha2.jpg
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Конфигурация /etc/haproxy/haproxy.cfg на e9.gt

Сообщение ya »

Конфигурация на e9.gt

/etc/haproxy/haproxy.cfg

Код: Выделить всё

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
#       ca-base /etc/ssl/certs
#       crt-base /etc/ssl/private

        # Default ciphers to use on SSL-enabled listening sockets.
        # For more information, see ciphers(1SSL). This list is from:
        #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
        # An alternative list with additional directives can be obtained from
        #  https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
#       ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
#       ssl-default-bind-options no-sslv3

defaults
        log     global
        mode    http
#       option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

##frontend https
###   bind 31.25.244.70:443
###   bind 192.168.10.245:443
###bind 212.119.243.135
##   bind 192.168.100.9:443
##
##   mode tcp
##   tcp-request inspect-delay 5s
##   tcp-request content accept if { req_ssl_hello_type 1 }
##
###   use_backend ocserv if { req_ssl_sni -i vpn.example.com }
##   use_backend apache443 if { req_ssl_sni -i www.example.com }
##   use_backend apache443 if { req_ssl_sni -i example.com }
##
###   default_backend ocserv
##
###backend ocserv
###   mode tcp
###   option ssl-hello-chk
###   # pass requests to 127.0.0.1:443. Proxy protocol (v2) header is required by ocserv.
###   server ocserv 127.0.0.1:443 send-proxy-v2
##
##backend apache443
##    mode tcp
##    option ssl-hello-chk
##    server apache443 127.168.100.9:443 check

frontend hardprivate80

    bind 212.119.243.135:80
    mode http
    acl host_this80 hdr(host) -i hardprivate.com
    acl host_this80 hdr(host) -i www.hardprivate.com
    acl host_this80 hdr(host) -i gl.hardprivate.com
    acl host_this80 hdr(host) -i sql.hardprivate.com
    acl host_this80 hdr(host) -i sys.hardprivate.com

    acl host_e19port80 hdr(host) -i e19.hardprivate.com

    use_backend cluster_this80 if host_this80
    use_backend cluster_e19port80 if host_e19port80

frontend hardprivate443

    bind 212.119.243.135:443
    mode tcp
    tcp-request inspect-delay 5s
    tcp-request content accept if { req_ssl_hello_type 1 }

    acl host_this443 req_ssl_sni -i hardprivate.com
    acl host_this443 req_ssl_sni -i www.hardprivate.com
    acl host_this443 req_ssl_sni -i gl.hardprivate.com
    acl host_this443 req_ssl_sni -i sql.hardprivate.com
    acl host_this443 req_ssl_sni -i sys.hardprivate.com

    acl host_e19port443 req_ssl_sni -i e19.hardprivate.com

    use_backend cluster_this443 if host_this443
    use_backend cluster_e19port443 if host_e19port443


backend cluster_this80
    mode http
    server apache80 127.0.0.1:80 check

backend cluster_e19port80
    mode http
    balance roundrobin
#    options forwardfor
    server apache80e19 e19.gt:80 check


backend cluster_this443
    mode tcp
    option ssl-hello-chk
    server apache443 127.0.0.1:443 check

backend cluster_e19port443
    mode tcp
    balance roundrobin
#    options forwardfor
    option ssl-hello-chk
    server apache443e19 e19.gt:443 check

ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Статистика haproxy на порту 8989

Сообщение ya »

Статистика haproxy на порту 8989 в каталоге /ha и данные авторизации логин:пароль запросит по входу http://e9.gt:8989/ha

Код: Выделить всё

listen stats
        bind *:8989
        mode http
        stats enable
        stats uri /ha
        stats realm HAProxy\ Statistics
        stats auth логин:пароль
        stats admin if TRUE
Документация на haproxy
http://docs.haproxy.org
http://docs.haproxy.org/1.7/configuration.html

Узнать версию
haproxy -v

Узнать корректность конфигурации haproxy перед перезапуском

Код: Выделить всё

haproxy -f /etc/haproxy/haproxy.cfg -c
https://github.com/RomNero/YouTube-Infos/blob/main/LoadBalancer/Create_HA_LB_haproxy_keepalived
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect и haproxy

Сообщение ya »

Видеоинструкция haproxy
https://www.youtube.com/watch?v=qYnA2DFEELw
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect и haproxy

Сообщение ya »

Если у вас возникли проблемы, проверьте журнал сервера OpenConnect VPN.
sudo journalctl -eu ocserv.service

Set Up OpenConnect VPN Server (ocserv) on Ubuntu 20.04 with Let’s Encrypt
https://www.linuxbabe.com/ubuntu/openconnect-vpn-server-ocserv-ubuntu-20-04-lets-encrypt

/etc/ocserv/ocserv.conf

Код: Выделить всё

...
run-as-user = www-data
run-as-group = daemon
...
по умолчанию:
run-as-user = nobody
run-as-group = daemon

Генерация сертификата

Код: Выделить всё

sudo ocserv-genkey --key ca-key.pem
sudo ocserv-genkey --certificate --key ca-key.pem --output ca-cert.pem
Создание пользователя для openconnect

Код: Выделить всё

ocpasswd -c /etc/ocserv/ocpasswd [username]
Создайте правило NAT с помощью iptables

Код: Выделить всё

sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
sudo systemctl restart ocserv

Статус сервера

Код: Выделить всё

sudo occtl -n show status
Подключенные пользователи

Код: Выделить всё

sudo occtl -n show users
Отключить пользователя

Код: Выделить всё

sudo occtl disconnect user [username]
Создание пользователя в группе

Код: Выделить всё

sudo ocpasswd -c /etc/ocserv/ocpasswd -g group1 test1
Регенерация сертификатов

Код: Выделить всё

sudo make-ssl-cert generate-default-snakeoil --force-overwrite
создания собственных самоподписанных SSL-сертификатов

Код: Выделить всё

openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout certificate-key.key -out certificate-cert.pem
Add user
sudo ocpasswd -c /etc/ocserv/ocpasswd [username]

Add user to group
sudo ocpasswd -c /etc/ocserv/ocpasswd -g [GroupName] [UserName]

Lock user
sudo ocpasswd -c /etc/ocserv/ocpasswd -l [username]

Unlock user
sudo ocpasswd -c /etc/ocserv/ocpasswd -u [username]

Delete/Remove user
sudo ocpasswd -c /etc/ocserv/ocpasswd -d [username]
https://dannyda.com/2020/05/03/how-to-create-configure-setup-ocserv-openconnect-vpn-server-with-ubuntu-server-19-both-quick-ways-tuning-refining-a-simple-yet-comprehensive-ocserv-vpn-server-setup-guide/

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j DNAT --to-destination [foreignVPSip]:443
iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 443 -j DNAT --to-destination [foreignVPSip]:443
iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 53 -j DNAT --to-destination [foreignVPSip]:53
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source [domesticVPSip]
Последний раз редактировалось ya 15 май 2024, 21:49, всего редактировалось 2 раза.
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect и haproxy

Сообщение ya »

mcedit /etc/sysctl.conf

Код: Выделить всё

net.ipv4.ip_forward = 1
sysctl -p
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect и haproxy

Сообщение ya »

https://github.com/openconnect/ocserv

Самоподписанный сертификат

Код: Выделить всё

$ certtool --generate-privkey > ./test-key.pem
$ certtool --generate-self-signed --load-privkey test-key.pem --outfile test-cert.pem

В системе Linux вы можете профилировать ocserv с помощью следующей команды.

# perf record -g ocserv
После завершения работы сервера вывод помещается в файл perf.data. Вы можете просмотреть вывод с помощью команды:

# perf report

Проверить правильность конфига haproxy

Код: Выделить всё

haproxy -c -f /etc/haproxy/haproxy.cfg
Проверить правильность конфига ocserv

Код: Выделить всё

ocserv -c /etc/ocserv/ocserv.conf
Проверить правильность конфига с коннэктом:

Код: Выделить всё

ocserv -f -c /etc/ocserv/ocserv.conf -d 9999
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

docker-ocserv

Сообщение ya »

docker-ocserv
https://github.com/Pezhvak/docker-ocserv

Получение сертификата

Код: Выделить всё

sudo docker run -it --rm --name certbot -p 80:80 -p 443:443 \
    -v $(pwd)/certs:/etc/letsencrypt certbot/certbot \
    certonly --standalone -m <email> -d <domain> -n --agree-tos
Я настоятельно рекомендую использовать docker-compose для запуска вашего контейнера, не стесняйтесь изменить порт, отредактировав

Код: Выделить всё

wget https://raw.githubusercontent.com/Pezhvak/docker-ocserv/develop/docker-compose.yml
# IMPORTANT: Make sure you have updated the cert paths in volumes section 
# of the docker-compose.yml before running it.
docker-compose up -d
Если вы предпочитаете использовать docker run, все, что вам нужно сделать, это выполнить следующую команду:

Код: Выделить всё

docker run \
    --name ocserv \
    --restart=always \
    -p 1342:443 \
    -v $(pwd)/data/ocserv:/etc/ocserv/data \
    -v $(pwd)/certs/live/<domain>/fullchain.pem:/etc/ocserv/server-cert.pem \
    -v $(pwd)/certs/live/<domain>/privkey.pem:/etc/ocserv/server-key.pem \
    pezhvak/ocserv 
Теперь ваш ocserv должен быть запущен, вам нужно будет создать пользователя, чтобы иметь возможность подключиться.


Для обновления до последней версии просто возьмите образ из хаба docker.
Для установок Docker Compose

Код: Выделить всё

# This will pull the image from docker hub
docker-compose pull
# Running 'up' again will detect the newer image and recreates the container 
docker-compose up -d
Для установки Docker Run

Код: Выделить всё

# Pull the image from docker hub
docker pull pezhvak/ocserv
# Restart the container
docker restart ocserv
Создайте свой собственный образ
Хотя использовать готовый образ проще, у него есть свои недостатки. А именно, ограничения, описанные здесь.

Если вы хотите изменить конфигурации по умолчанию, вам придется собрать образ самостоятельно, просто клонируйте репозиторий и измените нужные файлы.

Конфигурационные файлы хранятся в директории config. При необходимости вы также можете изменить скрипты/docker-entrypoint.sh.

1 - Клонируйте репозиторий на свой сервер:

Код: Выделить всё

git clone https://github.com/Pezhvak/docker-ocserv.git
cd docker-ocserv
2- Соберите образ с собственными настройками, не стесняйтесь изменять config/ocserv.conf по своему усмотрению:

Код: Выделить всё

docker build -t <image_name> .
3- Выполните шаги по использованию встроенного образа (измените pezhvak/ocserv на имя вашего собственного образа)

Код: Выделить всё

# Создание нового пользователя
docker exec -it ocserv ash -c "ocuser create <username>"
# Удаление существующего пользователя
docker exec ocserv ash -c "ocuser delete <username>"
# Блокировка пользователя
docker exec ocserv ash -c "ocuser lock <username>"
# Разблокировка пользователя
docker exec ocserv ash -c "ocuser unlock <username>"
Использование на стороне пользователя:
Установить openconnect и подключиться

Код: Выделить всё

echo "<PASSWORD>" | sudo openconnect <DOMAIN>:<PORT> -u <USERNAME> --passwd-on-stdin
Вы также можете создать псевдоним в вашем ~/.bash_profile (или ~/.zshrc, если вы используете zsh) для более удобного доступа:

Код: Выделить всё

alias vpn:oc="echo <PASSWORD> | sudo openconnect <DOMAIN>:<PORT> -u <USERNAME> --passwd-on-stdin"
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect и haproxy

Сообщение ya »

время бездействия сети, через которое разрывается соединение

/etc/ocserv/ocserv.conf

Код: Выделить всё

...
idle-timeout=3240
...
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect и haproxy

Сообщение ya »

https://github.com/CNMan/ocserv-cn-no-route/blob/master/ocserv.conf

ocserv.conf

Код: Выделить всё

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
tcp-port = 443
udp-port = 443
run-as-user = nobody
run-as-group = daemon
socket-file = /var/run/ocserv-socket
server-cert = /etc/ocserv/server-cert.pem
server-key = /etc/ocserv/server-key.pem
ca-cert = /etc/ocserv/ca-cert.pem
isolate-workers = true
max-clients = 0
max-same-clients = 0
rate-limit-ms = 0
server-stats-reset-time = 604800
keepalive = 32400
dpd = 90
mobile-dpd = 1800
switch-to-tcp-timeout = 25
try-mtu-discovery = true
cert-user-oid = 2.5.4.3
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1"
auth-timeout = 240
idle-timeout = 86400
mobile-idle-timeout = 86400
min-reauth-time = 300
max-ban-score = 80
ban-reset-time = 1200
cookie-timeout = 300
deny-roaming = false
rekey-time = 172800
rekey-method = ssl
use-occtl = true
pid-file = /var/run/ocserv.pid
log-level = 1
device = vpns
predictable-ips = true
default-domain = example.com
ipv4-network = 192.168.1.0
ipv4-netmask = 255.255.255.0
dns = 8.8.8.8
dns = 8.8.4.4
ping-leases = false
no-route = 1.0.0.0/255.192.0.0
no-route = 1.64.0.0/255.224.0.0
no-route = 1.112.0.0/255.248.0.0
no-route = 1.176.0.0/255.240.0.0
no-route = 1.192.0.0/255.240.0.0
no-route = 14.0.0.0/255.224.0.0
no-route = 14.96.0.0/255.224.0.0
no-route = 14.128.0.0/255.224.0.0
no-route = 14.192.0.0/255.224.0.0
no-route = 27.0.0.0/255.192.0.0
no-route = 27.96.0.0/255.224.0.0
no-route = 27.128.0.0/255.224.0.0
no-route = 27.176.0.0/255.240.0.0
no-route = 27.192.0.0/255.224.0.0
no-route = 27.224.0.0/255.252.0.0
no-route = 36.0.0.0/255.192.0.0
no-route = 36.96.0.0/255.224.0.0
no-route = 36.128.0.0/255.192.0.0
no-route = 36.192.0.0/255.224.0.0
no-route = 36.240.0.0/255.240.0.0
no-route = 39.0.0.0/255.255.0.0
no-route = 39.64.0.0/255.224.0.0
no-route = 39.96.0.0/255.240.0.0
no-route = 39.128.0.0/255.192.0.0
no-route = 40.72.0.0/255.254.0.0
no-route = 40.124.0.0/255.252.0.0
no-route = 42.0.0.0/255.248.0.0
no-route = 42.48.0.0/255.240.0.0
no-route = 42.80.0.0/255.240.0.0
no-route = 42.96.0.0/255.224.0.0
no-route = 42.128.0.0/255.128.0.0
no-route = 43.224.0.0/255.224.0.0
no-route = 45.65.16.0/255.255.240.0
no-route = 45.112.0.0/255.240.0.0
no-route = 45.248.0.0/255.248.0.0
no-route = 47.92.0.0/255.252.0.0
no-route = 47.96.0.0/255.224.0.0
no-route = 49.0.0.0/255.128.0.0
no-route = 49.128.0.0/255.224.0.0
no-route = 49.192.0.0/255.192.0.0
no-route = 52.80.0.0/255.252.0.0
no-route = 54.222.0.0/255.254.0.0
no-route = 58.0.0.0/255.128.0.0
no-route = 58.128.0.0/255.224.0.0
no-route = 58.192.0.0/255.224.0.0
no-route = 58.240.0.0/255.240.0.0
no-route = 59.32.0.0/255.224.0.0
no-route = 59.64.0.0/255.224.0.0
no-route = 59.96.0.0/255.240.0.0
no-route = 59.144.0.0/255.240.0.0
no-route = 59.160.0.0/255.224.0.0
no-route = 59.192.0.0/255.192.0.0
no-route = 60.0.0.0/255.224.0.0
no-route = 60.48.0.0/255.240.0.0
no-route = 60.160.0.0/255.224.0.0
no-route = 60.192.0.0/255.192.0.0
no-route = 61.0.0.0/255.192.0.0
no-route = 61.80.0.0/255.248.0.0
no-route = 61.128.0.0/255.192.0.0
no-route = 61.224.0.0/255.224.0.0
no-route = 91.234.36.0/255.255.255.0
no-route = 101.0.0.0/255.128.0.0
no-route = 101.128.0.0/255.224.0.0
no-route = 101.192.0.0/255.240.0.0
no-route = 101.224.0.0/255.224.0.0
no-route = 103.0.0.0/255.0.0.0
no-route = 106.0.0.0/255.128.0.0
no-route = 106.224.0.0/255.240.0.0
no-route = 110.0.0.0/255.128.0.0
no-route = 110.144.0.0/255.240.0.0
no-route = 110.160.0.0/255.224.0.0
no-route = 110.192.0.0/255.192.0.0
no-route = 111.0.0.0/255.192.0.0
no-route = 111.64.0.0/255.224.0.0
no-route = 111.112.0.0/255.240.0.0
no-route = 111.128.0.0/255.192.0.0
no-route = 111.192.0.0/255.224.0.0
no-route = 111.224.0.0/255.240.0.0
no-route = 112.0.0.0/255.128.0.0
no-route = 112.128.0.0/255.240.0.0
no-route = 112.192.0.0/255.252.0.0
no-route = 112.224.0.0/255.224.0.0
no-route = 113.0.0.0/255.128.0.0
no-route = 113.128.0.0/255.240.0.0
no-route = 113.192.0.0/255.192.0.0
no-route = 114.16.0.0/255.240.0.0
no-route = 114.48.0.0/255.240.0.0
no-route = 114.64.0.0/255.192.0.0
no-route = 114.128.0.0/255.240.0.0
no-route = 114.192.0.0/255.192.0.0
no-route = 115.0.0.0/255.0.0.0
no-route = 116.0.0.0/255.0.0.0
no-route = 117.0.0.0/255.128.0.0
no-route = 117.128.0.0/255.192.0.0
no-route = 118.16.0.0/255.240.0.0
no-route = 118.64.0.0/255.192.0.0
no-route = 118.128.0.0/255.128.0.0
no-route = 119.0.0.0/255.128.0.0
no-route = 119.128.0.0/255.192.0.0
no-route = 119.224.0.0/255.224.0.0
no-route = 120.0.0.0/255.192.0.0
no-route = 120.64.0.0/255.224.0.0
no-route = 120.128.0.0/255.240.0.0
no-route = 120.192.0.0/255.192.0.0
no-route = 121.0.0.0/255.128.0.0
no-route = 121.192.0.0/255.192.0.0
no-route = 122.0.0.0/254.0.0.0
no-route = 124.0.0.0/255.0.0.0
no-route = 125.0.0.0/255.128.0.0
no-route = 125.160.0.0/255.224.0.0
no-route = 125.192.0.0/255.192.0.0
no-route = 137.59.59.0/255.255.255.0
no-route = 137.59.88.0/255.255.252.0
no-route = 139.0.0.0/255.224.0.0
no-route = 139.128.0.0/255.128.0.0
no-route = 140.64.0.0/255.240.0.0
no-route = 140.128.0.0/255.240.0.0
no-route = 140.192.0.0/255.192.0.0
no-route = 144.0.0.0/255.248.0.0
no-route = 144.12.0.0/255.255.0.0
no-route = 144.48.0.0/255.248.0.0
no-route = 144.123.0.0/255.255.0.0
no-route = 144.255.0.0/255.255.0.0
no-route = 146.196.0.0/255.255.128.0
no-route = 150.0.0.0/255.255.0.0
no-route = 150.96.0.0/255.224.0.0
no-route = 150.128.0.0/255.240.0.0
no-route = 150.192.0.0/255.192.0.0
no-route = 152.104.128.0/255.255.128.0
no-route = 153.0.0.0/255.192.0.0
no-route = 153.96.0.0/255.224.0.0
no-route = 157.0.0.0/255.255.0.0
no-route = 157.18.0.0/255.255.0.0
no-route = 157.61.0.0/255.255.0.0
no-route = 157.112.0.0/255.240.0.0
no-route = 157.144.0.0/255.240.0.0
no-route = 157.255.0.0/255.255.0.0
no-route = 159.226.0.0/255.255.0.0
no-route = 160.19.0.0/255.255.0.0
no-route = 160.20.48.0/255.255.252.0
no-route = 160.202.0.0/255.255.0.0
no-route = 160.238.64.0/255.255.252.0
no-route = 161.207.0.0/255.255.0.0
no-route = 162.105.0.0/255.255.0.0
no-route = 163.0.0.0/255.192.0.0
no-route = 163.96.0.0/255.224.0.0
no-route = 163.128.0.0/255.192.0.0
no-route = 163.192.0.0/255.224.0.0
no-route = 164.52.0.0/255.255.128.0
no-route = 166.111.0.0/255.255.0.0
no-route = 167.139.0.0/255.255.0.0
no-route = 167.189.0.0/255.255.0.0
no-route = 167.220.244.0/255.255.252.0
no-route = 168.160.0.0/255.255.0.0
no-route = 170.179.0.0/255.255.0.0
no-route = 171.0.0.0/255.128.0.0
no-route = 171.192.0.0/255.224.0.0
no-route = 175.0.0.0/255.128.0.0
no-route = 175.128.0.0/255.192.0.0
no-route = 180.64.0.0/255.192.0.0
no-route = 180.128.0.0/255.128.0.0
no-route = 182.0.0.0/255.0.0.0
no-route = 183.0.0.0/255.192.0.0
no-route = 183.64.0.0/255.224.0.0
no-route = 183.128.0.0/255.128.0.0
no-route = 192.124.154.0/255.255.255.0
no-route = 192.140.128.0/255.255.128.0
no-route = 195.78.82.0/255.255.254.0
no-route = 202.0.0.0/255.128.0.0
no-route = 202.128.0.0/255.192.0.0
no-route = 202.192.0.0/255.224.0.0
no-route = 203.0.0.0/255.0.0.0
no-route = 210.0.0.0/255.192.0.0
no-route = 210.64.0.0/255.224.0.0
no-route = 210.160.0.0/255.224.0.0
no-route = 210.192.0.0/255.224.0.0
no-route = 211.64.0.0/255.248.0.0
no-route = 211.80.0.0/255.240.0.0
no-route = 211.96.0.0/255.248.0.0
no-route = 211.136.0.0/255.248.0.0
no-route = 211.144.0.0/255.240.0.0
no-route = 211.160.0.0/255.248.0.0
no-route = 216.250.108.0/255.255.252.0
no-route = 218.0.0.0/255.128.0.0
no-route = 218.160.0.0/255.224.0.0
no-route = 218.192.0.0/255.192.0.0
no-route = 219.64.0.0/255.224.0.0
no-route = 219.128.0.0/255.224.0.0
no-route = 219.192.0.0/255.192.0.0
no-route = 220.96.0.0/255.224.0.0
no-route = 220.128.0.0/255.128.0.0
no-route = 221.0.0.0/255.224.0.0
no-route = 221.96.0.0/255.224.0.0
no-route = 221.128.0.0/255.128.0.0
no-route = 222.0.0.0/255.0.0.0
no-route = 223.0.0.0/255.224.0.0
no-route = 223.64.0.0/255.192.0.0
no-route = 223.128.0.0/255.128.0.0
cisco-client-compat = true
dtls-legacy = true
ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect и haproxy

Сообщение ya »

ya
^-^
Сообщения: 2336
Зарегистрирован: 16 дек 2021, 19:56

Re: OpenConnect и haproxy

Сообщение ya »

Очень важный параметр, влияющий на то, будет ли ocserv использовать proxy-v2

/etc/ocserv/ocserv.conf

Код: Выделить всё

listen-proxy-proto = true
если он включен в ocserv, тогда в конфиге хапрокси обязательно на бэкэнде должен присутствовать параметр send-proxy-v2

/etc/haproxy/haproxy.cfg

Код: Выделить всё

backend cluster_oc
   mode tcp
   option ssl-hello-chk
   # pass requests to 127.0.0.1:443. Proxy protocol (v2) header is required by ocserv.
   server ocserv 127.0.0.1:443 send-proxy-v2
Ответить