Приветствую всех ! Сразу прошу прощения за поднятие изжеванной темы, но...
Задача: Есть 2 провайдера, сервер (Ubuntu server 9.04), локальная сеть, DMZ - всем этим делом рулить, то есть раздавать инет пользователям (одним к первому провайдеру, другим ко второму)
Внутреннее убранство сервера: eth0 - 192.168.0.201 Локальная сеть 192.168.0.0/24 eth1 - 192.168.1.2 (гейт 192.168.1.1)* Первый провайдер 192.168.1.0/24 eth2 - 192.168.2.2 DMZ 192.168.2.0/24 eth3 - 192.168.10.22 (гейт 192.168.10.1)* Второй провайдер 192.168.10.0/24
*Гейты по умолчанию в файле interfaces НЕ указаны, т.к. они прописаны в таблицах маршрутизации (Т1 и Т2)
Настройки маршрутизации:
[CODE] #!/bin/sh
ip route flush table T1 ip route flush table T2
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2 table T1 ip route add 192.168.0.0/24 dev eth0 table T1 ip route add 192.168.10.0/24 dev eth3 src 192.168.10.22 table T1 ip route add 127.0.0.0/8 dev lo table T1 ip route add default via 192.168.1.1 dev eth1 table T1
ip route add 192.168.10.0/24 dev eth3 src 192.168.10.22 table T2 ip route add 192.168.0.0/24 dev eth0 table T2 ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2 table T2 ip route add 127.0.0.0/8 dev lo table T2 ip route add default via 192.168.10.1 dev eth3 table T2
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2 ip route add 192.168.10.0/24 dev eth3 src 192.168.10.22 #ip route add default via 192.168.1.1 dev eth1 ip rule delete table T1 ip rule delete table T2 ip rule delete table T1 ip rule delete table T2 ip rule add from 192.168.1.2 table T1 ip rule add from 192.168.10.22 table T2 ip rule add fwmark 10 table T1 ip rule add fwmark 11 table T2 ip route flush cache echo 1 >/proc/sys/net/ipv4/ip_forward
exit 0 [/CODE] Настройки Iptables
[CODE] #! /bin/sh echo "Starting FireWall:"
echo "0" > /proc/sys/net/ipv4/ip_forward
iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -j MARK --set-mark 11
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.1.2 iptables -t nat -A POSTROUTING -o eth3 -j SNAT --to-source 192.168.10.22
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "[Done !]" exit 0 [/CODE]
Проблема: При попытке пропинговать Яндекс, пакеты с компа (192.168.0.10) в локальной сети уходят на сервер (192.168.0.201 - шлюз для локалки), потом натяться (192.168.0.201 -> 192.168.10.2) и отправляются в инет (192.168.1.2 -> (шлюз - 192.168.10.1) -> инет (яндекс)), возвращаются обратно (от яндекса -> (через шлюз)192.168.10.1 -> 192.168.10.2) и "оседают" на этом интерфейсе, то есть складывается такое впечатление, что не происходит обратного преобразования, то есть (192.168.10.2 -> 192.168.0.201 ->192.168.0.10). В результате на клиентской машине "Превышен интервал для ожидания для запроса". То, что пакеты "оседают" на интерфейсе проверено tcpdump'ом.
Сервер настраиваю дома, т.к. на работе нет такой возможности (экспериментировать), соответственно дома тока одно инет подключение. Я имитирую 2 подключения путем соединения сервера с домашним компом по первому каналу, и через вай-фай по второму. Топология "2-х провайдеров" такая:
1 "провайдер": [инет -> АДСЛ модем (192,168,10,1) -> Вай-Фай (точка доступа 192,168,10,50)] -> (Домашний комп - (192,168,10,2) ->FireSatrter -> Сетевая карточка (192,168,1,1) -> сервер (192.168.1.2)
2 "провайдер": [инет -> АДСЛ модем (192,168,10,1) -> Вай-Фай (точка доступа 192,168,10,50)] -> (Вай-Фай в режиме клиента - (192,168,10,51) -> сервер (192.168.10.22)
Как только я указываю шлюз по умолчанию в основной таблице маршрутизации на любом из "провайдерских" интерфейсов в сервере, все замечательно работает, и локалка и сервак. Тоесть мои виртуальные провайдеры работают, даже если я указываю 2 шлюза по умолчанию и пингую через разные интерфейсы (на самом сервере)все идет как надо, но не работает локалка. Как только коментирую шлюз по умолчаинию, все, тишина на сервере (так и должно быть, сообщает, что сеть (инет) недоступна) а вот из локалки (в зависимости от установленой марки (10 или 11) пакеты уходят правильно по таблицам маршрутизации НО "оседают"при ответе яндекса и дальше не идут, не натяться в обратном направлении.
Вопрос: где грабли, что не так, куда копать? ???
PS. Уже неделю борюсь, читал и маны, и гуглил, и форумов перевернул немеряно, все напрасно.