96 lines
3.9 KiB
Markdown
96 lines
3.9 KiB
Markdown
Схема следующа. OpenVPN-сервер находится в РФ, к нему подключаютсся клиенты, а также шлюз, через который идёт весь трафик. Обязательно использование режима DCO (Data channel offloading) для OpenVPN-интерфейсов клиента и шлюза, т.к. при включении этого режима производительность увеличивается драматически. Поэтому использование готовых скриптов типа github/angristan нам не подходит, будем поднимать всё ручками. Для начала нам нужно два сервера - в РФ и в забугорище. Оба подготавливаем идентично:
|
||
```
|
||
apt update && apt dist-upgrade -y
|
||
```
|
||
Если произошёл апгрейд ядра, нужно обязательно перезагрузиться, т.к. в дальнейшем мы будем устанавливать расширения ядра.
|
||
```
|
||
reboot
|
||
```
|
||
Когда перезагрузились, устанавливаем необходимые пакеты:
|
||
```
|
||
apt install -y openvpn openvpn-dco-dkms easy-rsa
|
||
```
|
||
Далее включаем модуль openvpn-dco:
|
||
```
|
||
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
|
||
То всё хорошо, можно примменять на постоянку:
|
||
```
|
||
echo "ovpn-dco-v2" | sudo tee -a /etc/modules
|
||
```
|
||
```
|
||
update-initramfs -u -k all
|
||
```
|
||
Можно ещё раз перезагрузиться и проверить наличие dco-модуля после перезагрузки `lsmod | grep ovpn`
|
||
|
||
Теперь приступим к настройке OpenVPN-сервера.
|
||
Инициализируем инфраструктуру открытых ключей и выпускаем сертификат сервера (без паролей для автозапуска):
|
||
```
|
||
make-cadir ~/openvpn-ca && cd ~/openvpn-ca
|
||
./easyrsa init-pki
|
||
./easyrsa build-ca nopass
|
||
./easyrsa gen-dh
|
||
|
||
# Генерация и подписание ключей сервера
|
||
./easyrsa gen-req server nopass
|
||
./easyrsa sign-req server server
|
||
|
||
# Генерация секретного ключа защиты от сканирования (TLS-Crypt)
|
||
openvpn --genkey secret tls-crypt.key
|
||
```
|
||
Копируем ключи в рабочую директорию OpenVPN-сервера:
|
||
```
|
||
cp pki/ca.crt pki/dh.pem pki/issued/server.crt pki/private/server.key tls-crypt.key /etc/openvpn/server/
|
||
```
|
||
Создаём конфиг сервера:
|
||
```
|
||
nano /etc/openvpn/server/server.conf
|
||
```
|
||
Вставляем следующее содержимое:
|
||
```
|
||
dev tun
|
||
proto udp
|
||
port 1194
|
||
server 10.210.0.0 255.255.255.0
|
||
topology subnet
|
||
|
||
# Сертификаты и секреты
|
||
ca /etc/openvpn/server/ca.crt
|
||
cert /etc/openvpn/server/server.crt
|
||
key /etc/openvpn/server/server.key
|
||
dh /etc/openvpn/server/dh.pem
|
||
tls-crypt /etc/openvpn/server/tls-crypt.key
|
||
|
||
# Максимальная скорость (Только AES-128-GCM, без сжатия)
|
||
data-ciphers AES-128-GCM
|
||
data-ciphers-fallback AES-128-GCM
|
||
|
||
# Логирование (минимум операций, разгрузка CPU)
|
||
verb 1
|
||
mute 20
|
||
|
||
# Тайм-ауты и папка индивидуальных настроек
|
||
keepalive 10 120
|
||
persist-key
|
||
persist-tun
|
||
client-config-dir /etc/openvpn/server/ccd
|
||
|
||
# Маршрут по умолчанию для клиентов
|
||
push "redirect-gateway def1 bypass-dhcp"
|
||
push "dhcp-option DNS 1.1.1.1"
|
||
```
|
||
|
||
|
||
|
||
```
|
||
ip -details link show dev tun0
|
||
``` |