URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 94036
[ Назад ]

Исходное сообщение
"Проблемы с network балансировкой Linux."

Отправлено crusader_1 , 16-Ноя-12 18:25 
Доброго времени суток!

Есть 2 интернет канала, от двух разных провайдеров , которые подымаются на Linux Debian 6 в виде ppp0 и ppp1 , я настроил балансировку с помощью ip route2.
Оба соединения пингуются извне , изнутри сессии делятся между 2мя каналами. Т.е. одна сессия уходит по одному каналу, а следующая по второму... третья опять по первому и.т.д.
Например traceroute ya.ru первый раз пойдет по одному каналу а след. раз по второму.

Проблема : При подключении извне (например rdp или вебклиент) соединение устанавливается, но проходит какое то время и оно становится недоступным, пинги при этом идут. Через некоторое время связь восстанавливается. Потом опять пропадает.

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

Заранее благодарен.

(есть 2 таблицы T1 и T2)
роуты :
ip route add 84.201.224.0\20 dev ppp0 src 84.201.228.158 table T1
ip route add default via 84.201.225.100 table T1
ip route add 81.25.32.0\20 dev ppp1 src 81.25.46.69 table T2
ip route add default via 81.25.33.1 table T2
ip route add 84.201.224.0\20 dev ppp0 src 84.201.228.158
ip route add 81.25.32.0\20 dev ppp1 src 81.25.46.69
ip rule add from 84.201.228.158 table T1
ip rule add from 81.25.46.69 table T2
ip route add 176.9.145.115 via 81.25.46.69
ip route add default scope global nexthop via 84.201.225.100 dev ppp0 weight 1 nexthop via 81.25.33.1 dev ppp1 weight 1


Содержание

Сообщения в этом обсуждении
"Проблемы с network балансировкой Linux."
Отправлено PavelR , 16-Ноя-12 19:51 

>При подключении извне (например rdp или вебклиент) соединение устанавливается, но
>проходит какое то время и оно становится недоступным

Если из интернета подключались к сервису вашего сервера, то так быть не может.
Если из интернета подключались к сервису, куда  ваш сервер пробрасывает соединение (RDP), то так быть не может, потому что указанных настроек не хватит для нормальной работы.


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

Если вы про то, что "локалка" уходя в интернет, ходит то так то сяк, то надо как-то так
сохранить маршрут с помощью iptables connmark:

iptables -t mangle -I POSTROUTING -o ppp+ -m connmark ! --mark 0 -j ACCEPT  // skip, already marked
iptables -t mangle -I POSTROUTING -o ppp0 -j CONNMARK --set-mark 1   // routed, set mark 1
iptables -t mangle -I POSTROUTING -o ppp1 -j CONNMARK --set-mark 2   // routed, set mark 2

iptables -t mangle -I PREROUTING -i eth1 -j CONNMARK --restore-mark  //restore mark to packet from connmark


ip ru add fwmark 1 table T1 pref 3000   // route using packet mark
ip ru add fwmark 2 table T2 pref 3010  


"Проблемы с network балансировкой Linux."
Отправлено crusader_1 , 19-Ноя-12 12:19 
>>При подключении извне (например rdp или вебклиент) соединение устанавливается, но
>>проходит какое то время и оно становится недоступным
> Если из интернета подключались к сервису вашего сервера, то так быть не
> может.
> Если из интернета подключались к сервису, куда  ваш сервер пробрасывает соединение
> (RDP), то так быть не может, потому что указанных настроек не
> хватит для нормальной работы.

Да, Вы совершенно правы - это портмаппинг, он был настроен с помощью iptables еще в то время, когда был 1 канал. И вот в соединениях извне к сервисам проброшеным с помощью портмаппинга и возникают проблемы.

> Если вы про то, что "локалка" уходя в интернет, ходит то так
> то сяк, то надо как-то так
> сохранить маршрут с помощью iptables connmark:

Прописал написанные Вами правила - не помогло :(

> iptables -t mangle -I PREROUTING -i eth1 -j CONNMARK --restore-mark

eth1 - это интерфейс смотрящий на локальную сеть, я правильно понял же?


Есть еще какие-нибудь мысли? Заранее спасибо!



"Проблемы с network балансировкой Linux."
Отправлено PavelR , 19-Ноя-12 12:56 
> Да, Вы совершенно правы - это портмаппинг, он был настроен с помощью
> iptables еще в то время, когда был 1 канал. И вот
> в соединениях извне к сервисам проброшеным с помощью портмаппинга и возникают
> проблемы.

Так что у вас там настроено? Предлагаете дальше играть в игру "угадай что где когда"?

повторю:

>> Если из интернета подключались к сервису, куда  ваш сервер пробрасывает соединение
>> (RDP), то так быть не может, потому что указанных настроек не
>> хватит для нормальной работы.


"Проблемы с network балансировкой Linux."
Отправлено crusader_1 , 19-Ноя-12 15:35 
КАК БЫЛО СРАЗУ :
LAN 10.10.10.0\24
SERVER : 10.10.10.1 (windows AD , почта и.т.д.)
ROUTER (debian) : 2 физ. сетевые карты и ppp0
1 eth0 смотрит на локалку : 10.10.10.3
2 eth1 смотрит на adsl модем  192.168.1.2 (модем 192.168.1.1 в режиме бриджа)
3 ppp0 интерфейс - устанавливается с провайдером через модем IP 84.201.228.158
сеть провайдера : 84.201.224.0\20

На роутере  включена маршрутизация и NAT
-A POSTROUTING -s 10.10.10.0/24 -o ppp0 -j SNAT --to-source 84.201.228.158
так же через iptables сделан портмаппинг (несколько портов, но будем разбирать на примере rdp):
-A PREROUTING -d 84.201.228.158/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 10.10.10.1:3389

В этой конфигурации, при одном default gateway ВСЁ РАБОТАЛО : и интренет и портмапинг всех внутр. сервисов.

Было решено добавить для надежности и увеличения скорости канал от другого интернет провайдера

КАК СТАЛО:
ROUTER: всё те же 2 физ карты :
1. смотрит на сеть eth0
2. т.к. отдельной сетевой для ВТОРОГО adsl модема (нового провайдера) не было, я поставил свитч включил в него 2 адсл модема, а от свитчка патчкорд включил в сетевую eth1 , которая смотрит на модемы. Для этой сетевой я прописал второй IP адресс.
Т.е. у сетевой смотрящей на модемы 2 IP адреса (для каждого прова свой)
Оба модема в бриджах. Это нужно ТОЛЬКО для того, что бы установить PPP соединение для каждого прова, через которые уже ходит трафик.

Устанавливаются два соеднинения ppp0 и ppp1 соответственно с первым и вторым провайдером. Далее я удалил старый основной шлюз на первого провайдера, переписал таблицу маршрутизации через ip route ( маршруты в первом сообщении) и сделал балансировку :
ip route add default scope global nexthop via 84.201.225.100 dev ppp0 weight 1 nexthop via 81.25.33.1 dev ppp1 weight 1

в iptables я дописал портмапы для нового соедиения
-A PREROUTING -d 81.25.46.69/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 10.10.10.1:3389
и так же дописал NAT
-A POSTROUTING -s 10.10.10.0/24 -o ppp1 -j MASQUERADE

Для визуального восприятия всей схемы я нарисовал для Вас картинку: http://img13.imageshost.ru/img/2012/11/19/image_50aa1a17922f...
По картинке может показаться что ppp0 и ppp1 поднимаются на модемах - это не так, ppp0 и ppp1 поднимаются на шлюзе.

Какой еще информации не хватает Вам для анализа?

Большое Спасибо что помогаете разобраться!



"Проблемы с network балансировкой Linux."
Отправлено VUZverev , 19-Ноя-12 16:30 
Не поделишься настройками?
Ситуация схожая, но с нуля. 2 провайдера, с адсл модема идет интернет в eth2, выдается в eth0, а нужно чтоб еще по eth1, поднимался VPN, и несколько IP только работали в 2 сеть. Ну и естественно стоит сервер в локалке для 3389 порта.Установлен Дебиан, после чего только прописана сеть, и установка ВПН соединения. Ткните носом где прочесть что настроить или просто подскажите. Зараннее благодарен.


"Проблемы с network балансировкой Linux."
Отправлено PavelR , 19-Ноя-12 18:42 
> Не поделишься настройками?
> Ситуация схожая, но с нуля. 2 провайдера, с адсл модема идет интернет
> в eth2, выдается в eth0, а нужно чтоб еще по eth1,
> поднимался VPN, и несколько IP только работали в 2 сеть. Ну
> и естественно стоит сервер в локалке для 3389 порта.Установлен Дебиан, после
> чего только прописана сеть, и установка ВПН соединения. Ткните носом где
> прочесть что настроить или просто подскажите. Зараннее благодарен.

http://opennet.ru/tips/2009_policy_route_linux.shtml
http://opennet.ru/tips/1651_route_iptables_linux_nat.shtml


"Проблемы с network балансировкой Linux."
Отправлено crusader_1 , 19-Ноя-12 22:22 
PavelR, есть ли у Вас какие-либо еще мысли?

"Проблемы с network балансировкой Linux."
Отправлено PavelR , 20-Ноя-12 20:44 
> PavelR, есть ли у Вас какие-либо еще мысли?

а вы статейки прочитать попытались?
Их надо осмыслить и переделать настройки.