ocserv

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

ocserv

Сообщение ya »

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

apt install vpnc ocserv

Настройка ocserv
https://www.linuxbabe.com/linux-server/ocserv-openconnect-vpn-advanced

Загрузить страну в формате CIDR
https://www.ip2location.com/free/visitor-blocker

Преобразовать список сетей в полный формат
преобразования списка подсетей IPv4 из краткого формата (CIDR) в полный формат

Отредактировать полученный файл (не маршрутизировать данную страну)

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

sed 's/^/no-route = /' -i ip2localtion.txt
После этого добавить полученные записи в конфиг ocserv

/etc/ocserv/ocserv.conf

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

config-per-user = /etc/ocserv/config-per-user/
config-per-group = /etc/ocserv/config-per-group/
Создаём каталоги для пользователей и групп пользователей, создаём символическую ссылку для группы пользователей default

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

mkdir /etc/ocserv/config-per-user/
mkdir /etc/ocserv/config-per-group/
ln -s /etc/ocserv/ip2localtion.txt /etc/ocserv/config-per-group/default
Проверить правильность конфига ocserv

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

ocserv -c /etc/ocserv/ocserv.conf
Если всё правильно, перезапустить

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

systemctl force-reload ocserv
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]
Посмотреть список подключенных пользователей

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

sudo occtl -n show users
Вложения
firewall.txt
Russian Federation ipv4
(260.03 КБ) 849 скачиваний
firewall.txt
Russian Federation ipv4
(260.03 КБ) 849 скачиваний
firewall.txt.gz
Russian Federation ipv4
(54.06 КБ) 887 скачиваний
firewall.txt.gz
Russian Federation ipv4
(54.06 КБ) 887 скачиваний
ya
^-^
Сообщения: 3039
Зарегистрирован: 16 дек 2021, 19:56

Re: ocserv

Сообщение ya »

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

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

ocserv -c /etc/ocserv/ocserv.conf
логи

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

journalctl -u ocserv -f

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

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

Re: ocserv

Сообщение ya »

выполните следующие две команды, чтобы включить алгоритм TCP BBR для увеличения скорости TCP.

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

echo "net.ipv4.ip_forward=1"  >> /etc/sysctl.conf
echo "net.ipv4.conf.all.forwarding=1"  >> /etc/sysctl.conf
echo "net.core.default_qdisc=fq"  >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr"  >> /etc/sysctl.conf

sysctl -p /etc/sysctl.conf
ya
^-^
Сообщения: 3039
Зарегистрирован: 16 дек 2021, 19:56

Re: ocserv

Сообщение ya »

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

sudo apt install dh-autoreconf  ipcalc ipcalc-ng gettext autopoint

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

sudo apt install geoip-database geoip-bin libgeoip-dev libgeoip1 

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

node-llhttp - HTTP client sources for Node.js
репозиторий из сырцов
https://gitlab.com/openconnect/ocserv
https://www.infradead.org/ocserv/download/

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

./autogen.sh
./configure
make
make check
если никаких ошибок нет, тогда можно

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

sudo make install
версия:

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

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

Re: ocserv

Сообщение ya »

Set Up OpenConnect VPN Server (ocserv) on Debian 11 Bullseye
https://www.linuxbabe.com/debian/set-up-openconnect-vpn-server-ocserv-debian-11-bullseye

Ocserv Advanced (Split Tunneling, IPv6, Static IP, Per User Configs, Virtual Hosting)
https://www.linuxbabe.com/linux-server/ocserv-openconnect-vpn-advanced
ya
^-^
Сообщения: 3039
Зарегистрирован: 16 дек 2021, 19:56

Re: ocserv

Сообщение ya »

/etc/ocserv/ocserv.conf

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

auth = "plain[passwd=/etc/ocserv/passwd]"
listen-host = 127.0.0.1
tcp-port = 443
#udp-port = 443
run-as-user = www-data
run-as-group = daemon
socket-file = run/ocserv-socket
chroot-dir = /var/lib/ocserv
server-cert = /etc/letsencrypt/live/v.hardprivate.com/fullchain.pem
server-key = /etc/letsencrypt/live/v.hardprivate.com/privkey.pem
isolate-workers = true
max-clients = 1024
max-same-clients = 0
listen-proxy-proto = true
rate-limit-ms = 100
server-stats-reset-time = 604800
keepalive = 32400
dpd = 90
mobile-dpd = 1800
switch-to-tcp-timeout = 25
try-mtu-discovery = true
compression = false
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-TLS1.3"
auth-timeout = 240
min-reauth-time = 300
max-ban-score = 80
ban-reset-time = 300
cookie-timeout = 300
deny-roaming = false
rekey-time = 172800
rekey-method = ssl
use-occtl = true
pid-file = /run/ocserv.pid
#log-level = info
#log-file = /var/log/ocserv.log
device = vpns
predictable-ips = true
default-domain = v.hardprivate.com

ipv4-network = 172.20.20.0/23
ipv4-netmask = 255.255.255.0
tunnel-all-dns = true
#dns = 77.88.8.1
#dns = 77.88.8.8
dns = 1.1.1.1
dns = 1.0.0.1

ping-leases = true
mtu = 1412
#route = 192.168.0.0/255.255.254.0
cisco-client-compat = true
dtls-legacy = true
#client-bypass-protocol = true

#included-http-headers = Strict-Transport-Security: max-age=31536000 ; includeSubDomains
#included-http-headers = X-Frame-Options: deny
#included-http-headers = X-Content-Type-Options: nosniff
#included-http-headers = Content-Security-Policy: default-src 'none'
#included-http-headers = X-Permitted-Cross-Domain-Policies: none
#included-http-headers = Referrer-Policy: no-referrer
#included-http-headers = Clear-Site-Data: "cache","cookies","storage"
#included-http-headers = Cross-Origin-Embedder-Policy: require-corp
#included-http-headers = Cross-Origin-Opener-Policy: same-origin
#included-http-headers = Cross-Origin-Resource-Policy: same-origin
#included-http-headers = X-XSS-Protection: 0
#included-http-headers = Pragma: no-cache
#included-http-headers = Cache-control: no-store, no-cache

#no-route = include:/etc/ocserv/2ip.full001.txt

#expose-iroutes = true

#config-per-user = /etc/ocserv/config-per-user/
#config-per-group = /etc/ocserv/config-per-group/

route = 1.0.0.0/248.0.0.0
route = 8.0.0.0/254.0.0.0
route = 11.0.0.0/255.0.0.0
route = 12.0.0.0/252.0.0.0
route = 16.0.0.0/240.0.0.0
route = 32.0.0.0/224.0.0.0
route = 64.0.0.0/224.0.0.0
route = 96.0.0.0/240.0.0.0
route = 112.0.0.0/248.0.0.0
route = 120.0.0.0/252.0.0.0
route = 124.0.0.0/254.0.0.0
route = 126.0.0.0/255.0.0.0
route = 128.0.0.0/224.0.0.0
route = 160.0.0.0/248.0.0.0
route = 168.0.0.0/252.0.0.0
route = 172.0.0.0/255.240.0.0
route = 172.32.0.0/255.224.0.0
route = 172.64.0.0/255.192.0.0
route = 172.128.0.0/255.128.0.0
route = 173.0.0.0/255.0.0.0
route = 174.0.0.0/254.0.0.0
route = 176.0.0.0/240.0.0.0
route = 192.0.0.0/255.128.0.0
route = 192.128.0.0/255.224.0.0
route = 192.160.0.0/255.248.0.0
route = 192.169.0.0/255.255.0.0
route = 192.170.0.0/255.254.0.0
route = 192.172.0.0/255.252.0.0
route = 192.176.0.0/255.240.0.0
route = 192.192.0.0/255.192.0.0
route = 193.0.0.0/255.0.0.0
route = 194.0.0.0/254.0.0.0
route = 196.0.0.0/252.0.0.0
route = 200.0.0.0/248.0.0.0
route = 208.0.0.0/240.0.0.0
route = 224.0.0.0/224.0.0.0
ya
^-^
Сообщения: 3039
Зарегистрирован: 16 дек 2021, 19:56

Re: ocserv

Сообщение ya »

проверить свободен ли порт 443

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

sudo ss -tupln | grep 443
grep -v "#" /etc/ocserv/ocserv.conf

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

auth = "plain[passwd=/etc/ocserv/passwd]"
listen-host = 192.168.43.96
tcp-port = 443
run-as-user = gt
run-as-group = daemon
socket-file = run/ocserv-socket
chroot-dir = /var/lib/ocserv
server-cert = /etc/letsencrypt/live/1.hardprivate.com/fullchain.pem
server-key = /etc/letsencrypt/live/1.hardprivate.com/privkey.pem
isolate-workers = true
max-clients = 100
max-same-clients = 100
listen-proxy-proto = false
rate-limit-ms = 100
keepalive = 32400
dpd = 90
mobile-dpd = 1800
switch-to-tcp-timeout = 25
try-mtu-discovery = false
compression = false
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1"
auth-timeout = 240
min-reauth-time = 300
max-ban-score = 80
ban-reset-time = 300
cookie-timeout = 300
deny-roaming = false
rekey-time = 172800
rekey-method = ssl
use-occtl = true
pid-file = /run/ocserv.pid
device = vpns
predictable-ips = true
idle-timeout=3240
mobile-idle-timeout=2400
default-domain = 1.hardprivate.com

ipv4-network = 172.19.176.0/22
ipv4-netmask = 255.255.252.0

tunnel-all-dns = true


dns = 192.168.43.96
dns = 1.0.0.2
dns = 1.1.1.2


ping-leases = true

cisco-client-compat = false
dtls-legacy = false
client-bypass-protocol = none

route = 192.168.100.9/255.255.255.255
route = 192.168.100.2/255.255.255.255
route = 192.168.43.96/255.255.255.255
route = 192.168.43.75/255.255.255.255

route = 1.0.0.0/248.0.0.0
route = 8.0.0.0/254.0.0.0
route = 11.0.0.0/255.0.0.0
route = 12.0.0.0/252.0.0.0
route = 16.0.0.0/240.0.0.0
route = 32.0.0.0/224.0.0.0
route = 64.0.0.0/224.0.0.0
route = 96.0.0.0/240.0.0.0
route = 112.0.0.0/248.0.0.0
route = 120.0.0.0/252.0.0.0
route = 124.0.0.0/254.0.0.0
route = 126.0.0.0/255.0.0.0
route = 128.0.0.0/224.0.0.0
route = 160.0.0.0/248.0.0.0
route = 168.0.0.0/252.0.0.0
route = 172.0.0.0/255.240.0.0
route = 172.32.0.0/255.224.0.0
route = 172.64.0.0/255.192.0.0
route = 172.128.0.0/255.128.0.0
route = 173.0.0.0/255.0.0.0
route = 174.0.0.0/254.0.0.0
route = 176.0.0.0/240.0.0.0
route = 192.0.0.0/255.128.0.0
route = 192.128.0.0/255.224.0.0
route = 192.160.0.0/255.248.0.0
route = 192.169.0.0/255.255.0.0
route = 192.170.0.0/255.254.0.0
route = 192.172.0.0/255.252.0.0
route = 192.176.0.0/255.240.0.0
route = 192.192.0.0/255.192.0.0
route = 193.0.0.0/255.0.0.0
route = 194.0.0.0/254.0.0.0
route = 196.0.0.0/252.0.0.0
route = 200.0.0.0/248.0.0.0
route = 208.0.0.0/240.0.0.0
route = 224.0.0.0/224.0.0.0

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

Re: ocserv

Сообщение ya »

Для того чтобы ocserv (OpenConnect VPN) раздавал одновременно и IPv4, и IPv6, вам нужно настроить соответствующие параметры пула адресов и маршрутизации.

Поскольку ваш публичный адрес — 2a0c:480:a4::1/32, для клиентских подключений обычно выделяют подсеть /64 (это стандарт для сегментации IPv6).

1. Настройка сетевых параметров
Найдите и отредактируйте следующие строки в /etc/ocserv/ocserv.conf:

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

# IPv4 пул (оставляем как есть или настраиваем рядом)
ipv4-network = 192.168.10.0
ipv4-netmask = 255.255.255.0

# IPv6 адрес шлюза сервера и маска подсети
# Мы берем одну подсеть /64 из вашего диапазона /32
ipv6-network = 2a0c:480:a4:1::/64

# Префикс подсети (для IPv6 это обычно 64)
ipv6-prefix-length = 64
Ответ Gemini
Для того чтобы ocserv (OpenConnect VPN) раздавал одновременно и IPv4, и IPv6, вам нужно настроить соответствующие параметры пула адресов и маршрутизации.

Поскольку ваш публичный адрес — 2a0c:480:a4::1/32, для клиентских подключений обычно выделяют подсеть /64 (это стандарт для сегментации IPv6).

1. Настройка сетевых параметров
Найдите и отредактируйте следующие строки в /etc/ocserv/ocserv.conf:

Bash
# IPv4 пул (оставляем как есть или настраиваем рядом)
ipv4-network = 192.168.10.0
ipv4-netmask = 255.255.255.0

# IPv6 адрес шлюза сервера и маска подсети
# Мы берем одну подсеть /64 из вашего диапазона /32
ipv6-network = 2a0c:480:a4:1::/64

# Префикс подсети (для IPv6 это обычно 64)
ipv6-prefix-length = 64
2. Маршрутизация (Split Tunneling или Full Tunnel)
Чтобы клиенты знали, какой трафик отправлять в туннель:

Если вы хотите направить ВЕСЬ IPv6 трафик через VPN:

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

route-add = ::/0
Если только специфическую подсеть:

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

route-add = 2a0c:480:a4::/48
3. DNS серверы
Не забудьте указать IPv6 DNS, чтобы избежать утечек через провайдера:

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

# Можно использовать Google или Cloudflare
dns = 8.8.8.8
dns = 2001:4860:4860::8888
Важные системные настройки
Для того чтобы IPv6 трафик действительно ходил, одного конфига ocserv недостаточно. Нужно разрешить пересылку пакетов на уровне ядра Linux.

Включите IPv6 Forwarding:
Отредактируйте /etc/sysctl.conf и добавьте/раскомментируйте:

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

net.ipv6.conf.all.forwarding=1
Затем примените изменения: sysctl -p.

Настройте Firewall (IP6Tables/NFTables):
Если вы используете NAT для IPv6 (редко, но бывает) или просто фильтрацию, убедитесь, что трафик разрешен:

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

# Пример для разрешения форвардинга
ip6tables -A FORWARD -j ACCEPT
# Если нужен NAT (если ваш провайдер не маршрутизирует подсеть на ваш сервер)
ip6tables -t nat -A POSTROUTING -s 2a0c:480:a4:1::/64 -o eth0 -j MASQUERADE
Примечание: Убедитесь, что ваш хостинг-провайдер корректно маршрутизирует подсеть 2a0c:480:a4:1::/64 на ваш сервер. Если адрес висит на интерфейсе просто как единичный IP, вам может понадобиться использовать ndppd (Neighbor Discovery Protocol Proxy Daemon).
Ответить