LINUX.ORG.RU
ФорумAdmin

squid просзрачный прокси на 1 сетевом интерфейсе.


0

1

Есть сервак со squid, на нем только 1 сетевой интерфейс, реально ли сделать прозрачный прокси на 1 сетевом интерфейсе. Как не прозразрачный уже давно и хорошо работает, но вот уже достало везде прописывать настройка прокси...


Делайте, в чём проблема ? Только этот ПК должен быть шлюзом для машин, которые будут использовать его как прозрачный прокси.

Либо на шлюзе напишите правило, перенаправляющее запросы с 80 порта на ip адрес ПК с прозрачным прокси.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Этот компьютер и есть прокси для остальных. В том то и проблема что не могу понять как правильно правило в iptables прописать... Пробовал так : iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --t o 192.168.0.251:3128 Ругается... Подскажите как правильно прописать правило в iptables.

iliaxxx
() автор топика
Ответ на: комментарий от kostik87

Топология такая. стоит DFL как шлюз выхода в инет ip 192.168.0.254. Есть сервак на котором поднят squid ip 192.168.0.251. У пользователей по DHCP раздается как шлюз 192.168.0.251. У сервера со squid шлюз 192.168.0.254. Сейчас во всех программах приходится прописывать прокси сервер в ручную. Хочется автоматизировать данный аспект работы сети.

iliaxxx
() автор топика
Ответ на: комментарий от iliaxxx

Этот компьютер и есть прокси для остальных.

Шлюз - это компьютер, чей ip указан как маршрут по умолчанию.

iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT –to-destination 192.168.0.251:3128

Не забудьте в конфиге squid`а указать, что он транспарент.

kostik87 ★★★★★
()
Ответ на: комментарий от iliaxxx
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to-destination 192.168.0.251:3128
kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

На счет того что бы указать что у меня squid теперь транспарент. У меня в конфиге стоит:

# Squid normally listens to port 3128
http_port 3128
http_port 3128 transparent
acl office src 192.168.0.0/24
Чего то не хотит при таком раскладе аутентифицировать пользователей без ручной настройки прокси...

iliaxxx
() автор топика
Ответ на: комментарий от iliaxxx

Прозрачный прокси не поддерживает аутентификацию, т.е. доступ к прокси по имени и паролю .

Кроме того 443 порт для работы https вам всё равно придётся пускать напрямую через шлюз.

Почитайте уже документацию.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

https можно транспарентить. вы видимо сами давно не читали документацию. squid должен быть собран с --enable-ssl

https_port 3128 transparent key=/etc/squid/key.pm cert=/etc/squid/certificate.pm а про аутентификацию да, придется забыть

Badman
()
Последнее исправление: Badman (всего исправлений: 1)
Ответ на: комментарий от iliaxxx

Сейчас во всех программах приходится прописывать прокси сервер в ручную. Хочется автоматизировать данный аспект работы сети.

Так это ж совсем другая задача!

Для этого Вам нужен WPAD - Web Proxy Auto Discovery. Это жабаскрипт, выполняющийся на клиенте для определения настроек прокси-сервера. Скрипт берётся клиентом

  • либо по http с сервера с именем wpad (должен резолвится с дефолтным доменом), т.е. с URL http://wpad/wpad.dat. Данный вариант не работает в последних виндах из соображений безопасности, винда просто не ресолвит имя wpad.
  • либо с URL, указанного в DHCP-опции 252.

Вот пример скрипта:

function FindProxyForURL( url, host ) {
  // If URL has no dots in host name, send traffic direct.
  if ( isPlainHostName(host) )
    return «DIRECT»;

  // If URL has local domain, send tarffic direct
  if (dnsDomainIs(host, «my.local.domain»))
    return «DIRECT»;

  // If IP address is internal or hostname resolves to internal IP, send direct.
  var resolved_ip = dnsResolve(host);
  if (
       isInNet( resolved_ip, «10.0.0.0»,    «255.0.0.0» )
    || isInNet( resolved_ip, «172.16.0.0»,  «255.240.0.0» )
    || isInNet( resolved_ip, «192.168.0.0», «255.255.0.0» )
    || isInNet( resolved_ip, «127.0.0.0»,   «255.255.255.0» )
  )
    return «DIRECT»;

  // All other traffic uses below proxy
  return «PROXY 1.2.3.4:3128»;
}

В общем, гугль Вам поможет с WPAD

P.S. Кавычки, конечно же должны быть обычные двойные, а не типографские, как форматирует LOR.

MumiyTroll ★★★
()
Ответ на: комментарий от MumiyTroll

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

Badman
()
Ответ на: комментарий от Badman

да, или определять прокси групповыми политиками

Это работает только в IE и ПО, которое использует IE. Соответсвенно, не поддерживаются «альтенативные» ОС и браузеры. Вообще не вариант. В то время как WPAD работает даже на смартах.

но оба эти варианта иногда не поддерживаются программами

Равно как и с прозрачным прокси можно наступить на грабли. Попадались банк-клиенты... Для этих годится либо ручная настройка, либо вообще исключение в файровлле, чтобы они ходили через NAT.

А Вы, я смотрю, сторонник прозрачных проксей, в т.ч. и для SSL... Как будете объясняться с пользователями, которых (по-умолчанию) приличный браузер не пустит в интернет-банк? А если вдруг у кого-нибудь из пользователей, которые рискнут проигнорировать предупреждение браузера по Вашей рекомендации, со счёта пропадут деньги и вовсе не по Вашей вине, докажете, что это не Вы пароль от банка увели?

Ну и про аутентификацию здесь уже упоминали.

MumiyTroll ★★★
()
Ответ на: комментарий от MumiyTroll

P.S. Кавычки, конечно же должны быть обычные двойные, а не типографские, как форматирует LOR.

научитесь пользоваться тегом [code]

maloi ★★★★★
()
Ответ на: комментарий от maloi

научитесь пользоваться тегом [code]

Вот после таких советчиков и пропадает желание помогать людям... :-(

MumiyTroll ★★★
()
Ответ на: комментарий от MumiyTroll

я не сторонник прозрачного прокси, но несколько раз приходилось настраивать. а сертификаты можно динамически генерировать. опция --enable-ssl-crtd

Badman
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.