прочитал. Мало того, я сначала внимательно прочитал первый пост. Сходу не понял (!), почему оно будет работать, выполнил всё - понял, что я правильно не понял и оно и вправду не работает, и именно поэтому добавил нормальный способ. Правила надо сохранять при отключении интерфейса и восстанавливать при включении. Вопрос: как это можно сделать? Ответ: можно создать два дополнительных файла-скрипта, один из которых будет перезаписывать постоянно второй (а в топике сказано только про один скрипт). А можно изменить единый файл конфигурации сети, добавив в него две строчки. Результат - идентичный.
Теперь представим - приходит админ поддерживать сеть. Куда он заглядывает для того, чтобы ознакомиться с настройкой сети? В if-up.d? Да никогда! Это служебная директория для управления сервисами, работа которых зависит от активности интерфейсов. Админ заглянет в файл interfaces, а потом помянёт добрым словом прошлого админа, когда после трёх чашек кофе, перелопачивания rc.local и прочих стандартных мест обнаружит в if-up.d скрипт восстановления правил iptables.
Не надо создавать с умным видом головную боль тем, кто с трудом составляет простейшие правила iptables, и приучать их к заведомо некорректным и вредным методам администрирования.
fisher74,
Спорный вопрос. Наваять лишних вредных правил на рабочей системе очень сложно - потому что что-то лишнее просто положит нафиг сеть. А вот забыть сохранить - это легко. Особенно когда какие-то нештатные ситуации. Тем более если не сохранять - то просто надо убрать одну строчку из конфига.
P.S. А, и да. rc.local - однозначно не то место, откуда надо рулить iptables, но этот файл никогда не перетирается при обновлениях, иначе бы рабочие системы падали бы просто на раз.