Bridge firewall
Вступ
- Цей посібник описує спосіб налаштування файрволу мосту (bridge) в OpenWrt.
- Дотримуйтесь інструкції Розділення VLAN, щоб мати змогу фільтрувати трафік між VLAN-портами.
- Дотримуйтесь Налаштування Wi-Fi, щоб ізолювати бездротових клієнтів один від одного.
Цілі
- Фільтрація та перехоплення транзитного трафіку на інтерфейсах, об'єднаних у міст (bridge).
Інструкції з командного рядка
Припускається конфігурація з мостовими інтерфейсами LAN і WAN.
Встановіть необхідні пакети.
Увімкніть фільтрацію мосту для перехоплення DNS-запитів і фільтрації транзитного трафіку з eth0 до eth1.
# Встановлення пакетів opkg update opkg install kmod-nft-bridge # Конфігурація файрволу cat << "EOF" > /etc/nftables.d/bridge.sh . /lib/functions/network.sh network_flush_cache network_find_wan NET_IF network_get_device NET_DEV "${NET_IF}" NET_MAC="$(ubus -S call network.device status \ "{'name':'${NET_DEV}'}" | jsonfilter -e "$['macaddr']")" nft add table bridge filter nft flush table bridge filter nft add chain bridge filter prerouting \ { type filter hook prerouting priority dstnat\; } nft add rule bridge filter prerouting meta \ l4proto { tcp, udp } th dport 53 pkttype set host \ ether daddr set "${NET_MAC}" comment "Intercept-DNS" nft add chain bridge filter forward \ { type filter hook forward priority filter\; } nft add rule bridge filter forward iifname "eth0" \ oifname "eth1" drop comment "Deny-eth0-eth1" EOF uci -q delete firewall.bridge uci set firewall.bridge="include" uci set firewall.bridge.path="/etc/nftables.d/bridge.sh" uci commit firewall service firewall restart
Налаштуйте DNS-перехоплення та фільтрацію DNS.
Приклад: Класифікація DSCP на Dumb AP
Якщо файрвол вимкнено, але встановлено пакет `kmod-nft-bridge`, ви можете легко налаштувати класифікацію. Цей приклад класифікує HTTP(S)-трафік як AF23. Це непрактично, але хороший старт.
Збережіть наступне у файл `/etc/nftables.conf`:
flush ruleset table bridge dscp { chain dscp_set_af23 { ip dscp set af23 ip6 dscp set af23 } chain prerouting { type filter hook prerouting priority 0; policy accept; meta l4proto tcp th dport {80, 443} jump dscp_set_af23 } }
Виконайте наступну команду або додайте її в `/etc/rc.local`, щоб вона виконувалась при завантаженні:
nft -f /etc/nftables.conf
Тестування
Вирішення проблем
Зберіть і проаналізуйте таку інформацію:
# Журнал та статус service firewall restart # Поточна конфігурація lsmod | grep -e bridge nft list ruleset # Постійна конфігурація uci show firewall