Имеется шлюз Интернета следующей конфигурации
(lan 192.168.100.0)------eth0(ubuntu server 8.04 + dnsmasq )eth1-----(inet)
Iptables настраивается следующим образом
IPT="//sbin/iptables"
INET_IFACE="eth1"
LOCAL_IFACE="eth0"
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
$IPT -X
$IPT -F
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
// Чтобы работал пинг наружу
$IPT -A INPUT -p icmp -m icmp -i $INET_IFACE --icmp-type echo-reply -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET_IFACE --icmp-type echo-request -j ACCEPT
// Чтобы работал пигн внутри
$IPT -A INPUT -p icmp -m icmp -i $LOCAL_IFACE -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $LOCAL_IFACE -j ACCEPT
// Разрешаем все для внутренней сети
$IPT -A INPUT -p tcp -i $LOCAL_IFACE -j ACCEPT
$IPT -A OUTPUT -p tcp -o $LOCAL_IFACE -j ACCEPT
$IPT -A INPUT -p udp -i $LOCAL_IFACE -j ACCEPT
$IPT -A OUTPUT -p udp -o $LOCAL_IFACE -j ACCEPT
# DNS наружу =============== две критические строки ============================
$IPT -A OUTPUT -p udp -o $INET_IFACE --dport 53 -j ACCEPT
$IPT -A INPUT -p udp -i $INET_IFACE --sport 53 -j ACCEPT
// Организация NAT
$IPT -I FORWARD -i $LOCAL_IFACE -d 192.168.100.0/255.255.255.0 -j DROP
$IPT -A FORWARD -i $LOCAL_IFACE -s 192.168.100.0/255.255.255.0 -j ACCEPT
$IPT -A FORWARD -i $INET_IFACE -d 192.168.100.0/255.255.255.0 -j ACCEPT
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
# DHCP наружу
$IPT -A OUTPUT -p udp -o $INET_IFACE --dport 67 --sport 68 -j ACCEPT
$IPT -A INPUT -p udp -i $INET_IFACE --dport 68 --sport 67 -j ACCEPT
# Интернет наружу
$IPT -A INPUT -p tcp -i $INET_IFACE ! --syn -j ACCEPT
$IPT -A OUTPUT -p tcp -o $INET_IFACE -j ACCEPT
// Для работы SSH наружу
$IPT -A INPUT -p tcp -i $INET_IFACE --dport 1975 -j ACCEPT
$IPT -A OUTPUT -p tcp -o $INET_IFACE --sport 1975 -j ACCEPT
// Для работы torrent-a
$IPT -A INPUT -p tcp -m multiport -i $INET_IFACE --dports 60550,60551 -j ACCEPT
Вся эта конфигурация работала около недели без замечаний. Потом стали происходить странные вещи: стали наблюдаться тормоза при операциях на внутреннем интерфейсе eth0. Например: долго проверяется пароль при открытии SSH со шлюзом из внутренней сети (снаружи все открывается быстро !!), долго открывается sftp шлюза из внутренней сети, если на шлюзе запускаешь tcpdump –i eth0, то он порядка 40 секунд о чем-то думает потом только начинается печать пакетов. Долго соображал в чем причина, смотрел загрузку процессора (её нет практически), перегружал систему – не помогает. Потом выяснил, что если убрать 2 строчки из инициализации iptables интерфейс eth0 начинает работать нормально. Но тогда перестает работать DNS во внешнюю сеть.
Подскажите пожалуйста где я накосячил и что происходит.