This commit is contained in:
wakadakawaka 2025-07-23 17:56:03 +05:00
parent 9fd8afaf2b
commit 16bfac71a1
3 changed files with 0 additions and 150 deletions

View File

@ -1,150 +0,0 @@
---
title: Инструкция по обслуживанию VPN-шлюза
slug: администрирование-vpn/инструкция-по-обслуживанию-vpn-шлюза
---
## 1. Расположение файлов
### Скрипт маршрутизации
* Путь: `/usr/local/bin/vpn-domains.sh`
* Назначение: разрешает домены из файла и добавляет маршруты в таблицу `vpnroute`
### Список доменов
* Путь: `/opt/ovpn/vpn-domains.txt`
* Содержит список доменов, к которым трафик должен идти через VPN
* Пример:
```
youtube.com
tu.be
googlevideo.com
```
### Список IP-подсетей
- Путь: `/opt/ovpn/vpn-subnets.txt`
- Содержит список IP-адресов или подсетей, к которым трафик также направляется через VPN
- Пример:
```
8.8.8.0/24
209.85.0.0/16
````
### systemd unit-файл
- Путь: `/etc/systemd/system/vpn-routing.service`
- Назначение: запускает скрипт `vpn-domains.sh` после подключения VPN
- Содержимое:
```ini
[Unit]
Description=Selective VPN routing via tun0
After=network-online.target openvpn-client@default_route.service
Requires=openvpn-client@default_route.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/vpn-domains.sh
RemainAfterExit=true
````
### systemd таймер (опционально)
* Путь: `/etc/systemd/system/vpn-routing.timer`
* Назначение: периодически обновляет маршруты на случай смены IP у доменов
* Содержимое:
```ini
[Unit]
Description=Timer to refresh selective VPN routing
[Timer]
OnBootSec=1min
OnUnitActiveSec=30min
Unit=vpn-routing.service
[Install]
WantedBy=timers.target
```
---
## 2. Команды управления
### Первый запуск вручную (после запуска VPN)
```bash
sudo /usr/local/bin/vpn-domains.sh
```
### Старт systemd-сервиса вручную
```bash
sudo systemctl start vpn-routing.service
```
### Автозапуск при загрузке
```bash
sudo systemctl enable vpn-routing.service
```
### Проверка статуса
```bash
systemctl status vpn-routing.service
```
### Перезапуск
```bash
sudo systemctl restart vpn-routing.service
```
### (Опционально) Включение таймера
```bash
sudo systemctl enable --now vpn-routing.timer
```
---
## 3. Важные замечания
* OpenVPN клиент должен быть настроен с `route-nopull`, чтобы не перетягивать весь трафик через VPN.
* Файл `/etc/openvpn/client/default_route.conf` должен ссылаться на рабочий `.ovpn`-файл или содержать его содержимое.
* IP-адреса, добавленные вручную, будут сохранены при перезапуске скрипта.
* После редактирования `.txt`-файлов необходимо перезапустить сервис:
```bash
sudo systemctl restart vpn-routing.service
```
---
## 4. Устранение неполадок
* Если сайт не открывается через VPN:
* Убедитесь, что его IP-адрес попадает в `vpnroute`:
```bash
ip rule show
ip route show table vpnroute
```
* Проверьте DNS-резолвинг:
```bash
dig +short <домен>
```
* Если после перезагрузки маршруты отсутствуют:
* Убедитесь, что unit-файл включён: `systemctl is-enabled vpn-routing.service`
* Проверить таймер: `systemctl list-timers | grep vpn-routing`
---
Готово. Инфраструктура настроена. Все изменения — только через `/opt/ovpn/vpn-domains.txt` и `/opt/ovpn/vpn-subnets.txt`.