Доброе время суток!
Система Ubuntu 10.10.
Проблема: есть два сетевых интерфейса: eth0 - смотрящий в домашнюю сеть и eth1 - в сеть провайдера интернета.
Есть потребность быть шлюзом для домашней сети, для чего в программе fwbuilder создан фаер, который при каждой доработке сохраняется программой в домашний каталог, допустим, /home/max/iptables.sh.
Гружу этот фаер из скрипта в сабжевой директории /etc/network/if-up.d/routing
#!/bin/bash
date=`date '+%Y-%m-%d %H:%M:%S'`
LOG="/var/log/iptables.$IFACE"
echo 'IPTABLES ' ${date} > ${LOG}
/home/max/.firewall/bakulenko.ru.fw 2>&1 >> ${LOG}
echo 'ADDING MULTICAST'
ip route add multicast 224.0.0.0/4 table main dev eth1 metric 1
/etc/interfaces
auto lo eth0 eth1
iface lo inet loopback
iface eth0 inet static
address 192.168.10.1
netmask 255.255.255.0
iface eth1 inet dhcp
Если запускать ifup eth1 или ifup eth0 руками, то все срабатывает. Но не работает при загрузке системы, в результате чего не НАТятся запросы из домашней сети со всеми вытекающими. И что при этом остается вообще не понятным, так это то, что вторая половина скрипта routing отрабатывает и маршрут для мультикаста добавляется в таблицу маршрутизации. А вот правила iptables не грузятся.
В чем может быть дело? В файле routing специально добавил пару ECHO и перенаправил в /var/log весь вывод для детализации процесса исполнения, но лог-файл появляется только если запустить с руки, опять же, при загрузке он не создается. Куда копать?
В процессе решения задачи удалил скрипт из каталога if-up.d и создал каталог /etc/network/scripts, а в /etc/network/interfaces добавил к интерфейсу eth1 опцию post-up /etc/network/scripts/routing.
Права на скрипт выставлены 0755, владелец root.
Допускал мысль, что что то не так в самом скрипте фаера, что не дает ему запуститься при старте системы, может по каким то причинам не может в /home/ попасть, допустим, не смонтировался /home, но все равно вывод echo должен был произойти и в /var/log появилась бы запись.
Что интересно, если в файл routing указать интерпретатор /bin/sh, то скрипт и вовсе не срабатывает, не добавляя даже мультикастовский маршрут. Пришлось заменить на /bin/bash.