Полный гайд по настройке PBR на OpenWrt (ASUS RT-AC51U)
Этот гайд подходит для старых версий OpenWrt с настроенным интерфейсом AmneziaVPN. Он показывает, как:
* Установить PBR и веб-интерфейс luci-app-pbr.
* Настроить маршрутизацию всего трафика через свою виртуальную приватную сеть, для своих устройств.
* Настроить исключения конкретного списка IP адресов через WAN, используя пакет pbr.
* Обеспечить корректную работу DHCP и DNS.
1. Подготовка (Установка PBR)
Если пакет PBR ещё не установлен, подключитесь к роутеру по SSH и выполните:
☯
Terminal:
⌕
≡
✕
opkg update opkg remove dnsmasq opkg install pbr luci-app-pbr dnsmasq-full
> Мы заменяем dnsmasq на dnsmasq-full, чтобы PBR корректно работал с DNS и DHCP.
1.1 Проверка VPN интерфейса
- Зайдите в Network → Interfaces.
- Убедитесь, что ваш VPN интерфейс (обычно
tun0илиawg) активен. - Для VPN интерфейса убедитесь, что создана зона в Firewall (обычно
awgиwan).
2. Убрать галочки шлюза по умолчанию с интерфейсов WAN и AWG
Важно: Маршрутизацией должен управлять PBR, а не интерфейсы. Поэтому в настройках каждого интерфейса (как WAN, так и VPN, например awg) необходимо снять галочку "Use default gateway" в разделе Advanced Settings.
Это нужно для того, чтобы весь трафик не шел автоматически через основной или VPN-шлюз по умолчанию, а направлялся согласно политикам PBR.
2.1 Настройка WAN интерфейса
Зайдите в Network → Interfaces → wan → Advanced Settings.
Убедитесь, что опция "Use default gateway" не активна.

2.2 Настройка AWG (VPN) интерфейса
Зайдите в Network → Interfaces → awg → Advanced Settings.
Убедитесь, что опция "Use default gateway" также не активна.

3. Настройка PBR через веб-интерфейс
- Перейдите в Services → Policy Based Routing.
3.1 Добавление поддерживаемых интерфейсов
Прежде чем создавать правила, необходимо добавить VPN-интерфейс (например, awg) в список поддерживаемых.
Для этого перейдите в Configuration → Advanced Configuration и в поле Supported Interfaces добавьте awg, затем нажмите Save & Apply.

3.2 Глобальные настройки PBR
* Включите сервис (Enable).
* В поле IPv4 Service Chain выберите PREROUTING.
* Убедитесь, что в Supported Interfaces добавлены wan и ваш VPN интерфейс (например awg).
3.3 Создание правил (политик)
Правила добавляются кнопкой Add на вкладке Policies.

Правило 1: Российские IP через WAN
* Name: Например, ru_ips.
* Local Address: Ваша LAN-сеть, например 192.168.55.0/24.
* Remote Addresses: Вставьте список российских подсетей (можно расширить при необходимости). Указывайте каждую подсеть через пробел. Пример списка:
☯
Terminal:
⌕
≡
✕
5.255.255.0/24 77.88.0.0/18 87.250.248.0/21 93.158.128.0/18 213.180.192.0/19 95.161.0.0/17 217.69.128.0/20 128.140.160.0/20 178.22.88.0/21 109.207.0.0/20 213.59.0.0/16 188.254.0.0/16 194.54.12.0/22 194.186.207.0/24 193.232.146.0/24 91.194.226.0/24 188.40.167.82/23 178.248.233.148/23 87.240.129.133/23 2.56.24.0/23 2.56.26.0/23 2.56.88.0/22 2.56.180.0/22 2.56.240.0/23 2.57.0.0/24 2.57.36.0/22 2.57.52.0/22 2.57.80.0/22 2.57.112.0/22
* Interface: wan
* Protocol: all
* Chain: prerouting

Правило 2: Весь остальной трафик через VPN
* Name: Например, all_to_vpn.
* Local Address: Та же LAN-сеть, 192.168.55.0/24.
* Remote Addresses: Оставьте пустым.
* Interface: Ваш VPN интерфейс, например awg.
* Protocol: all
* Chain: prerouting

Важно: Порядок правил имеет значение. Правило для российских IP (ru_ips) должно находиться выше правила "всё через VPN" (all_to_vpn).
Что именно указывать в `Local Address`: `0.0.0.0/0` или `192.168.55.0/24`
Короткий ответ
> ✅ Правильно указывать сеть LAN
> 192.168.55.0/24 (или вашу реальную LAN-сеть)
0.0.0.0/0 — допустимо, но это менее правильно и может привести к побочным эффектам.
Почему LAN-сеть — правильный вариант
Как PBR работает технически
PBR обрабатывает пакеты в цепочке PREROUTING, и поле Local Address означает:
> IP-адрес источника (source IP)
То есть:
* это откуда пришёл пакет
* а не куда он идёт
Что происходит при `192.168.55.0/24`
☯
Terminal:
⌕
≡
✕
Источник: 192.168.55.X (устройства в LAN)
↓
PBR решает маршрут
↓
WAN или VPN✅ Только трафик клиентов LAN участвует в PBR
✅ Сам роутер не ломает себе маршруты
✅ VPN не рвётся
✅ Нет рекурсии и странных loop’ов
Что происходит при `0.0.0.0/0`
☯
Terminal:
⌕
≡
✕
Источник: любой IP
Это включает:
* LAN
* сам роутер (DNS, NTP, opkg, VPN keepalive)
* трафик интерфейсов wan / awg
❗ Возможные проблемы:
* VPN-трафик может попытаться пойти в VPN ещё раз
* DNS роутера может уйти не туда
* нестабильность при перезапуске интерфейсов
? Иногда работает, но это "грубый молоток"
> ? Всегда указывайте вашу LAN-сеть по которой вы подлкючились к роутеру OpenWrt, а не 0.0.0.0/0
Пример:
☯
Terminal:
⌕
≡
✕
#если адрес вашего роутера 192.168.55.1 192.168.55.0/24
Ещё раз как правильно оформить правила PBR
✅ Правило 1: Российские IP → WAN
Цель: сайты с IP из ru.zone идут напрямую, без VPN.
| Поле | Значение |
| Name | ru_ips |
| Local Address | 192.168.55.0/24 |
| Remote | список ip |
| Interface | wan |
| Protocol | all |
| Chain | prerouting |
✅ Правило 2: Весь остальной трафик → VPN
Цель: всё, что не попало под правило выше, идёт в VPN.
| Поле | Значение |
| Name | all_to_vpn |
| Local Address | 192.168.55.0/24 |
| Remote | (пусто) |
| Interface | awg |
| Protocol | all |
| Chain | prerouting |
❗ Порядок правил важен
ru_ips — выше
all_to_vpn — ниже
4. Перезапуск и проверка работы PBR
После настройки правил необходимо перезапустить сервис PBR:
☯
Terminal:
⌕
≡
✕
/etc/init.d/pbr restart
Пример успешного выполнения:
☯
Terminal:
⌕
≡
✕
Resetting chains and sets [✓] Removing routing for 'wan/eth0.2/192.168.0.1' [✓] Removing routing for 'awg/10.8.1.9' [✓] pbr 1.2.0-r6 (fw4 nft file mode) stopped [✓] Using uplink interface (on_start): wan [✓] Found uplink gateway (on_start): 192.168.0.1 [✓] Processing environment (on_start) [✓] Setting up routing for 'wan/eth0.2/192.168.0.1' [✓] Setting up routing for 'awg/10.8.1.9' [✓] Routing 'ru_ips' via wan [✓] Routing 'all_to_vpn' via awg [✓] Installing fw4 nft file [✓] Setting interface trigger for wan [✓] Setting interface trigger for wan6 [✓] Setting interface trigger for awg [✓] pbr 1.2.0-r6 monitoring interfaces: wan wan6 awg pbr 1.2.0-r6 (fw4 nft file mode) started with gateways: wan/eth0.2/192.168.0.1 awg/10.8.1.9
Проверьте статус сервиса:
☯
Terminal:
⌕
≡
✕
/etc/init.d/pbr status
Сервис должен быть started, а в выводе должны отображаться успешно применённые политики и маршруты.
☯
Terminal:
⌕
≡
✕
# живой пример
root@OpenWrt:/etc/pbr# /etc/init.d/pbr status
pbr - environment
pbr 1.2.0-r6 installed on OpenWrt 24.10.5.
Dnsmasq version 2.90 Copyright (c) 2000-2024 Simon Kelley
Compile time options: IPv6 GNU-getopt no-DBus UBus no-i18n no-IDN DHCP DHCPv6 no-Lua TFTP conntrack no-ipset nftset auth cryptohash DNSSEC no-ID loop-detect inotify dumpfile
pbr fw4 nft file: /usr/share/nftables.d/ruleset-post/30-pbr.nft
add chain inet fw4 pbr_mark_0x010000
add rule inet fw4 pbr_mark_0x010000 mark set mark and 0xff00ffff xor 0x010000
add rule inet fw4 pbr_mark_0x010000 return
add chain inet fw4 pbr_mark_0x020000
add rule inet fw4 pbr_mark_0x020000 mark set mark and 0xff00ffff xor 0x020000
add rule inet fw4 pbr_mark_0x020000 return
add rule inet fw4 pbr_prerouting ip saddr { 192.168.55.0/24 } ip daddr { 5.255.255.0/24, 77.88.0.0/18, 87.250.248.0/21, 93.158.128.0/18, 213.180.192.0/19, 95.161.0.0/17, 217.69.128.0/20, 128.140.160.0/20, 178.22.88.0/21, 109.207.0.0/20, 213.59.0.0/16, 188.254.0.0/16, 194.54.12.0/22, 194.186.207.0/24, 193.232.146.0/24, 91.194.226.0/24, 188.40.167.82/23, 178.248.233.148/23, 87.240.129.133/23, 2.56.24.0/23, 2.56.26.0/23, 2.56.88.0/22, 2.56.180.0/22, 2.56.240.0/23, 2.57.0.0/24, 2.57.36.0/22, 2.57.52.0/22, 2.57.80.0/22, 2.57.112.0/22 } goto pbr_mark_0x010000 comment "ru_ips"
add rule inet fw4 pbr_prerouting ip saddr { 192.168.55.0/24 } goto pbr_mark_0x020000 comment "all_to_vpn"
pbr chains - policies
chain pbr_forward { # handle 37
}
chain pbr_input { # handle 38
}
chain pbr_output { # handle 39
}
chain pbr_postrouting { # handle 41
}
chain pbr_prerouting { # handle 40
ip saddr 192.168.55.0/24 ip daddr { 2.56.24.0/22, 2.56.88.0/22, 2.56.180.0/22, 2.56.240.0/23, 2.57.0.0/24, 2.57.36.0/22, 2.57.52.0/22, 2.57.80.0/22, 2.57.112.0/22, 5.255.255.0/24, 77.88.0.0/18, 87.240.128.0/23, 87.250.248.0/21, 91.194.226.0/24, 93.158.128.0/18, 95.161.0.0/17, 109.207.0.0/20, 128.140.160.0/20, 178.22.88.0/21, 178.248.232.0/23, 188.40.166.0/23, 188.254.0.0/16, 193.232.146.0/24, 194.54.12.0/22, 194.186.207.0/24, 213.59.0.0/16, 213.180.192.0/19, 217.69.128.0/20 } goto pbr_mark_0x010000 comment "ru_ips" # handle 5588
ip saddr 192.168.55.0/24 goto pbr_mark_0x020000 comment "all_to_vpn" # handle 5589
}
chain pbr_dstnat { # handle 36
}
pbr chains - marking
chain pbr_mark_0x010000 { # handle 5581
meta mark set meta mark & 0xff01ffff | 0x00010000 # handle 5582
return # handle 5583
}
chain pbr_mark_0x020000 { # handle 5584
meta mark set meta mark & 0xff02ffff | 0x00020000 # handle 5585
return # handle 5586
}
pbr nft sets
pbr tables & routing
IPv4 table 256 pbr_wan route:
default via 192.168.0.1 dev eth0.2
IPv4 table 256 pbr_wan rule(s):
30000: from all fwmark 0x10000/0xff0000 lookup pbr_wan
IPv4 table 257 pbr_awg route:
default via 10.8.1.9 dev awg
IPv4 table 257 pbr_awg rule(s):
29998: from all fwmark 0x20000/0xff0000 lookup pbr_awg
5. Проверка работы
5.1 Веб-интерфейс PBR
* Проверьте, что правила отображаются в правильной последовательности.
* Убедитесь, что интерфейсы WAN и VPN активны.
5.2 DHCP и DNS
- Network → DHCP and DNS: Убедитесь, что dnsmasq-full активен. DHCP раздаёт правильные шлюзы (LAN IP роутера). * VPN трафик работает только через PBR, а не как default gateway.
- Firewall zones: VPN зона существует и связана с нужными интерфейсами. WAN зона активна для трафика.
6. Проверка настроек Firewall

6.1 Общие настройки (верх экрана)
На скрине видно:
* Input: reject
* Output: accept
* Forward: reject
* Flow offloading: None
✅ Это корректно для PBR + VPN
Почему:
* PBR и nftables работают в mangle/prerouting, им не нужен flow offloading
* Flow offloading часто ломает PBR
* reject для input/forward — стандартная безопасная конфигурация
? Ничего менять не нужно
6.2 Зона `lan`
На скрине:
* Forwardings: lan → wan, lan → awg
* Input: accept
* Output: accept
* Forward: accept
* Masquerading: ❌ выключен
✅ Абсолютно правильно
Почему:
* LAN может ходить и в WAN, и в VPN
PBR решает куда именно* пойдёт трафик
* Маскарадинг на LAN не нужен
6.3 Зона `wan`
На скрине:
* Input: reject
* Output: accept
* Forward: reject
* Masquerading: ✅ включён
✅ Правильно и обязательно
Почему:
* Весь трафик в интернет через WAN должен NAT'иться
* WAN не принимает входящие соединения
* Это стандартная схема OpenWrt
6.4 Зона `awg` (VPN)
На скрине:
* Input: reject
* Output: accept
* Forward: reject
* Masquerading: ✅ включён
✅ Тоже правильно
Почему:
* VPN-интерфейс (awg) — это отдельный uplink
* Для VPN маскарадинг обязателен
* Forward не нужен, т.к. маршрутизацией управляет PBR
✅ Итог по firewall
> ? Firewall настроен ПРАВИЛЬНО
>
> Конфигурация:
> * полностью совместима с PBR
> * не мешает nftables
> * не ломает VPN
> * безопасна
p.s.
Если потребуется обновить пакеты на самом роутере, то остановите pbr и добавьте на wan по умолчанию его как getaway. А после установки пакетов, возвращаем всё как было.
-
Создано 20.01.2020 15:15:06
-
Roman Sakhno

Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.