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
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/06/01 11:04
  • by vazaz