LINUX.ORG.RU
ФорумAdmin

Снова 2 провайдера и опять не работает.


0

0

Приветствую всех ! Сразу прошу прощения за поднятие изжеванной темы, но...

Задача: Есть 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. Уже неделю борюсь, читал и маны, и гуглил, и форумов перевернул немеряно, все напрасно.

Re: Снова 2 провайдера и опять не работает.

А маршруты для локалки (DMZ) у вас в таблице роутинга есть?

nnz ★★★★ ()

Re: Снова 2 провайдера и опять не работает.

Еще можно попробовать

for it in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 0 > $it
done

nnz ★★★★ ()

Re: Снова 2 провайдера и опять не работает.

УРА !!!!!!!!!!!!!!

Респект Вам и уважуха !

Реально все заработало, все ходит по своим маршрутам !!!!

Можно теперь ламерский вопрос, что я сделал сим действом, я понимаю что я прописал нули в файлы rp_filter, за что отвечают эти файлы ?

SuperXL ()

Re: Снова 2 провайдера и опять не работает.

rp_filter - простейшая защита от спуфинга. Суть проверки: если ответ на пакет должен уйти НЕ через тот же интерфейс, через который пришел этот пакет, то пакет уничтожается. Помогает, например, от приходящих из инета пакетов якобы "от 192.168.0.1" или "от 127.0.0.1".
При использовании нескольких параллельных каналов такая защита создает определенные трудности (как в вашем случае).
Ну а "левые" пакеты можно зарезать и фаерволом.

nnz ★★★★ ()

Re: Снова 2 провайдера и опять не работает.

прописал нули в файлы rp_filter, за что отвечают эти файлы

На самом деле это не просто файлы, а системные параметры. Их можно менять как через procfs/sysctl (/proc/sys), так и просто через sysctl.

Например,

echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
эквивалентно
sysctl net.ipv4.conf.eth0.rp_filter=0

nnz ★★★★ ()

Re: Снова 2 провайдера и опять не работает.

Вот хоть бы в одном мануале это было написано, хоть в одной бы хавтушке. У других наверное работало потому, что использовались айпишники из совсем разных подсетей, а у меня почти рядом... понимаю что это глупо, но...

SuperXL ()

Re: Снова 2 провайдера и опять не работает.

Возник еще вопрос, зачем закидывать информацию о маршруте в таблицу, если по сути этот маршрут не должен, вообще, участвовать в обмене по этой таблице ?

SuperXL ()

Re: Снова 2 провайдера и опять не работает.

да, ну например, вот как в моем примере выше...

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 

зачем строка номер 3 (*я ее спецом выделил) указана в таблице 1 если она по сути должна маршрутизировать пакеты по таблице 2 ???, и наоборот, во второй таблице есть маршрут от первой.

SuperXL ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.