Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Squid и 2 канала в интернет  (Прочитано 2859 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн aav1969

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Squid и 2 канала в интернет
« : 25 Февраля 2009, 10:06:15 »
Привет всем.
Прошу прощения, если вызвал и кого то раздражение, так как тема не новая, НО!, облазил просторы интернет и не нашел действительно рабочей конфигурации, поэтому с предложениями "я это не делал, но должно работать" просьба не беспокоиться.

Теперь суть задачи:
сервер на базе Ubuntu Server 8.04, 3 сетевые карты (2 - интернет, 1 - локальная сеть), необходимо чтобы клиенты с определенных IP адресов ходили по своиму каналу в интернет ЧЕРЕЗ Squid.

Теперь, что уже решено: без Squid - все работает (через iproute2, все очень легко и прекрасно разводиться, информации об этом много).

Суть проблемы: Squid работает только(?) с основной таблицей маршрутизации, в которой, естественно, указан только один шлюз по умолчанию. Поэтому даже если прописать параметр tcp_outgoing_address в конфиге squid, и он не совпадет с адресом сетевой карты, где шлюз по умолчанию - squid работать не будет. В интернете есть несколько статей, где описано как поднимали 2 squid на разные интерфейсы, но как они использовали два шлюза в одной(?) таблице маршрутизации (или делали это как-то по другому) ни слова не сказано. Все что написано в этих статьях, в моем случаи не работает! Squid подымается только на сетевой карте со шлюзом по умолчанию!

Где-то на форуме, вскользь, было сказано, что данную проблему можно решить путем маркировки пакетов от отдельных клиентов и потом в iproute заворачивать их на другую таблицу маршрутизации (из основной), но как это делать на практике, я не представляю.

Прошу откликнуться, тех кто решил эту проблему на практике, я думаю эта информация будет полезна не только мне...


Оффлайн 2Casp

  • Новичок
  • *
  • Сообщений: 46
  • GNU/Linux
    • Просмотр профиля
Re: Squid и 2 канала в интернет
« Ответ #1 : 25 Февраля 2009, 10:51:55 »
Привет.
Решал недавно такую проблему, до сих пор в голове все крутится, но как добить не пойму :(
Цитировать
Где-то на форуме, вскользь, было сказано, что данную проблему можно решить путем маркировки пакетов от отдельных клиентов и потом в iproute заворачивать их на другую таблицу маршрутизации (из основной), но как это делать на практике, я не представляю.
У тебя прозрачно настроен squid или нет? Если да, как было у меня, проблема была уже в iptables`е, при маркировке пакетов. А суть была следующая:
Пакет маркируются нормально, iproute2 потом может их раскидать по разным маршрутам, НО все http запросы все равно проходят на один маршрут, который по умолчанию, т.к. после маркировки, iptables их заворачивает на squid. Думаю как теперь побороть
Цена тебе - твое слово.

Оффлайн aav1969

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Squid и 2 канала в интернет
« Ответ #2 : 25 Февраля 2009, 11:21:12 »
У меня squid прозрачный. Но пробовал и в обычном режиме - результат тот-же.

Интересен вот какой вопрос: как squd "подсоединяется к потоку данных": со входом все понятно, а выход? Из моих наблюдений, он игнорирует NAT в iptables (у него, наверное, свой NAT), следовательно за POSTROUTING...(???)

Оффлайн aav1969

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Squid и 2 канала в интернет
« Ответ #3 : 26 Февраля 2009, 09:37:16 »
Решено!
Прежде всего, хочу благодарить моего Господа и Спасителя Иисуса Христа за способность разобраться в этом вопросе!

Опишу только суть решения, я думаю, это универсальный путь для решения этого вопроса, не зависимо от дистрибутива ОС.

Все связано с недопониманием работы squid и iproute.

Вначале про squid: он подчиняется общим правилам прохождения пакетов, следовательно, то предположение которое я высказал в 3 посте неверно (что касается выхода пакетов) - пакеты проходят стандартные цепочки (таблицы). Но squid имеет внутренний NAT, и пакеты, которые выходят с него уже прошли "маскарад" - имеют тот же IP адрес, что и сетевая карта со шлюзом по умолчанию, если не указан параметр tcp_outgoing_address, а если указан, то с адресом указанном в этом параметре! И поэтому "маскарад" (NAT) системы ему просто не нужен.

Про iproute: Пакете поступающие для принятия решения о маршрутизации, проходят таблицы маршрутизации для поиска соответствующего условия, в нашем случаи IP адреса источника. Но в наших созданных таблица, для распределения клиентов по внешним интерфейсам только IP клиентов(!) - из локальной сети. Соответственно пакеты от squd "проваливаются" сквозь наши таблицы до основной таблицы маршрутизации - с чем мы и столкнулись!

Наверное вы уже догадались....
Решение, как всегда, очень простое: добавляем в наши таблицы маршрутизации IP адреса - реальные адреса внешних карт, которые также прописаны в squid.conf: tcp_outgoing_address - соответственно: в первую таблицу для первого интерфейса, во вторую таблицу для второго интерфейса (также как добавляли клиентов).

Вот и все, как настроить squid и создоть свои таблицы маршрутизации информации много.

В принципе, если у вас 2 внешних интерфейса, то можно создать всего одну дополнительную таблицу для второго интерфейса, а первый будет работать с основной таблицей, кому как больше нравиться.

Удачи!

Оффлайн Nesmit

  • Старожил
  • *
  • Сообщений: 1296
    • Просмотр профиля
Re: Squid и 2 канала в интернет
« Ответ #4 : 09 Марта 2009, 15:00:39 »
Решено!
Прежде всего, хочу благодарить моего Господа и Спасителя Иисуса Христа за способность разобраться в этом вопросе!
Опишу только суть решения, я думаю, это универсальный путь для решения этого вопроса, не зависимо от дистрибутива ОС.
Все связано с недопониманием работы squid и iproute.

Чуть подробнее можно? В промежутке между Решено и Удачи, ничего не понятно. Все жутко образно.
Хотелось бы примеры маршрутизации на оба канала и изменения внесенные в squid.

Максимум что смог найти в сети, это:
1. http://ksimute.trancom.ru/squid-2-chans.shtml - Незаконченная статья. Если выполнять четко, то не заработает. Допиливать нужно, а главное понимание как работает. :) Один из минусов, непонятно как 3я  прокся проверяет живой канал или нет.
2. http://media.cwx.ru/index.php/faq/37-2008-09-04-11-38-23/594------squid---- - это более сложная схема, но все разжевано.

 

Страница сгенерирована за 0.017 секунд. Запросов: 20.