Update README.md

This commit is contained in:
2026-05-21 12:33:33 +00:00
parent 97d30b8924
commit a03006a7c0

View File

@@ -1,4 +1,5 @@
Схема следующа. OpenVPN-сервер находится в РФ, к нему подключаютсся клиенты, а также шлюз, через который идёт весь трафик. Обязательно использование режима DCO (Data channel offloading) для OpenVPN-интерфейсов клиента и шлюза, т.к. при включении этого режима производительность увеличивается драматически. Поэтому использование готовых скриптов типа github/angristan нам не подходит, будем поднимать всё ручками. Для начала нам нужно два сервера - в РФ и в забугорище. Оба подготавливаем идентично:
Схема следующа. OpenVPN-сервер находится в РФ, к нему подключаютсся клиенты, а также шлюз, через который идёт весь трафик. Обязательно использование режима DCO (Data channel offloading) для OpenVPN-интерфейсов клиента и шлюза, т.к. при включении этого режима производительность увеличивается драматически. Поэтому использование готовых скриптов типа github/angristan нам не подходит, будем поднимать всё ручками. Для начала нам нужно два сервера - в РФ и в забугорище. Оба подготавливаем идентично.
##Подготовка.
```
apt update && apt dist-upgrade -y
```
@@ -19,10 +20,12 @@ modprobe ovpn-dco-v2
lsmod | grep ovpn
```
Если вывод пуст, разбираемся.
Если вывод что-то типа
> ovpn_dco_v2 86016 0
> ip6_udp_tunnel 16384 1 ovpn_dco_v2
> udp_tunnel 32768 1 ovpn_dco_v2
Если вывод что-то типа:
```
ovpn_dco_v2 86016 0
ip6_udp_tunnel 16384 1 ovpn_dco_v2
udp_tunnel 32768 1 ovpn_dco_v2
```
То всё хорошо, можно примменять на постоянку:
```
echo "ovpn-dco-v2" | sudo tee -a /etc/modules
@@ -30,9 +33,9 @@ echo "ovpn-dco-v2" | sudo tee -a /etc/modules
```
update-initramfs -u -k all
```
Можно ещё раз перезагрузиться и проверить наличие dco-модуля после перезагрузки `lsmod | grep ovpn`
Можно ещё раз перезагрузиться и проверить наличие dco-модуля после перезагрузки. `lsmod | grep ovpn`
Теперь приступим к настройке OpenVPN-сервера.
##Настройка OpenVPN-сервера.
Инициализируем инфраструктуру открытых ключей и выпускаем сертификат сервера (без паролей для автозапуска):
```
make-cadir ~/openvpn-ca && cd ~/openvpn-ca
@@ -118,7 +121,7 @@ WantedBy=multi-user.target
```
```
systemctl daemon-reload
systemctl enable vpn-policy-routing.service
systemctl enable --now vpn-policy-routing.service
```
Ну а теперь самое время запустить сервер:
```
@@ -129,8 +132,20 @@ systemctl start openvpn-server@server.service
ip -details link show dev tun0 | grep dco
```
Вывод должен быть не пустой.
Проверяем, применился ли policy-based routing:
```
ip rule show | grep 100
```
Мы должны увидеть строчку `from 10.210.0.0/24 lookup 100`. Это значит, что весь трафик из VPN-сети отправляется в таблицу 100.
Далее посмотрим саму таблицу:
```
ip route show table 100
```
Мы должны увидеть 2 строчки:
`default via 10.210.0.254 dev tun0` - маршрут по-умолчанию через шлюз
`10.210.0.0/24 dev tun0 proto kernel scope link` - а где вообще искать нашу внутреннюю впн-подсеть. В дефолтную таблицу маршрутизации эта информация поступает автомматически, а в кастомную нужно добавлять вручную.
Можно создавать клиентов с помощью скрипта: `./gen-client.sh user1 user2 user3 ...`.
Теперь займёмся клиентом, который будет выступать в роли шлюза.
##Настройка клиента-шлюза
Если ещё не сделано, необходимо проделать все шаги из раздела **Подготовка**.