add
This commit is contained in:
parent
e039fddeab
commit
e668763b96
@ -2,146 +2,148 @@
|
|||||||
title: Инструкция по обслуживанию VPN-шлюза (Debian)
|
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
|
```bash
|
||||||
sudo systemctl status openvpn-client@default_route
|
sudo /usr/local/bin/vpn-domains.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
### Маршруты к доменам через VPN:
|
### Старт systemd-сервиса вручную
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
ip rule show
|
sudo systemctl start vpn-routing.service
|
||||||
ip route show table vpnroute
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Интерфейс VPN:
|
### Автозапуск при загрузке
|
||||||
|
|
||||||
```bash
|
```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
|
```bash
|
||||||
sudo systemctl restart openvpn-client@default_route
|
sudo systemctl restart vpn-routing.service
|
||||||
```
|
|
||||||
|
|
||||||
### Обновление маршрутов:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo systemctl restart vpn-routing
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔄 3. Обновление списка доменов
|
## 4. Устранение неполадок
|
||||||
|
|
||||||
Редактировать файл:
|
* Если сайт не открывается через VPN:
|
||||||
|
|
||||||
```bash
|
* Убедитесь, что его IP-адрес попадает в `vpnroute`:
|
||||||
sudo nano /opt/ovpn/vpn-domains.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
Применить изменения:
|
```bash
|
||||||
|
ip rule show
|
||||||
|
ip route show table vpnroute
|
||||||
|
```
|
||||||
|
* Проверьте DNS-резолвинг:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo systemctl restart vpn-routing
|
dig +short <домен>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* Если после перезагрузки маршруты отсутствуют:
|
||||||
|
|
||||||
|
* Убедитесь, что unit-файл включён: `systemctl is-enabled vpn-routing.service`
|
||||||
|
* Проверить таймер: `systemctl list-timers | grep vpn-routing`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🕒 4. Автообновление маршрутов
|
Готово. Инфраструктура настроена. Все изменения — только через `/opt/ovpn/vpn-domains.txt` и `/opt/ovpn/vpn-subnets.txt`.
|
||||||
|
|
||||||
Обновление каждые 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
|
|
||||||
```
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user