Господа, в недавнем прошлом(месяц назад) перевел тариф с лимитки на безлимит. Как водится обещали приемлемую скорость, в итоге вышло "возвращение в 90е". Долго ругался с провайдером, в итоге дали второй IP и лимит 3Гб с уверенной скоростью.
Теперь стоит вопрос реализации.
Стоит Linux RH 9.0, eth0 - смотрит наружу, eth1 - LAN.
Стоит FireStarter(могу ходить в инет без прокси)
В идеале хочется, чтобы пользователи ходили по страничкам через лимит, а грузили файлы через анлим.
Внешние ip - 83.217.х.х и 83.234.х.х
eth0 -83.234.х.х
Завел alias eth0:0 - 83.217.х.хРешил проверить на Squid'e
Squid позволяет с помощью ACL создать правило(tcp_outgiong_address) для отправки через нужный канал.
сначала установил ip одного клиента, чисто для проверки
acl S_HOST src 192.168.1.5
tcp_outgoing_address 83.217.х.х S_HOST
запускаю браузер - не рабоатет.
Настраиваю ходить без прокси - идет через et0:0.
до старта aliasa gw 83.234.х.х после - менятеся на 83.217.х.х.
Кто нибудь бился с подобным?
iproute2 осваивать
если не получиться, и у меня будет время - подскажу
ключевые слова: /etc/iproute2/rt_tables и в iproute2: table, from, via
>iproute2 осваивать
>если не получиться, и у меня будет время - подскажу
>ключевые слова: /etc/iproute2/rt_tables и в iproute2: table, from, viaпрочел статью
http://www.opennet.me/base/net/iproute2_cebka.txt.html
Познавательная статья
На примере показано каким образом можно клиентские ip раскидать на разные ip провайдеров.
Алгоритм я вижу так
1) настраиваю alias
2) устанавливаю в squid'е ACL
по IP клиента
acl FAST_HOST src 192.168.1.5
...
acl SLOW_HOST src 192.168.1.100
по расширениям
acl SLOW_DOWN urlpath_regex -i \.exe$
....
acl SLOW_DOWN urlpath_regex -i \.rar$
по размеру заачки(правда на сколько я читал не все сервера поддерживают)
и потом подставляю IP-шники своих реальных IP которые смотрят в инет
tcp_outgiong_address 83.217.х.х FAST_HOST
tcp_outgiong_address 83.234.х.х SLOW_HOST
3) далее для пакетов должны быть применены соответсвующие GetWay, то бишь
FAST_HOST(начальство etc.) - GW 83.217.х.GW
SLOW_DOWN (файлы+простые смертные) - GW 83.234.х.GWЗатруднение у меня в пункте 3. Но возможно я что-то упустил.
всё правильно и статья хорошая
>всё правильно и статья хорошая
Статью изучил, вот только вопрос если честно возникает следкющий
Вроде как бы iproute надо пакетыполагаю, что разруливать должно быть что-то типа, по живому тестить пока не могу
#echo 200 inet_dsl1 >> /etc/iproute2/rt_tables
#echo 201 inet_dsl2 >> /etc/iproute2/rt_tables
#ip route add default via 83.217.x.GW dev eth0:0 table inet_dsl1
#ip route add via 83.234.x.GW dev eth0 table inet_dsl2Но вопрос - как мне подать через squid команду(отмаркировать пакет) чтобы он пошел при объявлении tcp_outgoing_address именно по тому GW?
>Но вопрос - как мне подать через squid команду(отмаркировать пакет) чтобы он
>пошел при объявлении tcp_outgoing_address именно по тому GW?это не сквид делает
сквид выставляет source
а роутингом рулит ядро :-) (iproute2 - это userspace-утилита)перечитай статью на предмет таких конструкций
# ip rule add from 192.168.1.20 table inet_adsl
>это не сквид делает
>сквид выставляет source
>а роутингом рулит ядро :-) (iproute2 - это userspace-утилита)
Прошу прощения за squid.>перечитай статью на предмет таких конструкций
># ip rule add from 192.168.1.20 table inet_adsl
В описанном случае идет пересылка пакетов от определенных IP в таблицу маршрутизации inet_dsl.
----
1)
создаем таблицу маршрутов для медленного DSL(slow_dsl)
# echo 200 slow_dsl > /etc/iproute2/rt_tables
говорим 192.168.1.6 ходить через таблицу маршрутов slow_dsl
# ip rule add from 192.168.1.6 table slow_dsl
устанавливаем маршрут по умолчанию для slow_dsl с eth0 ходить через шлюз 83.234.0.GW
# ip route add default via 83.234.0.GW dev eth0 table slow_dsl
сбрасываем кэш маршрутизации
# ip route flush cache
2)
создаем таблицу маршрутов для быстрого DSL(fast_dsl)
# echo 201 fast_dsl > /etc/iproute2/rt_tables
говорим 192.168.1.5 ходить через таблицу маршрутов fast_dsl
# ip rule add from 192.168.1.5 table fast_dsl
устанавливаем маршрут по умолчанию для fast_dsl с eth0:0 ходить через шлюз 83.217.0.GW
# ip route add default via 83.217.0.GW dev eth0:0 table fast_dsl
сбрасываем кэш маршрутизации
# ip route flush cache
----
а) Не понял, только в этом случае tcp_outgoing_address необходим или достаточно таблицы маршрутизации?
б) необходимо ли указывать ip моих внешних ip 83.234.x.MyIP_1, 83.217.x.MyIP_2
# ip route add default via 83.234.0.GW dev eth0 src 83.234.x.MyIP_1 table slow_dsl
# ip route add default via 83.234.0.GW dev eth0 src 83.217.x.MyIP_2 table fast_dsl
б) Как разделить закачку файлов и просмотр страниц(что является более приорететным для меня).
># ip rule add from 192.168.1.6 table slow_dsl
># ip rule add from 192.168.1.5 table fast_dsl
Внимательнее, это правила роутинга для пакетов, которые идут непосредственно с этих ай-пи мимо сквида.Нужно сделать такие правила для двух инет-ай-пи-адресов _сервера_.
>----
>а) Не понял, только в этом случае tcp_outgoing_address необходим или достаточно таблицы
>маршрутизации?
Необходимо и то, и другое. И это для серверных адресов, потому что в инет уже лезет сквид, а не клиент.>б) необходимо ли указывать ip моих внешних ip 83.234.x.MyIP_1, 83.217.x.MyIP_2
># ip route add default via 83.234.0.GW dev eth0 src 83.234.x.MyIP_1 table
>slow_dsl
># ip route add default via 83.234.0.GW dev eth0 src 83.217.x.MyIP_2 table
>fast_dslДа
>б) Как разделить закачку файлов и просмотр страниц(что является более приорететным для
>меня).Поищи здесь на опеннете, были обсуждения. С ходу это, увы, сделать невозможно, хотя бы потому, что вначале уставливается соединение (а какому каналу?), потом узнается размер объекта, а потом что? качать по другому каналу? а если авторизация, куки и т.д.
Я делал два порта: 3128 и 3129 (http_port). И потом ацл-ем myPort и tcp_outgoing_address разруливал по каналам.
>>это не сквид делает
>>сквид выставляет source
>>а роутингом рулит ядро :-) (iproute2 - это userspace-утилита)
>Прошу прощения за squid.
>
>>перечитай статью на предмет таких конструкций
>># ip rule add from 192.168.1.20 table inet_adsl
>В описанном случае идет пересылка пакетов от определенных IP в таблицу маршрутизации
>inet_dsl.
>----
>1)
>создаем таблицу маршрутов для медленного DSL(slow_dsl)
># echo 200 slow_dsl > /etc/iproute2/rt_tables
>говорим 192.168.1.6 ходить через таблицу маршрутов slow_dsl
># ip rule add from 192.168.1.6 table slow_dsl
>устанавливаем маршрут по умолчанию для slow_dsl с eth0 ходить через шлюз 83.234.0.GW
>
># ip route add default via 83.234.0.GW dev eth0 table slow_dsl
>сбрасываем кэш маршрутизации
># ip route flush cache
>2)
>создаем таблицу маршрутов для быстрого DSL(fast_dsl)
># echo 201 fast_dsl > /etc/iproute2/rt_tables
>говорим 192.168.1.5 ходить через таблицу маршрутов fast_dsl
># ip rule add from 192.168.1.5 table fast_dsl
>устанавливаем маршрут по умолчанию для fast_dsl с eth0:0 ходить через шлюз 83.217.0.GW
>
># ip route add default via 83.217.0.GW dev eth0:0 table fast_dsl
>сбрасываем кэш маршрутизации
># ip route flush cache
>----
>а) Не понял, только в этом случае tcp_outgoing_address необходим или достаточно таблицы
>маршрутизации?
>б) необходимо ли указывать ip моих внешних ip 83.234.x.MyIP_1, 83.217.x.MyIP_2
># ip route add default via 83.234.0.GW dev eth0 src 83.234.x.MyIP_1 table
>slow_dsl
># ip route add default via 83.234.0.GW dev eth0 src 83.217.x.MyIP_2 table
>fast_dsl
>б) Как разделить закачку файлов и просмотр страниц(что является более приорететным для
>меня).Что вы городите, можно сделать проще. Для этого варианта с двумя таблицами ему еще надо фаер задействовать (маркировку пакетов делать).
1. Сделай шлюзом по умолчанию канал через кот. хочеш что-бы народ качал.
2. Дальше заворачиваеш весь http трафик на проксю (делаеш прозрачный прокси).
3. Дальше по моей прежней ссылке заворачиваеш несь трафик через tcp_outgoing_address dstdomain . весь http трафик.
4. можеш еще настроить что-бы по http не качали подрезай трафик по 6-8 кб. вполне хватит странички смотреть.PS/ блин теоретики, если это делал и работает, советуйте, а почитав и советовать, сделай так, или иначе, зачем?????
>Господа, в недавнем прошлом(месяц назад) перевел тариф с лимитки на безлимит. Как
>водится обещали приемлемую скорость, в итоге вышло "возвращение в 90е". Долго
>ругался с провайдером, в итоге дали второй IP и лимит 3Гб
>с уверенной скоростью.
>Теперь стоит вопрос реализации.
>Стоит Linux RH 9.0, eth0 - смотрит наружу, eth1 - LAN.
>Стоит FireStarter(могу ходить в инет без прокси)
>В идеале хочется, чтобы пользователи ходили по страничкам через лимит, а грузили
>файлы через анлим.
>Внешние ip - 83.217.х.х и 83.234.х.х
>eth0 -83.234.х.х
>Завел alias eth0:0 - 83.217.х.х
>
>Решил проверить на Squid'e
>Squid позволяет с помощью ACL создать правило(tcp_outgiong_address) для отправки через нужный канал.
>
>сначала установил ip одного клиента, чисто для проверки
>acl S_HOST src 192.168.1.5
>tcp_outgoing_address 83.217.х.х S_HOST
>запускаю браузер - не рабоатет.
>Настраиваю ходить без прокси - идет через et0:0.
>до старта aliasa gw 83.234.х.х после - менятеся на 83.217.х.х.
>Кто нибудь бился с подобным?Можно и через Squid сделать, а можно и маркировкой пакетов,
Вот посмотри http://forum.sysadmins.ru/2/158278/?start=15&postdays=0&post...
или поищи тему "делить канал Squid" если непонятно стучи в аську помогу
У меня похожая проблема (только немного подругому)):
есть два канала в инет, надо сделать так чтоб часть клиентов ходила через один канал, другая часть через второй.Прописываю в squid.conf
acl ttt proxy_auth user_nametcp_outgoing_address ip_inet2 ttt
tcp_outgoing_address ip_inet1_(default)и в правилах ipfw (у меня Фря)
02240 489 29351 fwd gw2 ip from ip_inet2 to any
02250 0 0 fwd gw2 udp from ip_inet2 to any
02260 0 0 fwd gw2 icmp from ip_inet2 to anyвот клиент user_name вроде ходит через второй канал (судя по trafshow), а если отключить первую линию, то и у него инета тож нет
где я не прав?
>У меня похожая проблема (только немного подругому)):
>есть два канала в инет, надо сделать так чтоб часть клиентов ходила
>через один канал, другая часть через второй.
>
>Прописываю в squid.conf
>acl ttt proxy_auth user_name
>
>tcp_outgoing_address ip_inet2 ttt
>tcp_outgoing_address ip_inet1_(default)
>
>и в правилах ipfw (у меня Фря)
>02240 489 29351 fwd gw2 ip from ip_inet2 to any
>02250 0 0 fwd gw2 udp from ip_inet2 to any
>02260 0 0 fwd gw2 icmp from ip_inet2 to any
>
>вот клиент user_name вроде ходит через второй канал (судя по trafshow), а
>если отключить первую линию, то и у него инета тож нет
>
>
>где я не прав?http://forum.sysadmins.ru/2/158278/?start=30&postdays=0&post...
Этот-же вопрос, возможно ты и задавал :-))
>
>http://forum.sysadmins.ru/2/158278/?start=30&postdays=0&post...
>
>Этот-же вопрос, возможно ты и задавал :-))Нет - это не мое, я работаю на RH