LINUX.ORG.RU
ФорумAdmin

[Роутинг][Балансировка] Помогите справиться с route

 ,


0

0

Понятное дело что тема много раз обсосанная, но ответа на свой вопрос я так и не нашёл. Имеется Debian сервак с Lenny 5.0.4, на нём подняты два интернет соединения, соответственно eth0 и ppp0, также имеется eth1 который смотрит в локалку. Настроил балансировку с помощью CONNMARK. Получилось две дополнительные таблицы, по одной на каждого провайдера, в которых прописаны маршруты. Проблема в том что пакеты с сервака попадают в таблицу main. когда убиваю default gateway, пакеты с сервера перестают идти. Из локалки всё пингуется только по айпишникам. Вычитал в интернетах что можно прописать в качестве default в main интерфейс dummy0, поднятый ifconfig'ом. В этом случае всё вобще наглухо виснет, ping ничего не отвечает, а iptables -L думает около минуты прежде чем вывести что-либо внятное. На всякий случай вывод ip rule:

0: from all lookup local
101: from all fwmark 0x1 lookup prometey
102: from all fwmark 0x2 lookup avangard
32766: from all lookup main
32767: from all lookup default

кусок iptables-save:

:PREROUTING ACCEPT [5413:1928976]
:INPUT ACCEPT [305:29760]
:FORWARD ACCEPT [2609:805878]
:OUTPUT ACCEPT [755:224183]
:POSTROUTING ACCEPT [3366:1030534]
:NEW_OUT_CONN - [0:0]
-A PREROUTING -d 192.168.3.0/24 -j RETURN
-A PREROUTING -s 192.168.3.0/24 -m state --state NEW,RELATED -j NEW_OUT_CONN
-A PREROUTING -s 192.168.3.0/24 -j CONNMARK --restore-mark --nfmask 0xffffffff $
-A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1$
-A OUTPUT -o lo -j RETURN
-A OUTPUT -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A OUTPUT -m state --state NEW,RELATED -j NEW_OUT_CONN
-A NEW_OUT_CONN -j CONNMARK --set-xmark 0x2/0xffffffff
-A NEW_OUT_CONN -m statistic --mode random --probability 0.150000 -j RETURN
-A NEW_OUT_CONN -j CONNMARK --set-xmark 0x1/0xffffffff
COMMIT


Заранее спасибо.


Наиболее очевидная ошибка

-A OUTPUT -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff

-A OUTPUT -m state --state NEW,RELATED -j NEW_OUT_CONN


Эти строчки нужно поменять местами.

Да, и RELATED-соединения направлять на балансировку не нужно — они автоматически получают те же метки, что и исходные, и соответственно идут теми же маршрутами.

Ну, еще по мелочам: нет таблицы static (а надо!), балансировка транзитных соединений засунута в PREROUTING (а надо в FORWARD), заданный вручную TCP MSS вместо --clamp-mss-to-pmtu и т.п. :)

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