Возможно вы искали: 'Про кота и краску'

May 15 2025 19:12:28
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » How To Make a Transparent WWW Proxy (c) http://www.lexa.ru (proxy cisco squid redirect acl nat)

How To Make a Transparent WWW Proxy (c) http://www.lexa.ru (proxy cisco squid redirect acl nat)

Ключевые слова: proxy, cisco, squid, redirect, acl, nat, (найти похожие документы)

From : Alex Tutubalin <lexa@home.lexa.ru>
Subj : How To Make a Transparent WWW Proxy (c) http://www.lexa.ru
-------------------------------------------------------------------------------

(c) http://www.lexa.ru

<h4 align=center>How To Make a Transparent WWW Proxy</h4>


Введение в проблему<p>
В некоторый момент я обнаружил, что большую часть входящего траффика в
моей сети составляет WWW. При этом клиенты не пользовались Proxy,
хотя это заметно ускорило бы их работу (hit ratio составляет у нас
почти 50%), а пройтись по всем клиентам и поправить настройки их
броузеров я не имел возможности (да и желания тоже). Думаю,
подобные проблемы часто возникают и у ISP, когда поправить настройки
клиентов просто нельзя.
<p>
Почитав Squid'овский
<a href="http://squid.nlanr.net/Squid/FAQ/FAQ.html">FAQ</a>, я
нашел там описание того, как заставить
клиентов насильно использовать Proxy, проблема заключалась только
в том, что предложенный способ не работал.
С другой стороны, я знал, что в
<a href="http://www.radio-msu.net">RadioMSU</a> таки заставили
работать всех своих клиентов через Proxy.

После консультации с Ярославом Тихим все стало на свои места
и окончательное решение было сделано за пару часов.
<p>
Как это у меня работает<p>
Действующие лица и исполнители:
<ul>
<li>Роутер Cisco 2511 производства
<a href="http://www.cisco.com">Cisco Systems</a>. К нему
подключены все клиенты (локальная сеть на
Ethernet и клиенты по Dialup), внешний канал на Demos тоже
включен туда же. Для простоты представим, что LAN имеет
адреса/маску 192.168.1/24, а dialup-клиенты - 192.168.2/24.
<li>Машина на которой установлен кэширующий proxy - Pentium-200,
64M RAM, 8Gb дисков. Работает под управлением
<a href="http://www.freebsd.org">FreeBSD 2.2.5</a>. На машине
установлен
<a href="http://coombs.anu.edu.au/ipfilter/">IPFilter 3.2.3</a>
и <a href="http://www.nlanr.net/Squid">Squid 1.NOVM.20</a>.
Для простоты изложения, представим, что адрес этой машины -
192.168.1.1
</ul>
<p>
Настройки
<dl>
<dt>На Cisco</dt>
<dd>Нужно завернуть все транзитные пакетики с destination eq 80
на Proxy. Это делается примерно так:
<pre>
! Prevent loops
access-list 101 deny tcp host 192.168.1.1 any eq 80
! All other clients:
access-list 101 permit tcp 192.168.1.0 0.0.0.255 any eq 80
access-list 101 permit tcp 192.168.2.0 0.0.0.255 any eq 80
! Route-map
route-map forced-proxy permit 10
match ip address 101
set ip next-hop 192.168.1.1
!
! Интерфейсы:
! LAN
interface Ethernet 0
ip policy route-map forced-proxy
!
! Dialup
interface Group-Async 1
group-range 1 16
ip policy route-map forced-proxy
</pre>
</dd>
<dt>На машине с proxy</dt>
<dd>
Первым делом нужно завернуть приходящие на 80-й порт пакеты
на proxy. Предполагая, что proxy работает на порту 3128,
это делается как-то так:
<pre>
ipnat -f - &lt;&lt;EOM
rdr ed0 192.168.1.1/32 port 80 -&gt; 192.168.1.1 port 80
rdr ed0 0.0.0.0/0 port 80 -&gt; 192.168.1.1 port 3128
EOM
</pre>
Первое правило позволяет работать локальному WWW-серверу -
он будет продолжать получать свои пакетики. Вторая строчка
перенаправит все остальные пакеты с destination port 80
на локальный Squid.
<p>
В squid.conf пишутся строчки вида
<pre>
httpd_accel www.your.domain 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
</pre>
В <a href="http://squid.nlanr.net/Squid/FAQ/FAQ.html">FAQ</a>
рекомендовано вместо имени сервера в строчке httpd_accel
писать слово virtual. Это - неверно, во всяком случае
для Squid-1.NOVM.18..20. Проблема в том, что в этом режиме
Squid определяет destination server по вызову getsockname(2),
однако этим вызовом он может получить только один из своих
адресов, а это явно не подходит к условиям задачи.
</dl>
Получившаяся конструкция работает по такой вот схеме (я рисовал эту
картинку минут 10 и хотя она тут почти не нужна, не пропадать же
добру):

<!-- img src="proxy.gif" width=640 height=292 align=center alt="Data Flow" -->
<p>
Улучшения<p>

При такой настройке, адрес реального сервера к которому
обращается пользователь будет браться из заголовка Host:
HTTP-запроса. Для подавляющего большинства клиентов этого
достаточно - все сколько-нибудь распространенные броузеры этот
заголовок ставят. Однако хочется большего.<p>
В-принципе, можно было бы написать отдельную маленькую программу
(вместо proxy), которая спрашивала бы у IPFilter реальный
destination-address пакета, формировала бы заголовок Host:
и отдавала бы все это кэширующему proxy. Однако такой подход
имеет свои недостатки - в логах Squid будут только локальные
адреса и сопоставить, скажем, Hit Ratio с конкретным клиентом
будет непросто. Я пошел по другому пути и встроил необходимую
функциональность прямо в Squid. Патч для версии
1.NOVM.20 вы можете взять прямо отсюда (
<a href="squid-1.NOVM.20.ipfilter.diff">для версии 1.NOVM.20</a>,
<a href="squid-1.NOVM.22.ipfilter.diff">для версии 1.NOVM.22</a>).
(Необходимые замечания: Патч предполагает,
что *.h-файлы от ipfilter лежат у вас в /sys/netinet, а все
прочие добавленные includes необходимы на FreeBSD 2.2.x, а про
прочие системы я не в курсе).
<p>
После установки этого патча, Squid начнет понимать директиву
httpd_accel_uses_ipfilter_redirect в конфигурационном файле.
Использовать ее нужно так:
<pre>
httpd_accel_uses_ipfilter_redirect on
</pre>
И еще одно замечание - для пользователя с правами которого работает
squid файл /dev/ipnat должен быть доступен на чтение.
<p>
В squid 2.x эта функциональность
присутствует, если запускать <code>configure --enable-ipf-transparent</code>,
при этом никаких дополнительных директив не нужно, это включено по умолчанию.

<p>
После всех этих изменений все работает и без заголовка Host.
Правда требование, чтобы клиент был HTTP-1.x (а не HTTP/0.9)
остается, но уж HTTP/0.9 клиентов я вообще очень давно не встречал.
<p>
Возможные проблемы<p>
Возможные проблемы связаны с ICMP-сообщениями 'packet too big'.
Дело тут вот в чем. Допустим, между HTTP-Proxy и клиентом есть
линк с маленьким MTU, при этом и клиент и proxy живут на media
с большим MTU. Представим, что proxy начинает отвечать клиенту
с каким-то размером пакета, который не пролезет через этот тонкий
линк. Ipnat подменит source-address у этого пакета на IP-address
сервера к которому обращался клиент. Если на пути встретится
слишком маленький MTU, то ICMP-сообщение об этом уедет на какой-
нибудь www.microsoft.com, которому он совершенно ни к чему.<p>
Идея лечения понятна - завернуть на той же Cisco все ICMP-пакеты
на хост с WWW-proxy, там их проверять на предмет соответствия
с какой-то строчкой из таблицы трансляции Ipnat, все которые
"неправильные" отдавать прямо местному TCP-стеку, все прочие -
отсылать дальше (можно при этом подменять у них source address
на какой-то левый). Это теория. До практики у меня руки пока не
дошли за полной ненадобностью - у меня все клиенты имеют MTU 1500.
1237 Прочтений •  [How To Make a Transparent WWW Proxy (c) http://www.lexa.ru (proxy cisco squid redirect acl nat)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• How To Make a Transparent WWW Proxy... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка