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

Исходное сообщение
"Не получается балансировка нагрузки на 2 ISP"

Отправлено sire , 19-Фев-07 16:04 
Есть два подключения к двум разным провайдерам (P1 и P2). Стоит задача разделить трафик между провайдерами в отношении 80% к 20%. На маршрутизаторе - Linux Debian Etch. Ядро 2.6.18.

Прочитал LARTC, кучу разных примеров, настроил.
В итоге - весь трафик идёт через того провайдера, маршрут к шлюзу которого прописан последним.
То есть если ip route говорит

default equalize
        nexthop via GW_P2  dev IF_P2 weight 20
        nexthop via GW_P1  dev IF_P1 weight 80

то весь трафик идёт через провайдера P1.
Стоит поменять записи nexthop местами, как весть трафик постепенно перетекает на провайдера P2.

Что интересно, команда

ip route show cache|grep GW_P1 |wc -l;
ip route show cache|grep GW_P2 |wc -l

выдаёт количество маршрутов в кэше для GW_P1 =~ 2.2 * GW_P2, то есть маршрутов через GW_P1 примерно в 2 раза больше, чем через GW_P2. Хотя в соответствии с указанными весами маршрутов отношение должно быть 4 к 1.

Привожу свою конфигурацию

ip route
NET_P1/29 dev IF_P1  proto kernel  scope link  src IP_P1
NET_P2/29 dev IF_P2  proto kernel  scope link  src IP_P2
10.253.253.0/24 dev IF_INT  proto kernel  scope link  src 10.253.253.104  # внутренняя сеть
default equalize
        nexthop via GW_P2  dev IF_P2 weight 20
        nexthop via GW_P1  dev IF_P1 weight 80

ip route show table prov1
несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
default via GW_P1 dev IF_P1

ip route show table prov2
несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
default via GW_P2 dev IF_P2

iptables-save
*mangle
-A PREROUTING -j CONNMARK --restore-mark
-A POSTROUTING -o IF_P1 -m state --state NEW -j MARK --set-mark 0x1
-A POSTROUTING -o IF_P2 -m state --state NEW -j MARK --set-mark 0x2
-A POSTROUTING -m state --state NEW -j CONNMARK --save-mark
COMMIT
*nat
-A POSTROUTING -m mark --mark 0x1 -j SNAT --to-source IP_P1
-A POSTROUTING -m mark --mark 0x2 -j SNAT --to-source IP_P2
COMMIT
*filter
-A FORWARD -j ACCEPT
COMMIT

Ещё я обратил внимание на странные маршруты в кэше:

ip route show cache #(фрагмент)
85.118.176.227 from 10.1.148.238 tos throughput via GW_P1 dev IF_P1  src IP_P2
    cache  mtu 1500 advmss 1460 hoplimit 64 iif IF_INT
85.118.176.227 from 10.1.148.238 tos throughput via GW_P2 dev IF_P2  src IP_P2
    cache  mtu 1500 advmss 1460 hoplimit 64 iif eth3
10.1.146.111 from 203.131.198.76 via 10.253.253.154 dev IF_INT  src IP_P2
    cache  mtu 1500 advmss 1460 hoplimit 64 iif IF_P1
10.1.150.36 from 194.67.57.206 via 10.253.253.154 dev IF_INT  src IP_P1
    cache  mtu 1500 advmss 1460 hoplimit 64 iif IF_P1
212.143.210.244 from IP_P1 via GW_P1 dev IF_P1
    cache  mtu 1500 advmss 1460 hoplimit 64
local IP_P1 from 125.2.30.104 dev lo  src IP_P1
    cache <local>  iif IF_P1
10.1.151.238 from 64.207.161.110 via 10.253.253.154 dev IF_INT  src IP_P2
    cache  mtu 1500 advmss 1460 hoplimit 64 iif IF_P1

Подскажите, пожалуйста, что поправить. Заранее очень благодарен.


Содержание

Сообщения в этом обсуждении
"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 19-Фев-07 17:09 
>Ещё я обратил внимание на странные маршруты в кэше:
ip route show cache #(фрагмент) 
85.118.176.227 from 10.1.148.238 tos throughput via GW_P1 dev IF_P1  src IP_P2
cache  mtu 1500 advmss 1460 hoplimit 64 iif IF_INT
85.118.176.227 from 10.1.148.238 tos throughput via GW_P2 dev IF_P2  src IP_P2
cache  mtu 1500 advmss 1460 hoplimit 64 iif eth3

"Странные" маршруты победил добавлением в таблицу main тех маршрутов во внутреннюю сеть, которые были прописаны в таблицах prov1 и prov2 (несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT).

Обнаружил новую "странность"

ip route show cache |grep 'src IP_P2'
выдаёт записи вида
10.1.150.100 from 38.99.76.89 via 10.253.253.154 dev IF_INT  src IP_P2

В то время как
ip route show cache |grep 'src IP_P1'
выдаёт записи вида
local IP_P1 from 74.12.206.112 dev lo  src IP_P1

"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 12:44 
мне помогло
ip route flush cache
стоит в кроне каждие 40 минут


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 12:46 
>мне помогло
>ip route flush cache
>стоит в кроне каждие 40 минут

а ище в догонку я NAT-чусь на два интерфейса


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 13:03 
>>мне помогло
>>ip route flush cache
>>стоит в кроне каждие 40 минут
>
>а ище в догонку я NAT-чусь на два интерфейса


Дык и я на два:

*nat
-A POSTROUTING -m mark --mark 0x1 -j SNAT --to-source IP_P1
-A POSTROUTING -m mark --mark 0x2 -j SNAT --to-source IP_P2
COMMIT

"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 13:09 
>мне помогло
>ip route flush cache
>стоит в кроне каждие 40 минут

Мне это не помогает - всё равнно все пакеты идут через тот интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.

Если делать этот финт по крону с периодичностью, скажем 2 - 5 минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не уверен.


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 14:24 
>>мне помогло
>>ip route flush cache
>>стоит в кроне каждие 40 минут
>
>Мне это не помогает - всё равнно все пакеты идут через тот
>интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и
>последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут
>весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
>
>Если делать этот финт по крону с периодичностью, скажем 2 - 5
>минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не
>уверен.


попробу поставить сооотношение не 80 к 20 а 4 к 1.


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 14:31 
>>>мне помогло
>>>ip route flush cache
>>>стоит в кроне каждие 40 минут
>>
>>Мне это не помогает - всё равнно все пакеты идут через тот
>>интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и
>>последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут
>>весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
>>
>>Если делать этот финт по крону с периодичностью, скажем 2 - 5
>>минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не
>>уверен.
>
>
>попробу поставить сооотношение не 80 к 20 а 4 к 1.


и дефаул примерно так на свои интерфейсы ввести до балансинга
ip route add default via x.x.x.x  dev eth1 mtu 1472 (если АДСЛ то нададо МТУ)
ip route add default via  y.y.y.y  dev eth2


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 14:51 
>>>мне помогло
>>>ip route flush cache
>>>стоит в кроне каждие 40 минут
>>
>>Мне это не помогает - всё равнно все пакеты идут через тот
>>интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и
>>последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут
>>весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
>>
>>Если делать этот финт по крону с периодичностью, скажем 2 - 5
>>минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не
>>уверен.
>
>
>попробу поставить сооотношение не 80 к 20 а 4 к 1.

Пробовал 4 к 1, пробовал 1 к 1 - результат всегда одинаковый, как я описывал в первом посте.


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 16:24 
>>>>мне помогло
>>>>ip route flush cache
>>>>стоит в кроне каждие 40 минут
>>>
>>>Мне это не помогает - всё равнно все пакеты идут через тот
>>>интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и
>>>последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут
>>>весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
>>>
>>>Если делать этот финт по крону с периодичностью, скажем 2 - 5
>>>минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не
>>>уверен.
>>
>>
>>попробу поставить сооотношение не 80 к 20 а 4 к 1.
>
>Пробовал 4 к 1, пробовал 1 к 1 - результат всегда одинаковый,
>как я описывал в первом посте.

у  тебя  какая  версия  ip  у  меня  iproute2-ss061214
и все идет на ура притом что разные интерфейси ( в смисле ppp0 b eth1)


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 16:31 
>>>>>мне помогло
>>>>>ip route flush cache
>>>>>стоит в кроне каждие 40 минут
>>>>
>>>>Мне это не помогает - всё равнно все пакеты идут через тот
>>>>интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и
>>>>последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут
>>>>весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
>>>>
>>>>Если делать этот финт по крону с периодичностью, скажем 2 - 5
>>>>минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не
>>>>уверен.
>>>
>>>
>>>попробу поставить сооотношение не 80 к 20 а 4 к 1.
>>
>>Пробовал 4 к 1, пробовал 1 к 1 - результат всегда одинаковый,
>>как я описывал в первом посте.
>
> у  тебя  какая  версия  ip  у
> меня  iproute2-ss061214
>и все идет на ура притом что разные интерфейси ( в смисле
>ppp0 b eth1)

iproute_20061002-3_i386.deb - я так понимаю, 2 октября 2006 года


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 16:40 
>>>>>>мне помогло
>>>>>>ip route flush cache
>>>>>>стоит в кроне каждие 40 минут
>>>>>
>>>>>Мне это не помогает - всё равнно все пакеты идут через тот
>>>>>интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и
>>>>>последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут
>>>>>весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
>>>>>
>>>>>Если делать этот финт по крону с периодичностью, скажем 2 - 5
>>>>>минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не
>>>>>уверен.
>>>>
>>>>
>>>>попробу поставить сооотношение не 80 к 20 а 4 к 1.
>>>
>>>Пробовал 4 к 1, пробовал 1 к 1 - результат всегда одинаковый,
>>>как я описывал в первом посте.
>>
>> у  тебя  какая  версия  ip  у
>> меня  iproute2-ss061214
>>и все идет на ура притом что разные интерфейси ( в смисле
>>ppp0 b eth1)
>
>iproute_20061002-3_i386.deb - я так понимаю, 2 октября 2006 года

есть скайп ??? свяжись igor_bat постараюсь помоч


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 16:56 
>>>>>>>мне помогло
>>>>>>>ip route flush cache
>>>>>>>стоит в кроне каждие 40 минут
>>>>>>
>>>>>>Мне это не помогает - всё равнно все пакеты идут через тот
>>>>>>интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и
>>>>>>последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут
>>>>>>весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
>>>>>>
>>>>>>Если делать этот финт по крону с периодичностью, скажем 2 - 5
>>>>>>минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не
>>>>>>уверен.
>>>>>
>>>>>
>>>>>попробу поставить сооотношение не 80 к 20 а 4 к 1.
>>>>
>>>>Пробовал 4 к 1, пробовал 1 к 1 - результат всегда одинаковый,
>>>>как я описывал в первом посте.
>>>
>>> у  тебя  какая  версия  ip  у
>>> меня  iproute2-ss061214
>>>и все идет на ура притом что разные интерфейси ( в смисле
>>>ppp0 b eth1)
>>
>>iproute_20061002-3_i386.deb - я так понимаю, 2 октября 2006 года
>
>есть скайп ??? свяжись igor_bat постараюсь помоч

есть только email и icq :(


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 17:01 
>>>>>>>>мне помогло
>>>>>>>>ip route flush cache
>>>>>>>>стоит в кроне каждие 40 минут
>>>>>>>
>>>>>>>Мне это не помогает - всё равнно все пакеты идут через тот
>>>>>>>интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и
>>>>>>>последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут
>>>>>>>весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
>>>>>>>
>>>>>>>Если делать этот финт по крону с периодичностью, скажем 2 - 5
>>>>>>>минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не
>>>>>>>уверен.
>>>>>>
>>>>>>
>>>>>>попробу поставить сооотношение не 80 к 20 а 4 к 1.
>>>>>
>>>>>Пробовал 4 к 1, пробовал 1 к 1 - результат всегда одинаковый,
>>>>>как я описывал в первом посте.
>>>>
>>>> у  тебя  какая  версия  ip  у
>>>> меня  iproute2-ss061214
>>>>и все идет на ура притом что разные интерфейси ( в смисле
>>>>ppp0 b eth1)
>>>
>>>iproute_20061002-3_i386.deb - я так понимаю, 2 октября 2006 года
>>
>>есть скайп ??? свяжись igor_bat постараюсь помоч
>
>есть только email и icq :(


отправ в форум
ifconfig
iptables -t nat -L


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 17:12 
>отправ в форум
>ifconfig
>iptables -t nat -L
ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0E:0C:4B:77:63
          inet addr:IP_P1  Bcast:0.0.0.0  Mask:255.255.255.248
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:283334260 errors:0 dropped:572 overruns:0 frame:0
          TX packets:282930392 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:925389565 (882.5 MiB)  TX bytes:1171249970 (1.0 GiB)
          Base address:0xef80 Memory:dffe0000-e0000000

eth2      Link encap:Ethernet  HWaddr 00:07:E9:2A:A8:35
          inet addr:IP_P2  Bcast:0.0.0.0  Mask:255.255.255.248
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:954469 errors:0 dropped:0 overruns:0 frame:0
          TX packets:791211 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:741232320 (706.8 MiB)  TX bytes:196984480 (187.8 MiB)
          Base address:0xdf80 Memory:dfee0000-dff00000

eth3      Link encap:Ethernet  HWaddr 00:0E:0C:4B:77:62
          inet addr:IP_INT  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:257455117 errors:0 dropped:453 overruns:0 frame:0
          TX packets:302234325 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:822227681 (784.1 MiB)  TX bytes:2066265344 (1.9 GiB)
          Base address:0xcf80 Memory:dfde0000-dfe00000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:626 errors:0 dropped:0 overruns:0 frame:0
          TX packets:626 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:54788 (53.5 KiB)  TX bytes:54788 (53.5 KiB)

iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       0    --  anywhere             anywhere            MARK match 0x1 to:IP_P1
SNAT       0    --  anywhere             anywhere            MARK match 0x2 to:IP_P2

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
TOS        tcp  --  anywhere             anywhere            tcp dpt:telnet TOS set Minimize-Delay
TOS        tcp  --  anywhere             anywhere            tcp dpt:ssh TOS set Minimize-Delay
TOS        tcp  --  anywhere             anywhere            tcp dpt:ftp TOS set Minimize-Delay
TOS        tcp  --  anywhere             anywhere            tcp dpt:domain TOS set Minimize-Delay
TOS        udp  --  anywhere             anywhere            udp dpt:domain TOS set Minimize-Delay
TOS        tcp  --  anywhere             anywhere            tcp dpt:sftp TOS set Maximize-Throughput
TOS        tcp  --  anywhere             anywhere            tcp dpt:ftp-data TOS set Maximize-Throughput
TOS        tcp  --  anywhere             anywhere            tcp dpt:www TOS set Maximize-Throughput
TOS        tcp  --  anywhere             anywhere            tcp dpt:https TOS set Maximize-Throughput
TOS        tcp  --  anywhere             anywhere            tcp dpt:webmin TOS set Maximize-Throughput
TOS        tcp  --  anywhere             anywhere            tcp dpts:netbios-ns:netbios-ssn TOS set Maximize-Throughput
TOS        udp  --  anywhere             anywhere            udp dpts:netbios-ns:netbios-ssn TOS set Maximize-Throughput
CONNMARK   0    --  anywhere             anywhere            CONNMARK restore

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
TCPMSS     tcp  --  anywhere             anywhere            tcp flags:SYN,RST/SYN TCPMSS set 1400

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MARK       0    --  anywhere             anywhere            state NEW MARK set 0x1
MARK       0    --  anywhere             anywhere            state NEW MARK set 0x2
CONNMARK   0    --  anywhere             anywhere            state NEW CONNMARK save

Вот так должно быть понятнее:

$IPT -t mangle -A POSTROUTING -m state --state NEW -o $IF_EXT1 -j MARK --set-mark 1
$IPT -t mangle -A POSTROUTING -m state --state NEW -o $IF_EXT2 -j MARK --set-mark 2
$IPT -t mangle -A POSTROUTING -m state --state NEW -j CONNMARK --save-mark
$IPT -t mangle -A PREROUTING -j CONNMARK --restore-mark

# NAT
$IPT -t nat -A POSTROUTING -m mark --mark 1 -j SNAT --to-source $IP_EXT1
$IPT -t nat -A POSTROUTING -m mark --mark 2 -j SNAT --to-source $IP_EXT2

Сначала делал так:

$IPT -t mangle -A PREROUTING -i $IF_EXT1 -j MARK --set-mark 1
$IPT -t mangle -A PREROUTING -i $IF_EXT2 -j MARK --set-mark 2
$IPT -t nat -A POSTROUTING -s 10.0.0.0/255.0.0.0 -o $IF_EXT1 -j SNAT --to-source $IP_EXT1
$IPT -t nat -A POSTROUTING -s 10.0.0.0/255.0.0.0 -o $IF_EXT2 -j SNAT --to-source $IP_EXT2

Потом нашёл в инете тот вариант, что указан выше. Он вроде бы лучше. Однако на мою ситуацию смена этих методов не влияет.

"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 17:24 

># NAT
>$IPT -t nat -A POSTROUTING -m mark --mark 1 -j SNAT --to-source $IP_EXT1
>$IPT -t nat -A POSTROUTING -m mark --mark 2 -j SNAT --to-source $IP_EXT2

IP_EXT* должен быть твой адрес. (адрес карточки на твоем сервере)IP_P*
тоесть совпадать с тем что видает ifconfig


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 17:25 
>
>># NAT
>>$IPT -t nat -A POSTROUTING -m mark --mark 1 -j SNAT --to-source $IP_EXT1
>>$IPT -t nat -A POSTROUTING -m mark --mark 2 -j SNAT --to-source $IP_EXT2
>
>IP_EXT* должен быть твой адрес. (адрес карточки на твоем сервере)IP_P*
>тоесть совпадать с тем что видает ifconfig

IP_EXT* == IP_P*


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 17:47 
>>
>>># NAT
>>>$IPT -t nat -A POSTROUTING -m mark --mark 1 -j SNAT --to-source $IP_EXT1
>>>$IPT -t nat -A POSTROUTING -m mark --mark 2 -j SNAT --to-source $IP_EXT2
>>
>>IP_EXT* должен быть твой адрес. (адрес карточки на твоем сервере)IP_P*
>>тоесть совпадать с тем что видает ifconfig
>
>IP_EXT* == IP_P*


да да именно так


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 17:47 
>>>
>>>># NAT
>>>>$IPT -t nat -A POSTROUTING -m mark --mark 1 -j SNAT --to-source $IP_EXT1
>>>>$IPT -t nat -A POSTROUTING -m mark --mark 2 -j SNAT --to-source $IP_EXT2
>>>
>>>IP_EXT* должен быть твой адрес. (адрес карточки на твоем сервере)IP_P*
>>>тоесть совпадать с тем что видает ifconfig
>>
>>IP_EXT* == IP_P*
>
>
>да да именно так

я имею ввиду только в настройках НАТ


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 17:50 
>>>>
>>>>># NAT
>>>>>$IPT -t nat -A POSTROUTING -m mark --mark 1 -j SNAT --to-source $IP_EXT1
>>>>>$IPT -t nat -A POSTROUTING -m mark --mark 2 -j SNAT --to-source $IP_EXT2
>>>>
>>>>IP_EXT* должен быть твой адрес. (адрес карточки на твоем сервере)IP_P*
>>>>тоесть совпадать с тем что видает ifconfig
>>>
>>>IP_EXT* == IP_P*
>>
>>
>>да да именно так
>
>я имею ввиду только в настройках НАТ


Я имею ввиду, что у меня так и есть :-)


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 17:54 
>>>>>
>>>>>># NAT
>>>>>>$IPT -t nat -A POSTROUTING -m mark --mark 1 -j SNAT --to-source $IP_EXT1
>>>>>>$IPT -t nat -A POSTROUTING -m mark --mark 2 -j SNAT --to-source $IP_EXT2
>>>>>
>>>>>IP_EXT* должен быть твой адрес. (адрес карточки на твоем сервере)IP_P*
>>>>>тоесть совпадать с тем что видает ifconfig
>>>>
>>>>IP_EXT* == IP_P*
>>>
>>>
>>>да да именно так
>>
>>я имею ввиду только в настройках НАТ
>
>
>Я имею ввиду, что у меня так и есть :-)

Давай по порядку
опиши маршрути дефаулт на оба адреса у провайдеров (как више я писал)
сделай баланс через еквалайзер как у тебя
сделай обычний нат ненада ничего маркировать
должно работать а дальше все остальние вещи


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 18:06 
>Давай по порядку

Давай :-)

>опиши маршрути дефаулт на оба адреса у провайдеров (как више я писал)

В одной таблице не может быть более одного default-маршрута (RTNETLINK answer: File exists).
В таблицах prov1 и prov2 default-маршруты на шлюзы gw_p1 и gw_p2, соответственно, прописаны. Я писал об этом выше.

ip route show table prov1
несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
default via GW_P1 dev IF_P1

ip route show table prov2
несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
default via GW_P2 dev IF_P2


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 18:10 
>>Давай по порядку
>
>Давай :-)
>
>>опиши маршрути дефаулт на оба адреса у провайдеров (как више я писал)
>
>В одной таблице не может быть более одного default-маршрута (RTNETLINK answer: File
>exists).
>В таблицах prov1 и prov2 default-маршруты на шлюзы gw_p1 и gw_p2, соответственно,
>прописаны. Я писал об этом выше.
>
ip route show table prov1 
>несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
>default via GW_P1 dev IF_P1
>
>ip route show table prov2
>несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
>default via GW_P2 dev IF_P2


как не странно может
у меня например
ip route add default via 192.168.x.x dev eth1 mtu 1472
ip route add default via  195.5.y.y dev ppp0
напиши под себя дальше сделай
ip route ls
и увидиш.


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 18:13 
>>>Давай по порядку
>>
>>Давай :-)
>>
>>>опиши маршрути дефаулт на оба адреса у провайдеров (как више я писал)
>>
>>В одной таблице не может быть более одного default-маршрута (RTNETLINK answer: File
>>exists).
>>В таблицах prov1 и prov2 default-маршруты на шлюзы gw_p1 и gw_p2, соответственно,
>>прописаны. Я писал об этом выше.
>>
ip route show table prov1 
>>несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
>>default via GW_P1 dev IF_P1
>>
>>ip route show table prov2
>>несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
>>default via GW_P2 dev IF_P2

>
>
>как не странно может
>у меня например
>ip route add default via 192.168.x.x dev eth1 mtu 1472
>ip route add default via  195.5.y.y dev ppp0
>напиши под себя дальше сделай
>ip route ls
>и увидиш.
Дальше не надо двух таблиц провов и маркировки у iptables
вводим (подстав свое) и нат как било у тебя сначала без маркировки на два интерфейса
ip route add 0/0  equalize nexthop via 192.168.х.х dev eth1 weight 2
nexthop via  195.5.y.y dev ppp0 weight 1

у меня работает на нескольких машинах и даже на OpenWRT.


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 18:18 
>>>Давай по порядку
>>
>>Давай :-)
>>
>>>опиши маршрути дефаулт на оба адреса у провайдеров (как више я писал)
>>
>>В одной таблице не может быть более одного default-маршрута (RTNETLINK answer: File
>>exists).
>>В таблицах prov1 и prov2 default-маршруты на шлюзы gw_p1 и gw_p2, соответственно,
>>прописаны. Я писал об этом выше.
>>
ip route show table prov1 
>>несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
>>default via GW_P1 dev IF_P1
>>
>>ip route show table prov2
>>несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
>>default via GW_P2 dev IF_P2

>
>
>как не странно может
>у меня например
>ip route add default via 192.168.x.x dev eth1 mtu 1472
>ip route add default via  195.5.y.y dev ppp0
>напиши под себя дальше сделай
>ip route ls
>и увидиш.

У меня не так. ip route ls показывает только тот маршрут, который был добавлен первым. Остальные маршруты не добавляются - RTNETLINK answers: File exists


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 18:21 

>
>У меня не так. ip route ls показывает только тот маршрут, который
>был добавлен первым. Остальные маршруты не добавляются - RTNETLINK answers: File
>exists

ясно ядро 2.6.xx став на прова которого канал по шире и дальше по тексту


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 18:25 
>
>>
>>У меня не так. ip route ls показывает только тот маршрут, который
>>был добавлен первым. Остальные маршруты не добавляются - RTNETLINK answers: File
>>exists
>
>ясно ядро 2.6.xx став на прова которого канал по шире и дальше
>по тексту

Вначале темы я указал версию ОС и ядра на моём сервере. На серверы провайдера я ничего поставить не могу.


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 18:27 
>>>
>Вначале темы я указал версию ОС и ядра на моём сервере. На
>серверы провайдера я ничего поставить не могу.
ничего у прова ставить не нада постав у себя
ip route add default via (на адрес провайдера у которого канал самый широкий)dev (устройсво которое смотрит на него)



"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 18:30 
>>>>
>>Вначале темы я указал версию ОС и ядра на моём сервере. На
>>серверы провайдера я ничего поставить не могу.
>ничего у прова ставить не нада постав у себя
>ip route add default via (на адрес провайдера у которого канал самый
>широкий)dev (устройсво которое смотрит на него)

Каналы одинаковые.


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 18:33 
>>>>>
>>>Вначале темы я указал версию ОС и ядра на моём сервере. На
>>>серверы провайдера я ничего поставить не могу.
>>ничего у прова ставить не нада постав у себя
>>ip route add default via (на адрес провайдера у которого канал самый
>>широкий)dev (устройсво которое смотрит на него)
>
>Каналы одинаковые.
тогда на любой


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 18:33 
>>>>>>
>>>>Вначале темы я указал версию ОС и ядра на моём сервере. На
>>>>серверы провайдера я ничего поставить не могу.
>>>ничего у прова ставить не нада постав у себя
>>>ip route add default via (на адрес провайдера у которого канал самый
>>>широкий)dev (устройсво которое смотрит на него)
>>
>>Каналы одинаковые.
> тогда на любой

Дальше что?


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 19:00 
Это нормально, что в кэше содержатся маршруты для одних и тех же точек через разные шлюзы?
Ещё и по несколько раз одно и то же.

83.9.82.101 from 10.1.149.152 via GW_P1 dev IF_P1  src 10.253.253.104
    cache  mtu 1500 advmss 1460 hoplimit 64 iif IF_INT
83.9.82.101 from 10.1.149.152 via GW_P1 dev IF_P1  src 10.253.253.104
    cache  mtu 1500 advmss 1460 hoplimit 64 iif IF_INT
83.9.82.101 from 10.1.149.152 via GW_P2 dev IF_P2  src 10.253.253.104
    cache  mtu 1500 advmss 1460 hoplimit 64 iif IF_INT


"Не получается балансировка нагрузки на 2 ISP"
Отправлено bat , 20-Фев-07 19:04 
>Это нормально, что в кэше содержатся маршруты для одних и тех же
>точек через разные шлюзы?
>Ещё и по несколько раз одно и то же.
>
>
83.9.82.101 from 10.1.149.152 via GW_P1 dev IF_P1  src 10.253.253.104 
>    cache  mtu 1500 advmss 1460 hoplimit 64
>iif IF_INT
>83.9.82.101 from 10.1.149.152 via GW_P1 dev IF_P1  src 10.253.253.104
>    cache  mtu 1500 advmss 1460 hoplimit 64
>iif IF_INT
>83.9.82.101 from 10.1.149.152 via GW_P2 dev IF_P2  src 10.253.253.104
>    cache  mtu 1500 advmss 1460 hoplimit 64
>iif IF_INT

нормально

default equalize
        nexthop via GW_P2  dev IF_P2 weight 1
        nexthop via GW_P1  dev IF_P1 weight 1

и нат на два интрефейса


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 20-Фев-07 19:21 
Делал по-разному. Первый вариант, который я пробовал, был самым простым и выглядел так:
ip rule add fwmark 1 lookup $T1
ip rule add from $IP_EXT1 lookup $T1
ip route add $NET_EXT1 via $GW_EXT1
ip route add 0/0 via $GW_EXT1 table $T1

ip rule add fwmark 2 lookup $T2
ip rule add from $IP_EXT2 lookup $T2
ip route add $NET_EXT2 via $GW_EXT2
ip route add 0/0 via $GW_EXT2 table $T2

ip route add $NET_INT via $IP_INT table $T1
ip route add $NET_INT via $IP_INT table $T2

ip route del default >/dev/null 2>&1
ip route add default scope global equalize \
        nexthop via $GW_EXT2 dev $IF_EXT2 weight 20 \
        nexthop via $GW_EXT1 dev $IF_EXT1 weight 80
ip route flush cache

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward

$IPT -t mangle -A PREROUTING -i $IF_EXT1 -j MARK --set-mark 1
$IPT -t mangle -A PREROUTING -i $IF_EXT2 -j MARK --set-mark 2
$IPT -t nat -A POSTROUTING -s $INT_NET -o $IF_EXT1 -j SNAT --to-source $IP_EXT1
$IPT -t nat -A POSTROUTING -s $INT_NET -o $IF_EXT2 -j SNAT --to-source $IP_EXT2
$IPT -A FORWARD -j ACCEPT


fwmark делается для того, чтобы ответные пакеты уходили через тот же интерфейс, через который пришли запросы. Иначе некоторые прикладные протоколы не работают.

Ситуация - такая же, как описано в первом посте.


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 26-Фев-07 14:29 
Как оказалось, это глюк Debian Etch. Немало народу задаёт этот же вопрос в Инете, в основном на английском. Буду искать решение. Возможно пересборка ядра или iproute.

"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 26-Фев-07 19:18 
>Как оказалось, это глюк Debian Etch. Немало народу задаёт этот же вопрос
>в Инете, в основном на английском. Буду искать решение. Возможно пересборка
>ядра или iproute.

Пересборка iproute не помогла. :-(


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 28-Фев-07 18:36 
>Как оказалось, это глюк Debian Etch. Немало народу задаёт этот же вопрос
>в Инете, в основном на английском. Буду искать решение. Возможно пересборка
>ядра или iproute.

К стати, та же конфигурация прекрасно работает на ALT Linux Master 2.4 с ядром 2.4.26.


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 28-Фев-07 20:52 
>>Как оказалось, это глюк Debian Etch. Немало народу задаёт этот же вопрос
>>в Инете, в основном на английском. Буду искать решение. Возможно пересборка
>>ядра или iproute.
>
>К стати, та же конфигурация прекрасно работает на ALT Linux Master 2.4
>с ядром 2.4.26.

А также на ASP Linux с ядром 2.6.18.1.


"Не получается балансировка нагрузки на 2 ISP"
Отправлено sire , 01-Мрт-07 19:07 
>Как оказалось, это глюк Debian Etch. Немало народу задаёт этот же вопрос
>в Инете, в основном на английском. Буду искать решение. Возможно пересборка
>ядра или iproute.

Проблему удалось решить пересборкой ядра Debian Etch без параметра CONFIG_IP_ROUTE_MULTIPATH_CACHED=y. Теперь всё работает как надо. Зачем они вообще его включили? Столько времени из-за него потерял!