Вопрос или проблема
У меня есть роутер tp-link с openwrt. У меня есть 2 правила iptables для блокировки P2P соединений. Блокировка работает нормально, но теперь мне нужно правило, чтобы разрешить трафик от/к конкретному IP.
Мои правила блокировки:
iptables -I FORWARD -m string --string "BitTorrent protocol" --algo bm -j DROP
iptables -I FORWARD -m string --string ".torrent" --algo bm -j DROP
Я добавляю это правило:
iptables -I FORWARD -s 192.168.64.XX -j ACCEPT
iptables -I FORWARD -d 192.168.64.XX -j ACCEPT
Но оно не работает.
Я пробовал с небольшими изменениями:
iptables -A FORWARD -s 192.168.64.XX -j ACCEPT
iptables -A FORWARD -d 192.168.64.XX -j ACCEPT
Все равно не работает. Я перезапускал роутер после каждого изменения правила.
Теперь я не вижу своих изменений в файрволе, я вижу только это:
Chain FORWARD (Policy: DROP, Packets: 0, Traffic: 0.00 B)
Rule # Pkts. Traffic Target Prot. Flags In Out Source Destination Options
1 0 0.00 B DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match ".torrent" ALGO name bm TO 65535
2 96 10.39 KB DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match "BitTorrent protocol" ALGO name bm TO 65535
Что я сделал неправильно?
Правила, добавленные вручную с помощью iptables
, не сохраняются после перезагрузки, если система инициализации не позаботится о их сохранении и восстановлении между загрузками. Я не думаю, что openwrt делает это в своей стандартной конфигурации.
Ищите другое место для добавления пользовательских правил файрвола. Может быть, /etc/config/firewall
?
Подробности о формате конфигурации можно найти здесь:
https://wiki.openwrt.org/doc/uci/firewall
Ответ или решение
Как разрешить трафик к/от конкретного IP-адреса с помощью iptables в OpenWRT
Если вы столкнулись с необходимостью разрешить трафик для конкретного IP-адреса, несмотря на существующие правила блокировки P2P-соединений на вашем маршрутизаторе с OpenWRT, важно правильно настроить правила iptables, чтобы они работали как ожидается.
Шаг 1: Настройка правил iptables
В вашем случае вы уже написали правила для блокировки P2P-соединений:
iptables -I FORWARD -m string --string "BitTorrent protocol" --algo bm -j DROP
iptables -I FORWARD -m string --string ".torrent" --algo bm -j DROP
Эти команды добавляют правила, которые блокируют все пакеты, содержащие определенные строки, указывающие на P2P-трафик.
Чтобы разрешить трафик для конкретного IP-адреса (например, 192.168.64.XX
), вы можете использовать следующие команды:
iptables -I FORWARD -s 192.168.64.XX -j ACCEPT
iptables -I FORWARD -d 192.168.64.XX -j ACCEPT
или же, если вы хотите добавить их в конец списка правил, используйте:
iptables -A FORWARD -s 192.168.64.XX -j ACCEPT
iptables -A FORWARD -d 192.168.64.XX -j ACCEPT
Причина, почему ваши правила могут не работать
Основная проблема, возможно, заключается в порядке применения правил. Правила в iptables обрабатываются последовательно, и если пакеты проходят проверку ваших блокировок первым делом, то ваши правила разрешения не будут применены. Чтобы это исправить, необходимо убедиться, что правила для разрешения трафика добавляются перед правилами для блокировки.
Также, как вы заметили, ваши изменения могут не сохраняться между перезагрузками. OpenWRT не сохраняет изменения, внесенные непосредственно в iptables, если только не реализовать процедуры сохранения и восстановления правил. Это можно сделать через файл конфигурации.
Шаг 2: Сохранение правил в конфигурации OpenWRT
Для постоянного применения ваших правил следуйте этим шагам:
-
Редактирование конфигурации фаервола:
Откройте файл/etc/config/firewall
с помощью текстового редактора:vi /etc/config/firewall
-
Добавление правил разрешения:
В файле конфигурации добавьте новые правила в соответствующие секции. Это можно сделать, добавив следующие строки:config rule option src 'lan' option dest 'wan' option src_ip '192.168.64.XX' option target 'ACCEPT' config rule option src 'wan' option dest 'lan' option dest_ip '192.168.64.XX' option target 'ACCEPT'
-
Сохраните изменения и закройте файл.
-
Перезапустите услуги фаервола:
После внесения изменений выполните команду для применения конфигурации:/etc/init.d/firewall restart
Шаг 3: Проверка правил
После перезапуска фаервола проверьте, что правила корректно применились:
iptables -L -v -n
Эта команда выведет текущие правила iptables с их счетчиками пакетов. Убедитесь, что правила для вашего IP-адреса отображаются, и их порядок позволяет им работать корректно.
Заключение
Правильная настройка iptables в OpenWRT для разрешения трафика от/к определенному IP-адресу, несмотря на существующие правила блокировки, требует учета порядка применения правил и сохранения изменения в конфигурации. Следуя вышеуказанным шагам, вы сможете настроить свой маршрутизатор так, чтобы он соответствовал вашим требованиям, и поддерживать безопасность вашей сети.