Доброго времени суток!
Есть некоторые проблемы с настройкой iptables.
Имеется сервер, 2 интерфейса.
eth0 - смотрит в локалку
eth1 - смотрит в сеть провайдера.
На eth1 поднимается PPPoE соединение для доступа в инет ppp0.
Начал писать правила и тут же уперся.
Все приводить не буду, так как все правила построены по одному принципу. Если я разберусь, где накосячил в одном месте, разберусь, где ошибки в другом.
Правила пишу в первый раз в жизни, поэтому просьба ткнуть носом, в чем не прав!
Итак:
#!/bin/sh
PORTS="1024:65535"
IPT="/sbin/iptables"
echo 1 > /proc/sys/net/ipv4/ip_forward
# Очистка правил
$IPT -F
$IPT -X
# Политики по умолчанию (режем все)
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
# Включаю маскарад
$IPT -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Разрешаем пользоваться DNS провайдера
$IPT -A OUTPUT -p udp -m udp --dport 53 -d $DNS_IP1 --sport $PORTS -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp --dport 53 -d $DNS_IP1 --sport $PORTS -j ACCEPT
$IPT -A OUTPUT -p udp -m udp --dport 53 -d $DNS_IP2 --sport $PORTS -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp --dport 53 -d $DNS_IP2 --sport $PORTS -j ACCEPT
$IPT -A INPUT -p udp -m udp --dport $PORTS -s $DNS_IP1 --sport 53 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport $PORTS -s $DNS_IP1 --sport 53 -j ACCEPT
$IPT -A INPUT -p udp -m udp --dport $PORTS -s $DNS_IP2 --sport 53 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --dport $PORTS -s $DNS_IP2 --sport 53 -j ACCEPT
# Разрешаем доступ к серверу VPN
$IPT -A INPUT -s $VPN_IP -j ACCEPT
$IPT -A OUTPUT -d $VPN_IP -j ACCEPT
Может все это неэлегантно и по-ламерски, но это работает.
Проблемы дальше:
# 1.1 Доступ в Интернет по протоколу SMTP
# Администратор
$IPT -A FORWARD -p tcp -m tcp -s $ADMIN_IP --dport 25 --sport $PORTS -j ACCEPT
$IPT -A FORWARD -p tcp -m tcp -d $ADMIN_IP --dport $PORTS --sport 25 -j ACCEPT ! --syn
Это не работает! В чем косяк?
Далее...
Это:
# 4. Доступ к серверу через SSH клиент (22) (только с машины админа)
$IPT -A OUTPUT -p tcp -m tcp -d $ADMIN_IP --sport 22 --dport $PORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -s $ADMIN_IP --sport $PORTS --dport 22 -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp -o $ADMIN_IP --sport 22 --dport 1020:1023 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $ADMIN_IP --sport 1020:1023 --dport 22 -j ACCEPT
и это:
# 7. Разрешаем доступ к DHCP-серверу из локалки
$IPT -A OUTPUT -p udp -m udp -o eth0 --sport 67 --dport 68 -j ACCEPT
$IPT -A INPUT -p udp -m udp -i eth0 --sport 68 --dport 67 -j ACCEPT
работает. То есть, я со своего компа доступ к серваку получаю (точнее, установленное ssh-соединение не обрывается при применении правил), ip в локалку раздаются. Хотя не исключено, что айпишники пользуются старые, пока lease-time не истекло, это еще буду уточнять.
А вот это:
# 3. Доступ к локальному веб-серверу - из локальной сети всем
$IPT -A OUTPUT -p tcp -m tcp -o eth0 --dport $PORTS --sport 80 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i eth0 --dport 80 --sport $PORTS -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp -o eth0 --dport $PORTS --sport 443 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i eth0 --dport 443 --sport $PORTS -j ACCEPT
не работает! То есть, при попытке войти на локальный веб-сервер, молчит как рыба об лед.
В чем я не прав?
Пользователь решил продолжить мысль 05 Сентября 2011, 19:40:54:
Забыл добавить, сервак под Ubuntu 10.10 Server