ocserv

Ответить
ya
^-^
Сообщения: 3451
Зарегистрирован: 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 КБ) 966 скачиваний
firewall.txt
Russian Federation ipv4
(260.03 КБ) 966 скачиваний
firewall.txt.gz
Russian Federation ipv4
(54.06 КБ) 991 скачивание
firewall.txt.gz
Russian Federation ipv4
(54.06 КБ) 991 скачивание
ya
^-^
Сообщения: 3451
Зарегистрирован: 16 дек 2021, 19:56

Re: ocserv

Сообщение ya »

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

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

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

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

journalctl -u ocserv -f

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

 journalctl -xe
ya
^-^
Сообщения: 3451
Зарегистрирован: 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
^-^
Сообщения: 3451
Зарегистрирован: 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
^-^
Сообщения: 3451
Зарегистрирован: 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
^-^
Сообщения: 3451
Зарегистрирован: 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
^-^
Сообщения: 3451
Зарегистрирован: 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
^-^
Сообщения: 3451
Зарегистрирован: 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).
ya
^-^
Сообщения: 3451
Зарегистрирован: 16 дек 2021, 19:56

Re: ocserv

Сообщение ya »

Для того чтобы один логин мог иметь только одну активную сессию, вам нужно отредактировать параметр max-same-clients = 1
/etc/ocserv/ocserv.conf

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

max-same-clients = 1
ya
^-^
Сообщения: 3451
Зарегистрирован: 16 дек 2021, 19:56

Re: ocserv

Сообщение ya »

Чтобы клиенты видели друг друга
grep "isolate-workers" /etc/ocserv/ocserv.conf

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

# Убедитесь, что это значение не стоит в true, если хотите прозрачности, 
# хотя ocserv обычно не изолирует клиентов на уровне L3 по умолчанию.
isolate-workers = false
Вам нужно выделить подсеть для клиентов. В IPv6 это обычно префикс /64 или /112

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

# Пул адресов для клиентов
ipv6-network = fda1:2b3c:4d5e::
ipv6-prefix-length = 64
Чтобы клиенты "видели" друг друга по их IPv6 адресам, сервер должен передавать им маршрут к этой самой VPN-сети.

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

# Маршрутизируем всю IPv6 сеть VPN обратно в туннель
route = fda1:2b3c:4d5e::/64
Разрешите прохождение трафика внутри интерфейса vpns+ (или того, который указан в device в конфиге ocserv):

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

# Разрешаем форвардинг трафика внутри VPN интерфейсов
sudo ip6tables -A FORWARD -i vpns+ -o vpns+ -j ACCEPT
ya
^-^
Сообщения: 3451
Зарегистрирован: 16 дек 2021, 19:56

Re: ocserv

Сообщение ya »

## Отключение пользователя в OpenConnect Server (ocserv) на Debian

**Основной метод — использование встроенных инструментов управления:**

### Просмотр активных сессий

Сначала посмотрите список подключённых пользователей:

```bash
sudo occtl show sessions
```

Эта команда отобразит все активные соединения с информацией о пользователях, IP-адресах и времени подключения.

### Отключение конкретного пользователя

Используйте `occtl` с параметром `disconnect`:

```bash
sudo occtl disconnect USERNAME
```

Замените `USERNAME` на имя пользователя, которого нужно отключить.

### Альтернативный способ — через PID сессии

Если вам нужна более специфичная информация:

```bash
sudo occtl show sessions verbose
```

Затем отключите по ID сессии:

```bash
sudo occtl disconnect id:SESSION_ID
```

### Полезные команды occtl

| Команда | Описание |
|---------|---------|
| `sudo occtl show sessions` | Список всех активных сессий |
| `sudo occtl show sessions verbose` | Детальная информация о сессиях |
| `sudo occtl disconnect USERNAME` | Отключить пользователя по имени |
| `sudo occtl disconnect id:ID` | Отключить по ID сессии |
| `sudo occtl show status` | Статус сервера |

---

### Проверка, что occtl работает

Если команда `occtl` не найдена, убедитесь, что **ocserv установлен** и запущен:

```bash
sudo systemctl status ocserv
```

Если сокет управления недоступен, перезагрузите сервис:

```bash
sudo systemctl restart ocserv
```

---

**Нужна ли вам помощь с конфигурацией ocserv или другими аспектами управления сервером?**
ya
^-^
Сообщения: 3451
Зарегистрирован: 16 дек 2021, 19:56

Re: ocserv

Сообщение ya »

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

 occtl ?
Available Commands
 disconnect user [NAME] Disconnect the specified user
 disconnect id [ID]     Disconnect the specified ID
     unban ip [IP]      Unban the specified IP
           reload       Reloads the server configuration
      show status       Prints the status and statistics of the server
       show users       Prints the connected users
     show ip bans       Prints the banned IP addresses
 show ip ban points     Prints all the known IP addresses which have points
     show iroutes       Prints the routes provided by users of the server
 show sessions all      Prints all the session IDs
 show sessions valid    Prints all the valid for reconnection sessions
 show session [SID]     Prints information on the specified session
    show user [NAME]    Prints information on the specified user
      show id [ID]      Prints information on the specified ID
      show events       Provides information about connecting users
         stop now       Terminates the server
            reset       Resets the screen and terminal
         help or ?      Prints this help
             exit       Exits this application
root@devuan-xray:~# occtl disconnect user del4

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

 occtl -n show users
Ответить