Нужно ли восстанавливать правила iptable каждый раз при загрузке?


18

Каждый раз, когда я перезагружаюсь, я теряю правила iptables, которые так долго вводили. Я знаю, что могу сохранить их и восстановить при загрузке , но есть ли способ сохранить их навсегда? Мне действительно нужно каждый раз восстанавливать их при загрузке? Шутки в сторону?

Проблема в том, что у меня ОГРОМНЫЙ список IP-адресов, в которых я использую цикл while для их загрузки. Это может занять более 10 минут.

Это мой домашний FTP-сервер. Это небольшой виртуальный диск с 1 ГБ оперативной памяти и очень маленькой вычислительной мощностью. Есть очень много IP-адресов, потому что я почти отказался от азиатского континента. Мне не нужно, чтобы они каждый день били мой FTP-сервер грубой силой. Я также блокирую правительство. мониторы, трекеры и спамеры.

Это цикл while, который я использую для загрузки в списке.

grep INPUT block.list | while read LISTA; do sudo iptables -A $LISTA; done

Ваш вопрос немного двусмысленный, когда вы говорите «сохранить их навсегда», я подумал, что вы имели в виду, как в файле, но после прочтения остального звучит так, как будто вы на самом деле имеете в виду, что вам не нужно загружать их вручную при загрузке каждый раз. Кроме того, я думаю, что количество правил, которые необходимо перезагрузить, будет таким же, так что это займет некоторое время, но вам не придется делать это вручную, следуя ответу Панкаджа.
Джефф Веллинг

Ответы:


21

Сначала создайте файл с содержимым iptables-save:

sudo iptables-save > /etc/iptables_rules

Неважно, куда вы положили файл, все, что вам нужно сделать, это убедиться, что следующая строка ссылается на тот же файл. Далее откройте /etc/rc.localи добавьте эту строку:

/sbin/iptables-restore < /etc/iptables_rules

С этого момента каждый раз, когда ваш компьютер включается или перезагружается, iptables будет загружать правила из указанного вами файла.


1
Я получаю -bash: /etc/iptables_rules: Permission deniedпо первой команде. Что странно, используя sudo и все такое.
Капдрагон

5
Я должен был использовать, sudo sh -c '/sbin/iptables-save > /etc/iptables.save'чтобы обойти Permission deniedошибку. Ссылка
капдрагон

вы можете создать файл в любом каталоге, не обязательно создавать файл в / etc /
pankaj sharma

8
Я бы не рекомендовал использовать /etc/rc.localдля этого. Он выполняется позже, чем остальная часть вашего запуска системы и, возможно, оставит вашу систему в состоянии без брандмауэра. Я бы предложил разместить этот однострочный скрипт в /etc/network/if-up.d/firewall(новый файл). Это гарантирует, что он будет выполняться каждый раз, когда вы включаете сетевые интерфейсы.
gertvdijk

2
Ошибка разрешений нормальная / ожидаемая. sudo применяется только к команде до ">", перенаправление файлов выполняется отдельно вашей оболочкой.
ImaginaryRobots

16
apt-get install iptables-persistent

При установке он должен сохранить ваш текущий конфиг iptables. В противном случае вы можете сохранить их в эти файлы (в зависимости от v4 или v6), и iptables-persistent загрузит их при загрузке :)

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

1

Если у вас много правил, вам также следует рассмотреть возможность использования ipset в сочетании с iptables. Ipset использует индексированную таблицу базы данных и работает намного быстрее, чем iptables, когда ищет адрес, чтобы принять или отклонить его.

http://ipset.netfilter.org/index.html

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.