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