Проблема со шлюзом на Debian
Пытаюсь настроить шлюз на Debian. Проблема в следующем: в правилах iptables политику по умолчанию ставлю DROP на все. После чего открываю по мере необходимости нужное. Так вот, если разрешить FORWARD полностью, то все работает, если разрешать только по портам 80, 443, 8080, то половина сайтов работает, половина нет. Даже больше - на одном сайте (например vk.com) некоторые разделы работают, другие - нет. В чем собственно может быть проблема? Ниже приведены правила iptalbes, которые использую:

IPT="/sbin/iptables"
LAN_DEV="eth0"
WAN_DEV="eth1"
NETWORK="192.168.1.0/24"
OPENPORTS="80,443,8080"

$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP

echo 1 > /proc/sys/net/ipv4/ip_forward

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -t nat -A POSTROUTING -o $WAN_DEV -j MASQUERADE

$IPT -A FORWARD -i $LAN_DEV -s $NETWORK -p tcp -m multiport --dports $OPENPORTS -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Вывод iptables -L:
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 192.168.1.0/24 anywhere multiport dports www,https,http-alt
ACCEPT all -- anywhere anewhere state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

  • Политика у тебя по-умолчанию все равно ACCEPT:
    Chain FORWARD (policy ACCEPT)

    Значит надо в конце FORWARD добавить :
    $IPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited

    Скорее всего ты забыл открыть ДНС:
    OPENPORTS_TCP="80,443,8080"
    OPENPORTS_UDP="53"
    Соответственно меняем блок:

    $IPT -A FORWARD -i $LAN_DEV -s $NETWORK -m state --state NEW -m tcp -p tcp -m multiport --dports $OPENPORTS_TCP -j ACCEPT
    $IPT -A FORWARD -i $LAN_DEV -s $NETWORK -m udp -p udp -m multiport --dports $OPENPORTS_UDP -j ACCEPT

    т. к. политика по-умолчанию ACCEPT не забудь закрыть доступ к шлюзу.
    Только осторожно, а то заблокируешь и не войти будет.
    Оставь доступ на вход первым делом:
    $IPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    $IPT -A INPUT -j DROP

    $IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPT -A OUTPUT -j DROP

    Остальное по вкусу.

Вас заинтересует