Как стать автором
Обновить

Точечная маршрутизация на роутере с OpenWrt. Часть 2: Поиск и исправление ошибок

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров24K
Всего голосов 17: ↑16 и ↓1+15
Комментарии7

Комментарии 7

Это был косяк в пакете firewall4, либо обновите его

господи, я три дня мучался с этой проблемой. Firewall зависал на загрузке списков. Начинал съедать всю память, потом вылетал с ошибкой. Пришлось из-за этого накатить версию 21. А это всего лишь в этом проблема была, а не моя ошибка... Благодарю за информацию и за инструкцию в целом

Я тоже с этим наплясался по граблям, потом автору это сообщил и получил рецепт решения с обновлением файерволла.

Кстати, даблчек загрузки списков не панацея. Было отключение света и сеть у провайдера поднялась спустя энное время после загрузки роутера...

Спасибо за статью.

Не проще ли использовать специализированный софт (OpenClash) для выборочного обхода блокировок на OpenWrt?

OpenClash - централизованный выборочный обход блокировок на роутере: https://zerolab.net/openclash-tsientralizovannyi-vyborochnyi-obkhod-blokirovok-na-routierie/

Пример конфигурации: https://zerolab.net/clash-vyborochnyi-obkhod-blokirovok/

Рекомендую использовать OpenClash сразу с моими правками: https://github.com/zerolabnet/OpenClash

Clash Antifilter Lists: https://github.com/zerolabnet/clash-antifilter-lists

Благодарю, материал впечатляющий!

У меня затык с фаерволлом. Скрипт фризит на firewall restart, думал поможет обновление пакета, но нет. С тоннелем все хорошо. Проблема со списками, файлы загружаются и в них есть списки, сеты тоже создаются, но в них нет списков IP. Вот вывод командв просмотра списков:

# nft list ruleset | grep -A 10 vpn_ip
        set vpn_ip {
                type ipv4_addr
                flags interval
                auto-merge
        }

        set vpn_subnets {
                type ipv4_addr
                flags interval
                auto-merge
        }
--
                iifname "br-lan" ip daddr @vpn_ip counter packets 0 bytes 0 meta mark set 0x00000001 comment "!fw4: mark_ip"
                iifname "br-lan" ip daddr @vpn_community counter packets 0 bytes 0 meta mark set 0x00000001 comment "!fw4: mark_community"
        }

        chain mangle_postrouting {
                type filter hook postrouting priority mangle; policy accept;
        }

        chain mangle_input {
                type filter hook input priority mangle; policy accept;
        }

Сегодня сделал все шаг за шагом на свежей установке OpenWrt 22.03.2, перед этим просто обновил все пакеты. Изменил только путь хранения списков на примонтированной флешке /mnt/sda1/lst. При запуске скрипта все равно вижу невозможность рестарта firewall.

root@mRouter:/# /etc/init.d/hirkn
Run download lists
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0  1909    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0 1071k    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11864  100 11864    0     0  12920      0 --:--:-- --:--:-- --:--:-- 23262
Firewall restart
Killed
The rendered ruleset contains errors, not doing firewall restart.
Syntax: /etc/init.d/hirkn [command]

Как я думаю, что он просто не может съесть правила.

config zone
        option name 'wg'
        option family 'ipv4'
        option masq '1'
        option output 'ACCEPT'
        option forward 'REJECT'
        option input 'REJECT'
        option mtu_fix '1'
        option network 'wg0'

config forwarding
        option src 'lan'
        option dest 'wg'

config ipset
        option name 'vpn_ip'
        option match 'dst_net'
        option loadfile '/mnt/sda1/lst/ip.lst'

config ipset
        option name 'vpn_subnets'
        option match 'dst_net'
        option loadfile '/mnt/sda1/lst/subnet.lst'

config ipset
        option name 'vpn_community'
        option match 'dst_net'
        option loadfile '/mnt/sda1/lst/community.lst'

config rule
        option name 'mark_subnet'
        option src 'lan'
        option dest '*'
        option ipset 'vpn_subnets'
        option target 'MARK'
        option family 'ipv4'
        list proto 'all'
        option set_mark '0x1'

config rule
        option name 'mark_ip'
        option src 'lan'
        option dest '*'
        option ipset 'vpn_ip'
        option target 'MARK'
        option family 'ipv4'
        list proto 'all'
        option set_mark '0x1'

config rule
        option name 'mark_community'
        option src 'lan'
        option dest '*'
        option ipset 'vpn_community'
        option target 'MARK'
        option family 'ipv4'
        list proto 'all'
        option set_mark '0x1'

В общем, я сам решил проблему. Вдруг у кого возникнет такая же, я решил ее путем исправления синтаксиса /etc/config/firewall по примеру шаблона обновленного пакета firewall4:

config zone
        option name             wg
        option family           ipv4
        option masq             1
        option output           ACCEPT
        option forward          REJECT
        option input            REJECT
        option mtu_fix          1
        option network          wg0

config forwarding
        option src              lan
        option dest             wg

config ipset
        option name             vpn_ip
        option match            dst_net
        option loadfile         /mnt/sda1/lst/ip.lst

config ipset
        option name             vpn_subnets
        option match            dst_net
        option loadfile         /mnt/sda1/lst/subnet.lst

config ipset
        option name             vpn_community
        option match            dst_net
        option loadfile         /mnt/sda1/lst/community.lst

config rule
        option name             mark_subnet
        option src              lan
        option dest             *
        option ipset            vpn_subnets
        option target           MARK
        option family           ipv4
        list proto              'all'
        option set_mark         0x1

config rule
        option name             mark_ip
        option src              lan
        option dest             *
        option ipset            vpn_ip
        option target           MARK
        option family           ipv4
        list proto              'all'
        option set_mark         0x1

config rule
        option name             mark_community
        option src              lan
        option dest             *
        option ipset            vpn_community
        option target           MARK
        option family           ipv4
        list proto              'all'
        option set_mark         0x1

Оставлю это здесь, вдруг кому поможет)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории