Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Автозагрузка правил iptables (Lazymode)  (Прочитано 71923 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Есть много разных способов решить задачу загрузки правил iptables при старте системы... и много вещей обломано о плюсы и минусы каждого из них.
Приведу самый, как мне кажется, простой и доступный. Я использую встроенный механизм запуска скриптов по событию включения сетевого адаптера. (if-up)

Для начала, хорошо бы иметь хоть какие-то правила, чтобы было, что сохранять. Если такое богатство у вас уже есть, смело переходите к следующему шагу.
(Нажмите, чтобы показать/скрыть)

Шаг 1. Убедимся, что нас поняли правильно. (Или что правила именно те, про которые вы думаете, если вы используете собственный набор)
$ sudo iptables-save
Внимательно прочтите вывод команды. Убедитесь, что нет повторов, все правила загружены и располагаются в желаемом порядке.

Шаг 2. Прикинемся рутом.
$ sudo -E -s

Шаг 3. Сохранение правил и установка их автозагрузки.
# echo "#! /sbin/iptables-restore" > /etc/network/if-up.d/iptables-rules
# iptables-save >> /etc/network/if-up.d/iptables-rules
# chmod +x /etc/network/if-up.d/iptables-rules


Шаг 4. Всё... если ничего не произошло, значит, всё сработало как надо.
Можете проверить, что файл создан и сделан исполняемым.
(Нажмите, чтобы показать/скрыть)

Шаг самый-самый последний. Проверка работоспособности.
Просто перезагрузите систему.
$ sudo reboot
После чего проверьте, что правила действительно загрузились:
$ sudo iptables-save
Вывод команды не должен отличаться от того, что вы видели ранее. Плюс-минус взаимное положение таблиц в выводе...


Вспомогательный скрипт iptsave.sh
Эта часть необязательна, но очень помогает сохранять голову на плечах.

(Нажмите, чтобы показать/скрыть)

Редактировать правила можно двумя способами:
1. Внося изменения в активные таблицы любым удобным Вам способом (из командной строки либо пользуясь удобным Вам междумордием).
2. Напрямую редактируя файл /etc/network/if-up.d/iptables-rules и запуская его вручную, либо перезапуская всю сеть (service networking restart), чтобы изменения вступили в силу.

В обоих случаях, запустите скрипт iptsave.sh после того, как вы добились желаемого эффекта.
Это создаст резервную копию вашего файла. Хотя содержание копии будет различаться в зависимости от того, каким способом вы редактируете правила, пользуясь всё время одним и тем же способом, вы всегда будете иметь полный набор копий.

P.S.
Скрипт iptsave.sh не надо класть в автозагрузку ни в каком виде, это плохо кончится.
Этот скрипт лежит у меня в ~/bin и запускается только когда я что-то меняю в iptables.
Этот (приведённый мною) скрипт создаёт ДРУГОЙ скрипт, в каталоге /etc/network/if-up.d/ с именем iptables-rules.
Со всеми приличествующими моменту реверансами, типа создания бэкапа и делания скрипта исполнимым.

P.P.S.
Более продвинутый скрипт, с обнулением счётчиков:
(Нажмите, чтобы показать/скрыть)

Bonus pack:
(Нажмите, чтобы показать/скрыть)
Всегда сохраняет таблицы в указанном порядке. Удобно для прогонки diff'ов при поиске различий между версиями.
« Последнее редактирование: 09 Мая 2011, 23:25:35 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #1 : 10 Июня 2010, 20:33:16 »
Непременно прибить гвоздями к шапке раздела!!! Ну или хотябы в фак.

зы. Я бы всё же начал с простого и главного, оставив бекап на закуску, чтоб юзер не пугался...

Оффлайн Nickollla

  • Любитель
  • *
  • Сообщений: 74
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #2 : 10 Июня 2010, 23:26:49 »
можно еще загружать так:
добавить в файл /etc/network/interfaces на интерфейс lo
pre-up iptables-restore < /var/lib/iptables/rules-save
down iptables-save > /var/lib/iptables/rules-save

то бишь будет вида
auto lo
iface lo inet loopback
    pre-up iptables-restore < /var/lib/iptables/rules-save
    down iptables-save > /var/lib/iptables/rules-save

В итоге редактируем правила просто через iptables
сохранить в ручную режиме iptables-save > /var/lib/iptables/rules-save
при перезагрузке правила сами сохраняются если вы забыли это сделать.
ну а путь к файлу с правилами как и само название файла с правилами на ваше усмотрение

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #3 : 11 Июня 2010, 12:13:34 »
Главное - это настроить правила... >.> остальное - мелочи.
Скрипт сам бэкап делает.

можно еще загружать так:
добавить в файл /etc/network/interfaces на интерфейс lo

Вот интересно, зачем тогда придумали if-up.d ?
Ты можешь запустить скрипт из interfaces или просто запустить скрипт, что проще?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Nickollla

  • Любитель
  • *
  • Сообщений: 74
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #4 : 11 Июня 2010, 13:47:22 »
Главное - это настроить правила... >.> остальное - мелочи.
Скрипт сам бэкап делает.

можно еще загружать так:
добавить в файл /etc/network/interfaces на интерфейс lo

Вот интересно, зачем тогда придумали if-up.d ?
Ты можешь запустить скрипт из interfaces или просто запустить скрипт, что проще?
Пример приведен в образовательных целях. Принципиальной разницы я не вижу в методах. Кому как нравится. Я пользуюсь методом который описал.
Задача состояла в автозагрузке правил с чем метод и справился.
« Последнее редактирование: 11 Июня 2010, 13:57:21 от Nickollla »

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #5 : 11 Июня 2010, 14:29:47 »
Принципиальная разница - в количестве (и выборе) мест настройки.
Для вашего способа надо искать место для сохранения самих правил.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн RustemNur

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #6 : 04 Июля 2010, 14:57:17 »
Шаг 2. Прикинемся рутом.
$ sudo -E -i

$ sudo -E -i
[color=red]sudo: you may not specify both the `-i' and `-E' option[/color]s

Гарри Кашпировский

  • Гость
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #7 : 04 Июля 2010, 15:02:56 »
Я пользуюсь методом который описал.
Задача состояла в автозагрузке правил с чем метод и справился.
Поддерживаю. Самый наглядный способ сохранения и восстановления правил iptables.
А то, что предлагает AnrDaemon, всё-таки считаю костылем, особливо ~/bin :)
Шаг 2. Прикинемся рутом.
$ sudo -E -i

$ sudo -E -i
[color=red]sudo: you may not specify both the `-i' and `-E' option[/color]s
sudo -s

Оффлайн RustemNur

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2939
  • умрешь с вами
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #8 : 04 Июля 2010, 15:17:06 »
sudo -s

Я как бы в курсе.

Надеялся, что ТС поправит пост.

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #9 : 04 Июля 2010, 16:15:13 »
Я пользуюсь методом который описал.
Задача состояла в автозагрузке правил с чем метод и справился.
Поддерживаю. Самый наглядный способ сохранения и восстановления правил iptables.
А то, что предлагает AnrDaemon, всё-таки считаю костылем, особливо ~/bin :)

iptables-save - тоже костыль, по-твоему?
С каких пор подсобные скрипты, уменьшающие ручную работу,  стали костылями?

Цитировать
Шаг 2. Прикинемся рутом.
$ sudo -E -i

$ sudo -E -i
[color=red]sudo: you may not specify both the `-i' and `-E' option[/color]s
sudo -s

Бред. Я бы не стал писать, если бы у меня не работало.
sudo -E -s
тогда.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Гарри Кашпировский

  • Гость
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #10 : 04 Июля 2010, 19:45:53 »
iptables-save - тоже костыль, по-твоему?
С каких пор подсобные скрипты, уменьшающие ручную работу,  стали костылями?
Вот именно! iptables-save и сделан для того, чтобы уменьшить ручную работу, ты же зачем-то её увеличиваешь. :) Или ты все-таки не согласен с тем, что проще?
Добавить пару строчек в interfaces или создавать директорию ~/bin, а в ней этот скрипт?
Бред. Я бы не стал писать, если бы у меня не работало.
Отчего же бред? У меня подобная команда так же не работает.
~$ sudo -E -i
sudo: you may not specify both the `-i' and `-E' options
usage: sudo -h | -K | -k | -L | -V
usage: sudo -v [-AknS] [-p prompt]
usage: sudo -l[l] [-AknS] [-g groupname|#gid] [-p prompt] [-U username] [-u username|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-C fd] [-g groupname|#gid] [-p prompt] [-u username|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-C fd] [-g groupname|#gid] [-p prompt] [-u username|#uid] file ...
~$
Так что поправить как бэ нужно.
« Последнее редактирование: 04 Июля 2010, 20:04:07 от KT315 »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #11 : 04 Июля 2010, 20:04:15 »
Добавить пару строчек в interfaces или содавать папку ~/bin, а в ней этот скрипт?
Вот это и есть пример того о чем я говорил выше. Начинать описывать топик надо было с минимума, плавно переходя к более расширенному охвату темы, а не начинать со всего сразу. Народ путается уже....

Гарри Кашпировский

  • Гость
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #12 : 04 Июля 2010, 20:09:33 »
Хорошо, тогда, если не затруднит, можете дать пояснения, чем способ описанный AnrDaemon отличается от способа, за который ратует Nickollla и я.

Пользователь решил продолжить мысль [time]Sun Jul  4 20:17:38 2010[/time]:
Топик читал, если чего...
То есть проще дать команду /etc/network/if-up.d|down.d/iptаbles-rules, чем дать команду ifdown lo;ifup lo?
Не понимаю.  :idiot2:

Пользователь решил продолжить мысль [time]Sun Jul  4 20:21:06 2010[/time]:
Для вашего способа надо искать место для сохранения самих правил.
Угу, а для этого способа, получается не надо?
А /etc/network/if-up.d/iptables-rules это чего? Не место для сохраняемых правил? :)

Пользователь решил продолжить мысль [time]Sun Jul  4 20:22:42 2010[/time]:
В общем, вот что. Я, пожалуй, останусь при своём мнении. Возможно, я и изменю его, если посчитаю нужным.
« Последнее редактирование: 04 Июля 2010, 20:27:03 от KT315 »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #13 : 04 Июля 2010, 20:31:08 »
Хорошо, тогда, если не затруднит, можете дать пояснения, чем способ описанный AnrDaemon отличается от способа, за который ратует Nickollla и я.
Да в том то и дело, что с точки зрения результата ничем. А вот с эстетической стороны:
1. /var не предназначен для хранения конфигов
2. Удобнее хранить правила в виде исполняемого скрипта.
3. /etc/network/if-up.d это единственное место, которое предназначено для хранения сетевых инициализационных скриптов.

Оффлайн AnrDaemon

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28358
    • Просмотр профиля
Re: Автозагрузка правил iptables (Lazymode)
« Ответ #14 : 04 Июля 2010, 22:28:04 »
Вот именно! iptables-save и сделан для того, чтобы уменьшить ручную работу, ты же зачем-то её увеличиваешь. :) Или ты все-таки не согласен с тем, что проще?

Увеличиваю? Где? Можешь объяснить?
Бэкапить настройки надо? Надо. Скрипт делать исполняемым надо? Надо. Сохранять надо в определённом месте опять же.
Вот я и делаю всё одной командой.
Скажи спасибо, что я не привёл скрипт
(Нажмите, чтобы показать/скрыть)
.

Цитировать
Добавить пару строчек в interfaces
Недостаточно.
Цитировать
или создавать директорию ~/bin, а в ней этот скрипт?
Ты о чём вообще? Этот каталог уже есть у большинства нормальных админов. Где ещё собственное творчество хранить?

Цитировать
Бред. Я бы не стал писать, если бы у меня не работало.
Отчего же бред?
Сказал уже, отчего. Я бы не стал писать, если бы у меня не работало. Видимо, что-то изменили.

Цитировать
Так что поправить как бэ нужно.
Будет настроение - поправлю.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.052 секунд. Запросов: 25.