Есть два подключения к двум разным провайдерам (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 80ip route show table prov1
несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
default via GW_P1 dev IF_P1ip route show table prov2
несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
default via GW_P2 dev IF_P2iptables-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Подскажите, пожалуйста, что поправить. Заранее очень благодарен.
>Ещё я обратил внимание на странные маршруты в кэше: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
мне помогло
ip route flush cache
стоит в кроне каждие 40 минут
>мне помогло
>ip route flush cache
>стоит в кроне каждие 40 минута ище в догонку я NAT-чусь на два интерфейса
>>мне помогло
>>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
>мне помогло
>ip route flush cache
>стоит в кроне каждие 40 минутМне это не помогает - всё равнно все пакеты идут через тот интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
Если делать этот финт по крону с периодичностью, скажем 2 - 5 минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не уверен.
>>мне помогло
>>ip route flush cache
>>стоит в кроне каждие 40 минут
>
>Мне это не помогает - всё равнно все пакеты идут через тот
>интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и
>последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут
>весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
>
>Если делать этот финт по крону с периодичностью, скажем 2 - 5
>минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не
>уверен.
попробу поставить сооотношение не 80 к 20 а 4 к 1.
>>>мне помогло
>>>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
>>>мне помогло
>>>ip route flush cache
>>>стоит в кроне каждие 40 минут
>>
>>Мне это не помогает - всё равнно все пакеты идут через тот
>>интерфейс, для которого nexthop прописан последним. Помогает только удаление default-маршрута и
>>последующее добавление с переставленными местами nexthop'ами. Но ненадолго, через несколько минут
>>весь итрафик перетекает на тот маршрут, чей nexthop прописан последним.
>>
>>Если делать этот финт по крону с периодичностью, скажем 2 - 5
>>минут, боюсь, что у юзеров будут рваться установленные соединения, хотя не
>>уверен.
>
>
>попробу поставить сооотношение не 80 к 20 а 4 к 1.Пробовал 4 к 1, пробовал 1 к 1 - результат всегда одинаковый, как я описывал в первом посте.
>>>>мне помогло
>>>>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)
>>>>>мне помогло
>>>>>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 года
>>>>>>мне помогло
>>>>>>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 постараюсь помоч
>>>>>>>мне помогло
>>>>>>>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 :(
>>>>>>>>мне помогло
>>>>>>>>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
>отправ в форум
>ifconfig
>iptables -t nat -Lifconfig
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-e0000000eth2 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-dff00000eth3 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-dfe00000lo 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 destinationChain 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_P2Chain 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 restoreChain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot opt source destination
TCPMSS tcp -- anywhere anywhere tcp flags:SYN,RST/SYN TCPMSS set 1400Chain OUTPUT (policy ACCEPT)
target prot opt source destinationChain 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
Потом нашёл в инете тот вариант, что указан выше. Он вроде бы лучше. Однако на мою ситуацию смена этих методов не влияет.
># 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_EXT2IP_EXT* должен быть твой адрес. (адрес карточки на твоем сервере)IP_P*
тоесть совпадать с тем что видает ifconfig
>
>># 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*
>тоесть совпадать с тем что видает ifconfigIP_EXT* == IP_P*
>>
>>># 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*
да да именно так
>>>
>>>># 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*
>
>
>да да именно такя имею ввиду только в настройках НАТ
>>>>
>>>>># 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*
>>
>>
>>да да именно так
>
>я имею ввиду только в настройках НАТ
Я имею ввиду, что у меня так и есть :-)
>>>>>
>>>>>># 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*
>>>
>>>
>>>да да именно так
>>
>>я имею ввиду только в настройках НАТ
>
>
>Я имею ввиду, что у меня так и есть :-)Давай по порядку
опиши маршрути дефаулт на оба адреса у провайдеров (как више я писал)
сделай баланс через еквалайзер как у тебя
сделай обычний нат ненада ничего маркировать
должно работать а дальше все остальние вещи
>Давай по порядкуДавай :-)
>опиши маршрути дефаулт на оба адреса у провайдеров (как више я писал)
В одной таблице не может быть более одного 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_P1ip route show table prov2
несколько маршрутов через внутренние шлюзы via 10.253.253.154 dev IF_INT
default via GW_P2 dev IF_P2
>>Давай по порядку
>
>Давай :-)
>
>>опиши маршрути дефаулт на оба адреса у провайдеров (как више я писал)
>
>В одной таблице не может быть более одного 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
и увидиш.
>>>Давай по порядку
>>
>>Давай :-)
>>
>>>опиши маршрути дефаулт на оба адреса у провайдеров (как више я писал)
>>
>>В одной таблице не может быть более одного 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.
>>>Давай по порядку
>>
>>Давай :-)
>>
>>>опиши маршрути дефаулт на оба адреса у провайдеров (как више я писал)
>>
>>В одной таблице не может быть более одного 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
>
>У меня не так. ip route ls показывает только тот маршрут, который
>был добавлен первым. Остальные маршруты не добавляются - RTNETLINK answers: File
>existsясно ядро 2.6.xx став на прова которого канал по шире и дальше по тексту
>
>>
>>У меня не так. ip route ls показывает только тот маршрут, который
>>был добавлен первым. Остальные маршруты не добавляются - RTNETLINK answers: File
>>exists
>
>ясно ядро 2.6.xx став на прова которого канал по шире и дальше
>по текстуВначале темы я указал версию ОС и ядра на моём сервере. На серверы провайдера я ничего поставить не могу.
>>>
>Вначале темы я указал версию ОС и ядра на моём сервере. На
>серверы провайдера я ничего поставить не могу.
ничего у прова ставить не нада постав у себя
ip route add default via (на адрес провайдера у которого канал самый широкий)dev (устройсво которое смотрит на него)
>>>>
>>Вначале темы я указал версию ОС и ядра на моём сервере. На
>>серверы провайдера я ничего поставить не могу.
>ничего у прова ставить не нада постав у себя
>ip route add default via (на адрес провайдера у которого канал самый
>широкий)dev (устройсво которое смотрит на него)Каналы одинаковые.
>>>>>
>>>Вначале темы я указал версию ОС и ядра на моём сервере. На
>>>серверы провайдера я ничего поставить не могу.
>>ничего у прова ставить не нада постав у себя
>>ip route add default via (на адрес провайдера у которого канал самый
>>широкий)dev (устройсво которое смотрит на него)
>
>Каналы одинаковые.
тогда на любой
>>>>>>
>>>>Вначале темы я указал версию ОС и ядра на моём сервере. На
>>>>серверы провайдера я ничего поставить не могу.
>>>ничего у прова ставить не нада постав у себя
>>>ip route add default via (на адрес провайдера у которого канал самый
>>>широкий)dev (устройсво которое смотрит на него)
>>
>>Каналы одинаковые.
> тогда на любойДальше что?
Это нормально, что в кэше содержатся маршруты для одних и тех же точек через разные шлюзы?
Ещё и по несколько раз одно и то же.
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
>Это нормально, что в кэше содержатся маршруты для одних и тех же
>точек через разные шлюзы?
>Ещё и по несколько раз одно и то же.
>
>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и нат на два интрефейса
Делал по-разному. Первый вариант, который я пробовал, был самым простым и выглядел так: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 $T1ip 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 $T2ip route add $NET_INT via $IP_INT table $T1
ip route add $NET_INT via $IP_INT table $T2ip 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 cacheecho 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 делается для того, чтобы ответные пакеты уходили через тот же интерфейс, через который пришли запросы. Иначе некоторые прикладные протоколы не работают.Ситуация - такая же, как описано в первом посте.
Как оказалось, это глюк Debian Etch. Немало народу задаёт этот же вопрос в Инете, в основном на английском. Буду искать решение. Возможно пересборка ядра или iproute.
>Как оказалось, это глюк Debian Etch. Немало народу задаёт этот же вопрос
>в Инете, в основном на английском. Буду искать решение. Возможно пересборка
>ядра или iproute.Пересборка iproute не помогла. :-(
>Как оказалось, это глюк Debian Etch. Немало народу задаёт этот же вопрос
>в Инете, в основном на английском. Буду искать решение. Возможно пересборка
>ядра или iproute.К стати, та же конфигурация прекрасно работает на ALT Linux Master 2.4 с ядром 2.4.26.
>>Как оказалось, это глюк Debian Etch. Немало народу задаёт этот же вопрос
>>в Инете, в основном на английском. Буду искать решение. Возможно пересборка
>>ядра или iproute.
>
>К стати, та же конфигурация прекрасно работает на ALT Linux Master 2.4
>с ядром 2.4.26.А также на ASP Linux с ядром 2.6.18.1.
>Как оказалось, это глюк Debian Etch. Немало народу задаёт этот же вопрос
>в Инете, в основном на английском. Буду искать решение. Возможно пересборка
>ядра или iproute.Проблему удалось решить пересборкой ядра Debian Etch без параметра CONFIG_IP_ROUTE_MULTIPATH_CACHED=y. Теперь всё работает как надо. Зачем они вообще его включили? Столько времени из-за него потерял!