Bootstrap

Полный гайд по настройке PBR на OpenWrt (ASUS RT-AC51U)

Полный гайд по настройке 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 интерфейса

  1. Зайдите в Network → Interfaces.
  2. Убедитесь, что ваш VPN интерфейс (обычно tun0 или awg) активен.
  3. Для 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" не активна.

int_wan_gateway.png

2.2 Настройка AWG (VPN) интерфейса

Зайдите в Network → Interfaces → awg → Advanced Settings.

Убедитесь, что опция "Use default gateway" также не активна.

int_awg_gateway.png

3. Настройка PBR через веб-интерфейс

  1. Перейдите в Services → Policy Based Routing.

3.1 Добавление поддерживаемых интерфейсов

Прежде чем создавать правила, необходимо добавить VPN-интерфейс (например, awg) в список поддерживаемых.

Для этого перейдите в Configuration → Advanced Configuration и в поле Supported Interfaces добавьте awg, затем нажмите Save & Apply.

Supported_Interfaces.png

3.2 Глобальные настройки PBR

* Включите сервис (Enable).

* В поле IPv4 Service Chain выберите PREROUTING.

* Убедитесь, что в Supported Interfaces добавлены wan и ваш VPN интерфейс (например awg).

3.3 Создание правил (политик)

Правила добавляются кнопкой Add на вкладке Policies.

addPolitics.png

Правило 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

ru_ips_polit.png

Правило 2: Весь остальной трафик через VPN

* Name: Например, all_to_vpn.

* Local Address: Та же LAN-сеть, 192.168.55.0/24.

* Remote Addresses: Оставьте пустым.

* Interface: Ваш VPN интерфейс, например awg.

* Protocol: all

* Chain: prerouting

all_to_vpn.png

Важно: Порядок правил имеет значение. Правило для российских 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.

ПолеЗначение
Nameru_ips
Local Address192.168.55.0/24
Remoteсписок ip
Interfacewan
Protocolall
Chainprerouting

✅ Правило 2: Весь остальной трафик → VPN

Цель: всё, что не попало под правило выше, идёт в VPN.

ПолеЗначение
Nameall_to_vpn
Local Address192.168.55.0/24
Remote(пусто)
Interfaceawg
Protocolall
Chainprerouting

Порядок правил важен

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

  1. Network → DHCP and DNS: Убедитесь, что dnsmasq-full активен. DHCP раздаёт правильные шлюзы (LAN IP роутера). * VPN трафик работает только через PBR, а не как default gateway.
  2. Firewall zones: VPN зона существует и связана с нужными интерфейсами. WAN зона активна для трафика.

6. Проверка настроек Firewall

OpenWrt_pbr_firewall.png

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. А после установки пакетов, возвращаем всё как было.

Копирование материалов разрешается только с указанием автора Roman Sakhno и индексируемой прямой ссылкой на сайт (http://itdid.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/sahroman.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/sahroman.

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как настроить свой компьютер

  2. Текстовая ссылка:

    Она выглядит вот так: Как настроить свой компьютер

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

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