The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Squid и два внешних IP(реализация разделения трафика), !*! edem337, 04-Апр-07, 12:38  [смотреть все]
Господа, в недавнем прошлом(месяц назад) перевел тариф с лимитки на безлимит. Как водится обещали приемлемую скорость, в итоге вышло "возвращение в 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 и два внешних IP(реализация разделения трафика), !*! Sloboda, 14:18 , 04-Апр-07 (1)
    iproute2 осваивать
    если не получиться, и у меня будет время - подскажу
    ключевые слова: /etc/iproute2/rt_tables и в iproute2: table, from, via

    • Squid и два внешних IP(реализация разделения трафика), !*! edem337, 14:57 , 04-Апр-07 (2)
      >iproute2 осваивать
      >если не получиться, и у меня будет время - подскажу
      >ключевые слова: /etc/iproute2/rt_tables и в iproute2: table, from, via

      прочел статью
      https://www.opennet.ru/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. Но возможно я что-то упустил.


      • Squid и два внешних IP(реализация разделения трафика), !*! Sloboda, 15:31 , 04-Апр-07 (3)
        всё правильно и статья хорошая
        • Squid и два внешних IP(реализация разделения трафика), !*! edem337, 16:31 , 04-Апр-07 (4)
          >всё правильно и статья хорошая
          Статью изучил, вот только вопрос если честно возникает следкющий
          Вроде как бы 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 и два внешних IP(реализация разделения трафика), !*! Sloboda, 17:10 , 04-Апр-07 (5)
            >Но вопрос - как мне подать через squid команду(отмаркировать пакет) чтобы он
            >пошел при объявлении tcp_outgoing_address именно по тому GW?

            это не сквид делает
            сквид выставляет source
            а роутингом рулит ядро :-) (iproute2 - это userspace-утилита)

            перечитай статью на предмет таких конструкций
            # ip rule add from 192.168.1.20 table inet_adsl

            • Squid и два внешних IP(реализация разделения трафика), !*! edem337, 14:15 , 05-Апр-07 (7)
              >это не сквид делает
              >сквид выставляет 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
              б) Как разделить закачку файлов и просмотр страниц(что является более приорететным для меня).

              • Squid и два внешних IP(реализация разделения трафика), !*! Sloboda, 15:18 , 05-Апр-07 (8)
                ># 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 разруливал по каналам.

              • Squid и два внешних IP(реализация разделения трафика), !*! kvs, 15:42 , 05-Апр-07 (9)
                >>это не сквид делает
                >>сквид выставляет 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/ блин теоретики, если это делал и работает, советуйте, а  почитав и советовать, сделай так, или иначе, зачем?????

  • Squid и два внешних IP(реализация разделения трафика), !*! kvs, 12:29 , 05-Апр-07 (6)
    >Господа, в недавнем прошлом(месяц назад) перевел тариф с лимитки на безлимит. Как
    >водится обещали приемлемую скорость, в итоге вышло "возвращение в 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"   если непонятно стучи в  аську  помогу




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру