3

В моем экземпляре OpenWRT я добавил правила iptables в таблицу фильтра ввода, но проблема в том, что при включении системы я обнаружил, что правила удалены. Что можно сделать, чтобы правила не удалялись автоматически.

2 ответа2

5

OpenWRT

Существует несколько способов редактировать iptables в OpenWRT.

Прямое использование iptables

OpenWRT запустит содержимое /etc/firewall.user при запуске. Это сценарий оболочки, поэтому он будет выглядеть примерно так:

root@OpenWrt:/etc# cat firewall.user 
# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 22 -j DNAT --to 10.1.1.1:2222
iptables -A FORWARD -p tcp -d 10.1.1.1 --dport 2222 -j ACCEPT

Тестирование /etc/firewall.user

После редактирования файла /etc/firewall.user вы, возможно, захотите его протестировать. Это потому, что вы можете увидеть любые ошибки, если вы запустите скрипт при запуске. Чтобы проверить скрипт:

  • Сначала удалите все правила, на которые влияет скрипт. iptables -F будет работать, но может удалить правила, которые вам не нужно проверять.
  • Затем запустите bash /etc/firewall.user . Вы хотите увидеть, есть ли какие-либо ошибки в скрипте. Если вы получаете какие-либо сообщения обратно, вы, вероятно, опечатка.
  • Затем запустите iptables -L и убедитесь, что правила, которые вы хотите добавить, были добавлены правильно.
  • Наконец, перезагрузите устройство. На данный момент вы должны ожидать, что правила будут добавлены так же, как они были в прошлый раз.

iptables-save и iptables-restore

В OpenWRT (вместе с другими дистрибутивами) есть команда iptables-save . iptables-save > myrules , вы получите файл, содержащий все необходимое для восстановления ваших правил iptables.

iptables-restore < myrules прочитает файл правил iptables и применит их.

Поэтому вам нужно будет создать файл myrules , а затем запустить iptables-restore < myrules при загрузке. Вы можете выполнить при загрузке, отредактировав файл /etc/rc.local .

Более подробную информацию о iptables-save и iptables-restore можно найти здесь.

Использовать синтаксис конфигурации брандмауэра OpenWRT

Файл /etc/config/firewall может быть отредактирован. Брандмауэр «предоставляет интерфейс конфигурации, который абстрагируется от системы iptables, чтобы предоставить упрощенную модель конфигурации, которая подходит для большинства обычных целей, позволяя при необходимости пользователю самостоятельно предоставлять необходимые правила iptables».

Более подробную информацию можно найти здесь

Другие дистрибутивы

Debian или Ubuntu

Если вы используете Debian или Ubuntu, вы можете попробовать пакет iptables-persistent .

sudo apt-get install iptables-persistent

Выше будет установлен сервис. Затем он сохранит ваши правила в /etc/iptables/rules.v4 и /etc/iptables/rules.v6 .

Вы можете получить больше информации для Ubuntu 12.04 здесь, Ubuntu 14.04 здесь.

CentOS

Если вы используете CentOS, вы можете сохранить правила, выполнив:

/sbin/service iptables save 

который сохранит содержимое iptables в /etc/sysconfig/iptables . Предыдущее содержимое /etc/sysconfig/iptables будет сохранено в /etc/sysconfig/iptables.save .

Вы можете получить больше информации здесь.

0

Вы можете написать сценарий оболочки, содержащий все ваши команды iptables, а затем добавить строку в /etc/rc.local для автоматического запуска сценария оболочки при загрузке системы. См. Http://bash.cyberciti.biz/firewall/linux-iptables-firewall-shell-script-for-standalone-server/ для хорошего учебника о том, как это сделать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .