add
This commit is contained in:
parent
e039fddeab
commit
e668763b96
@ -2,146 +2,148 @@
|
||||
title: Инструкция по обслуживанию VPN-шлюза (Debian)
|
||||
---
|
||||
|
||||
## 🧭 Общая схема
|
||||
## 1. Расположение файлов
|
||||
|
||||
* Устройства в сети используют `192.168.1.120` как шлюз
|
||||
* Только указанные домены маршрутизируются через VPN (`tun0`)
|
||||
* Остальной трафик идёт напрямую через `enp5s0`
|
||||
### Скрипт маршрутизации
|
||||
|
||||
* Путь: `/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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 1. Проверка статуса
|
||||
## 2. Команды управления
|
||||
|
||||
### Подключение OpenVPN:
|
||||
### Первый запуск вручную (после запуска VPN)
|
||||
|
||||
```bash
|
||||
sudo systemctl status openvpn-client@default_route
|
||||
sudo /usr/local/bin/vpn-domains.sh
|
||||
```
|
||||
|
||||
### Маршруты к доменам через VPN:
|
||||
### Старт systemd-сервиса вручную
|
||||
|
||||
```bash
|
||||
ip rule show
|
||||
ip route show table vpnroute
|
||||
sudo systemctl start vpn-routing.service
|
||||
```
|
||||
|
||||
### Интерфейс VPN:
|
||||
### Автозапуск при загрузке
|
||||
|
||||
```bash
|
||||
ip a show tun0
|
||||
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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔁 2. Перезапуск компонентов
|
||||
## 3. Важные замечания
|
||||
|
||||
### Перезапуск OpenVPN:
|
||||
* OpenVPN клиент должен быть настроен с `route-nopull`, чтобы не перетягивать весь трафик через VPN.
|
||||
* Файл `/etc/openvpn/client/default_route.conf` должен ссылаться на рабочий `.ovpn`-файл или содержать его содержимое.
|
||||
* IP-адреса, добавленные вручную, будут сохранены при перезапуске скрипта.
|
||||
* После редактирования `.txt`-файлов необходимо перезапустить сервис:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart openvpn-client@default_route
|
||||
```
|
||||
|
||||
### Обновление маршрутов:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart vpn-routing
|
||||
sudo systemctl restart vpn-routing.service
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 3. Обновление списка доменов
|
||||
## 4. Устранение неполадок
|
||||
|
||||
Редактировать файл:
|
||||
* Если сайт не открывается через VPN:
|
||||
|
||||
```bash
|
||||
sudo nano /opt/ovpn/vpn-domains.txt
|
||||
```
|
||||
* Убедитесь, что его IP-адрес попадает в `vpnroute`:
|
||||
|
||||
Применить изменения:
|
||||
```bash
|
||||
ip rule show
|
||||
ip route show table vpnroute
|
||||
```
|
||||
* Проверьте DNS-резолвинг:
|
||||
|
||||
```bash
|
||||
sudo systemctl restart vpn-routing
|
||||
```
|
||||
```bash
|
||||
dig +short <домен>
|
||||
```
|
||||
|
||||
* Если после перезагрузки маршруты отсутствуют:
|
||||
|
||||
* Убедитесь, что unit-файл включён: `systemctl is-enabled vpn-routing.service`
|
||||
* Проверить таймер: `systemctl list-timers | grep vpn-routing`
|
||||
|
||||
---
|
||||
|
||||
## 🕒 4. Автообновление маршрутов
|
||||
|
||||
Обновление каждые 15 минут через systemd-timer:
|
||||
|
||||
Проверка:
|
||||
|
||||
```bash
|
||||
systemctl list-timers vpn-routing.timer
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔥 5. iptables / UFW
|
||||
|
||||
### NAT:
|
||||
|
||||
```bash
|
||||
sudo iptables -t nat -L POSTROUTING -n -v
|
||||
```
|
||||
|
||||
Должны быть `MASQUERADE` на `tun0` и `enp5s0`
|
||||
|
||||
### UFW:
|
||||
|
||||
```bash
|
||||
sudo ufw status verbose
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧰 6. Обновление системы
|
||||
|
||||
```bash
|
||||
sudo apt update && sudo apt upgrade
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🪠 7. Сброс маршрутов
|
||||
|
||||
```bash
|
||||
sudo ip rule | grep vpnroute | awk '{print $1}' | xargs -I {} sudo ip rule del priority {}
|
||||
sudo ip route flush table vpnroute
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 8. Логи
|
||||
|
||||
### vpn-routing:
|
||||
|
||||
```bash
|
||||
sudo journalctl -u vpn-routing.service -n 50
|
||||
```
|
||||
|
||||
### UFW:
|
||||
|
||||
```bash
|
||||
sudo ufw logging on
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 9. При пропаже интернета у клиентов
|
||||
|
||||
1. `ping 192.168.1.120`
|
||||
2. `cat /proc/sys/net/ipv4/ip_forward`
|
||||
3. `iptables -t nat -L POSTROUTING`
|
||||
4. `systemctl status openvpn-client@default_route`
|
||||
5. `dmesg | grep UFW`
|
||||
|
||||
---
|
||||
|
||||
## ♻️ 10. Полная перезагрузка
|
||||
|
||||
```bash
|
||||
sudo systemctl restart openvpn-client@default_route
|
||||
sudo systemctl restart vpn-routing
|
||||
sudo systemctl restart ufw
|
||||
```
|
||||
Готово. Инфраструктура настроена. Все изменения — только через `/opt/ovpn/vpn-domains.txt` и `/opt/ovpn/vpn-subnets.txt`.
|
||||
|
Loading…
x
Reference in New Issue
Block a user