Update README.md
This commit is contained in:
35
README.md
35
README.md
@@ -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
|
apt update && apt dist-upgrade -y
|
||||||
```
|
```
|
||||||
@@ -19,10 +20,12 @@ modprobe ovpn-dco-v2
|
|||||||
lsmod | grep ovpn
|
lsmod | grep ovpn
|
||||||
```
|
```
|
||||||
Если вывод пуст, разбираемся.
|
Если вывод пуст, разбираемся.
|
||||||
Если вывод что-то типа
|
Если вывод что-то типа:
|
||||||
> ovpn_dco_v2 86016 0
|
```
|
||||||
> ip6_udp_tunnel 16384 1 ovpn_dco_v2
|
ovpn_dco_v2 86016 0
|
||||||
> udp_tunnel 32768 1 ovpn_dco_v2
|
ip6_udp_tunnel 16384 1 ovpn_dco_v2
|
||||||
|
udp_tunnel 32768 1 ovpn_dco_v2
|
||||||
|
```
|
||||||
То всё хорошо, можно примменять на постоянку:
|
То всё хорошо, можно примменять на постоянку:
|
||||||
```
|
```
|
||||||
echo "ovpn-dco-v2" | sudo tee -a /etc/modules
|
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
|
update-initramfs -u -k all
|
||||||
```
|
```
|
||||||
Можно ещё раз перезагрузиться и проверить наличие dco-модуля после перезагрузки `lsmod | grep ovpn`
|
Можно ещё раз перезагрузиться и проверить наличие dco-модуля после перезагрузки. `lsmod | grep ovpn`
|
||||||
|
|
||||||
Теперь приступим к настройке OpenVPN-сервера.
|
##Настройка OpenVPN-сервера.
|
||||||
Инициализируем инфраструктуру открытых ключей и выпускаем сертификат сервера (без паролей для автозапуска):
|
Инициализируем инфраструктуру открытых ключей и выпускаем сертификат сервера (без паролей для автозапуска):
|
||||||
```
|
```
|
||||||
make-cadir ~/openvpn-ca && cd ~/openvpn-ca
|
make-cadir ~/openvpn-ca && cd ~/openvpn-ca
|
||||||
@@ -118,7 +121,7 @@ WantedBy=multi-user.target
|
|||||||
```
|
```
|
||||||
```
|
```
|
||||||
systemctl daemon-reload
|
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
|
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 ...`.
|
Можно создавать клиентов с помощью скрипта: `./gen-client.sh user1 user2 user3 ...`.
|
||||||
|
|
||||||
|
##Настройка клиента-шлюза
|
||||||
Теперь займёмся клиентом, который будет выступать в роли шлюза.
|
Если ещё не сделано, необходимо проделать все шаги из раздела **Подготовка**.
|
||||||
|
|||||||
Reference in New Issue
Block a user