Еще хочу рассказать как я криво-косо распределил юзеров по каналам. Балансировка каналов, когда вместо WAN1FailsToWAN2 вы ставите LoadBalance, не есть хорошая идея, т.к. некоторые сайты (яду им!) такого не переносят. В частности mail.ru не дает скачать вложения из письма. Ну понятно, вы зашли с одного IP, а вложение тянете с другого. Тут-то у mail.ru и происходит короткое замыкание и паралич головного мозга.
Так вот, решил я тогда рассадить юзеров по каналам, чтобы оба канала работали в полную силу. Половину юзеров пустить через WAN1FailsToWAN2, а другую - через WAN2FailsToWAN1. Проблема тут в том, что после squid'а никаких юзеров уже нету, а запрос в инет летит от имени localhost (tcp_outgoing_address 127.0.0.1). Кто из юзеров попросил squid залезть на этот сайт не ясно от слова "совсем".
Решение придумал такое:
Сделал в /var/squid/acl два файла: w1w2.acl и w2w1.acl. В первый запихал все нечетные адреса локалки, во второй - все четные.
В Services -> Proxy server -> General -> Custom Options в самое начало вместо tcp_outgoing_address 127.0.0.1 вставил такое:
acl w1w2 src "/var/squid/acl/w1w2.acl";
acl w2w1 src "/var/squid/acl/w2w1.acl";
tcp_outgoing_address 127.0.0.1 w1w2;
tcp_outgoing_address 127.0.0.2 w2w1;
(переносы строк только не нужны)
т.е. половина локалки из squid'а вылетает с адресом источника 127.0.0.1, вторая - с 127.0.0.2
ах да, 127.0.0.2 нету, надо сначала завести:
ifconfig lo1 create 127.0.0.2
И вот (смотрим рисунок во втором посте топика) что-то делать с летящими из squid'а пакетами мы можем только в блоке nat и блоке filter. Причем, - опять беда - в nat никак не воткнешь policy routing, а filter, который policy routing умеет, после ната уже не видит ни 127.0.0.1 ни 127.0.0.2, а видит только WAN1 IP в адресе источника пакета. Т.е. надо добиться, чтобы после блока nat пакеты от 127.0.0.1 и 127.0.0.2 были еще хоть как-то различимы. Ну я не нашел ничего лучшего чем различать их по диапазону портов источника.
В Firewall -> NAT -> Outgoing у нас было:
WAN1 127.0.0.0/8 * * * * 1024:65535
WAN2 127.0.0.0/8 * * * * 1024:65535
а стало:
WAN1 127.0.0.1/32 * * * * 1024:33279
WAN1 127.0.0.2/32 * * * * 33280:65535
WAN2 127.0.0.0/8 * * * * 1024:65535
Половине локалки натом порт источника выбирается из диапазона 1024:33279, второй - из диапазона 33280:65535. Это по честному, по пионерски.
Теперь в блоке filter мы можем их различить и отправить по разным каналам. Идем в Firewall -> Rules -> Floating, где у нас уже есть правило:
TCP WAN1 address * * 80 (HTTP) WAN1FailsToWAN2 none
открываем его для редактирования и в Source port range делаем from:1024, to:33279, сохраняем и принимаем изменения
кнопочкой "+" дублируем правило и ставим в Source port range from:33280, to:65535, а в Advanced features -> Gateway выбираем WAN2FailsToWAN1, сохраняем и снова принимаем .5 Grolsch Premium Lager