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.

Якщо файрвол вимкнено, але встановлено пакет `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

Використовуйте nslookup, ping, ping6 з клієнтів у LAN для перевірки конфігурації файрволу.

Зберіть і проаналізуйте таку інформацію:

# Журнал та статус
service firewall restart
 
# Поточна конфігурація
lsmod | grep -e bridge
nft list ruleset
 
# Постійна конфігурація
uci show firewall
  • Last modified: 2025/06/01 11:04
  • by vazaz