Уважаемые пользователи, вопрос вот какой: есть сервер на ubuntu server 10.04. В нём 4 сетевухи:
- eth0 белый ip от местного провайдера
- eth1 смотрит во внутреннюю сеть 192.168.0.0/24 сам 192.168.0.150
- eth2 другая подсеть 192.168.2.0/24 сам 192.168.2.254
- eth3 подключен к ADSL-модему в режиме маршрутизатора, подсеть 192.168.1.0/24 сам 192.168.1.254 gw соответственно 192.168.1.1 (модем)
Смысл всего этого огорода следующий: сетка офиса 192.168.0.0/24 изначально зашлюзена на 192.168.0.150, откуда DNS-запросы наружу - к ADSL-модему - форвардит dnsmasq, а трафик nat-ится iptables при условии, что ! -d 192.168.0.0/24 (то есть выкидываем наружу всё, что не относится к нашей сети).
На eth0 дежурит pptpd, на который долбятся удалённые клиенты, получая при авторизации адрес вида 192.168.254.* и bcrelay уходят к подсети 192.168.2.0/24 (eth2) - эта сетевуха соединена напрямую с второй сетевухой рабочего сервера (192.168.2.253), к которому авторизовавшиеся пользователи цепляются по RDP. Первая сетевуха рабочего сервера (192.168.0.250) смотрит в сеть офиса и туда заваливаются наши работники.
Это всё работает хорошо. Удалённые клиенты и клиенты нашей сети работают в разных подсетях, но с одной и той же инфой, ресурсы нашей внутренней сети не видят. Как и наши внутренние клиенты не видят тех, кто подрубается снаружи.
Но возникла необходимость запустить нескольких клиентов офисной сети наружу через маскарадинг под статический ip, который висит на eth0. Пробовал играться с SNAT/DNAT - не вышло. Вопрос: как написать правила для iptables, чтобы он выпускал определённые ip из внутренней сети на определённый интерфейс (eth0 в данном случае, тогда как все остальные идут через eth3)? Все клиенты офисной сети имеют статически заданные ip из пространства 192.168.0.0/24, шлюз 192.168.0.150 и первый DNS 192.168.0.150 (операционки windows XP/7).
На всякий случай текущие правила для iptables и текущие route
#! /bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -i eth1 -o eth3 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 ! -d 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080 #тут дежурит SQUID
iptables -t nat -A POSTROUTING -o eth3 -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE
iptables -A FORWARD -i eth3 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth3 -o eth1 -j REJECT
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.254.21 * 255.255.255.255 UH 0 0 0 ppp0 #это я сижу под ppp
192.168.1.254 * 255.255.255.0 U 0 0 0 eth3
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
default 192.168.1.1 0.0.0.0 UG 100 0 0 eth3
Подскажите, как быть. Варианты с ip route читал, но не совсем понял, что там к чему. Спасибо!