Фільтрація трафіку за доменами через IP-набори (IP sets by DNS)

  • У цьому посібнику описано налаштування фільтрації трафіку з використанням IP-наборів за DNS в OpenWrt.
  • Використовується resolveip та файрвол разом із IP-наборами для розв'язання (resolve) доменів і фільтрації.
  • Фільтрувати трафік клієнтів у LAN на основі доменів через IP-набори.

Встановіть необхідні пакунки. Налаштуйте файрвол для фільтрації трафіку клієнтів LAN за допомогою IP-наборів. Налаштуйте додаткову логіку IP-наборів та hotplug-доповнення, щоб автоматично наповнювати IP-набори.

# Встановити пакунки
opkg update
opkg install resolveip
 
# Налаштування IP-наборів
uci -q delete dhcp.filter
uci set dhcp.filter="ipset"
uci add_list dhcp.filter.name="filter"
uci add_list dhcp.filter.name="filter6"
uci add_list dhcp.filter.domain="example.com"
uci add_list dhcp.filter.domain="example.net"
uci commit dhcp
 
# Фільтрація трафіку клієнтів LAN за IP-наборами
for IPV in 4 6
do
uci -q delete firewall.fwd_filter${IPV%4}
uci set firewall.fwd_filter${IPV%4}="rule"
uci set firewall.fwd_filter${IPV%4}.name="Filter-IPset-DNS-Forward"
uci set firewall.fwd_filter${IPV%4}.src="lan"
uci set firewall.fwd_filter${IPV%4}.dest="wan"
uci set firewall.fwd_filter${IPV%4}.proto="all"
uci set firewall.fwd_filter${IPV%4}.family="ipv${IPV}"
uci set firewall.fwd_filter${IPV%4}.ipset="filter${IPV%4} dest"
uci set firewall.fwd_filter${IPV%4}.target="REJECT"
done
uci commit firewall
 
# Наповнити IP-набори
ipset setup

Очистіть DNS-кеш на клієнтах і перезапустіть браузер. Перевірте, чи трафік правильно фільтрується маршрутизатором.

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

# Перезапуск служб
service firewall restart
 
# Поточна конфігурація
nft list ruleset
 
# Постійна конфігурація
uci show firewall; crontab -l

Якщо хочете керувати налаштуваннями через інтерфейс LuCI:

  • Перейдіть до LuCI → Network → Firewall → Traffic Rules → Filter-IPset-DNS-Forward для керування правилами файрволу.
  • Перейдіть до Network → DHCP and DNSIP sets для керування доменами.

Перезавантажте маршрутизатор, щоб застосувати зміни.

Додайте або видаліть домени зі списку фільтрації:

# Додати домени
uci add_list dhcp.filter.domain="example.com"
uci add_list dhcp.filter.domain="example.net"
 
# Видалити домени
uci del_list dhcp.filter.domain="example.com"
uci del_list dhcp.filter.domain="example.net"
 
# Застосувати
uci commit dhcp
ipset setup

Обмежте дію фільтра лише для певних MAC-адрес:

# Обмежити за MAC-адресами
for IPV in 4 6
do
uci add_list firewall.fwd_filter${IPV%4}.src_mac="11:22:33:44:55:66"
uci add_list firewall.fwd_filter${IPV%4}.src_mac="aa:bb:cc:dd:ee:ff"
done
uci commit firewall
service firewall restart

Перевпорядкуйте правила файрволу та увімкніть обмеження за часом, щоб правила були активні лише в задані години. Також перезавантажте часовий пояс ядра, щоб правильно враховувалось літній час.

# Застосувати обмеження за часом
for IPV in 4 6
do
uci set firewall.fwd_filter${IPV%4}.start_time="21:00:00"
uci set firewall.fwd_filter${IPV%4}.stop_time="09:00:00"
uci set firewall.fwd_filter${IPV%4}.weekdays="Mon Tue Wed Thu Fri"
done
uci commit firewall
service firewall restart

Перевпорядкуйте правила файрволу, щоб обмеження за часом застосовувалися до нових з'єднань:

# Перевпорядкувати правила
cat << "EOF" > /etc/nftables.d/estab.sh
ER_RULE="$(nft -a list chain inet fw4 forward \
| sed -n -e "/\sestablished.*related.*accept\s/p")"
RJ_RULE="$(nft -a list chain inet fw4 forward \
| sed -n -e "/\shandle_reject\s/p")"
nft delete rule inet fw4 forward handle ${ER_RULE##* }
if [ -n "${RJ_RULE}" ]
then nft insert rule inet fw4 forward position ${RJ_RULE##* } ${ER_RULE}
else nft add rule inet fw4 forward ${ER_RULE}
fi
EOF
uci -q delete firewall.estab
uci set firewall.estab="include"
uci set firewall.estab.path="/etc/nftables.d/estab.sh"
uci commit firewall
service firewall restart
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 12:03
  • by vazaz