LINUX.ORG.RU
ФорумAdmin

Centos, squid не работает в прозрачном режиме

 ,


0

1

Здравствуйте. Есть локальная сеть 10.0.0.0/24 и подключение к интернету.
Выделили компьютер для работы в качестве прокси сервера.
Установили на него CentOS + Squid.
Если указывать на клиентских компьютерах(в локальной сети) в браузерах настройки прокси соединения (его IP адрес 10.0.0.15 и порт 80), то интернет есть. Поскольку в сети около 100 компьютеров + wifi - возникло желание перейти на прозрачный прокси сервер, но настроить его почему-то не получается.

Опишу прокси сервер:
selinux - отключен;
iptables - отключен;
eth0 - интернет соединение.
eth1 - локальная сеть (10.0.0.15). squid устанавливался командой yum install squid (это я к тому, что может его нужно было устанавливать со специальными флагами, поддерживающие режим transparent)

/etc/squid/squid.conf

acl localnet src 10.0.0.0/24

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access allow localnet

http_port 80 transparent

visible_hostname proxy

coredump_dir /var/spool/squid

# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

DHCPD сервером является другой компьтер /etc/dhcp/dhcpd.conf

subnet 10.0.0.0 netmask 255.255.255.0 {
    option subnet-mask  255.255.255.0;
    option routers 10.0.0.15;
    pool {
      range 10.0.0.50 10.0.0.100;
    }
}

Как думаете, почему не работает прозрачный режим?

Ответ на: комментарий от andrew667

Не понял значение фразы «В квотезы.»

«А в чем сия неисправность?», - Неисправность могла быть в командах iptables

-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.0.15:3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
А так я уверен на 100%, что iptables здесь нипричём!
Есть какие-нибудь предположения?
Быть может bind(DNS) нужен для прозрачного проксирования?

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

Для прозрачного проксирования нужно правило iptables, которое несложно найти в примерах на официальном сайте.

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

CentOS 6.5 minimal i386
после установки обновил, установил mc и squid

squid -v
Squid Cache: Version 3.1.10
configure options:  '--build=i386-redhat-linux-gnu' '--host=i386-redhat-linux-gnu' '--target=i686-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--enable-internal-dns' '--disable-strict-error-checking' '--exec_prefix=/usr' '--libexecdir=/usr/lib/squid' '--localstatedir=/var' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--with-logdir=$(localstatedir)/log/squid' '--with-pidfile=$(localstatedir)/run/squid.pid' '--disable-dependency-tracking' '--enable-arp-acl' '--enable-follow-x-forwarded-for' '--enable-auth=basic,digest,ntlm,negotiate' '--enable-basic-auth-helpers=LDAP,MSNT,NCSA,PAM,SMB,YP,getpwnam,multi-domain-NTLM,SASL,DB,POP3,squid_radius_auth' '--enable-ntlm-auth-helpers=smb_lm,no_check,fakeauth' '--enable-digest-auth-helpers=password,ldap,eDirectory' '--enable-negotiate-auth-helpers=squid_kerb_auth' '--enable-external-acl-helpers=ip_user,ldap_group,session,unix_group,wbinfo_group' '--enable-cache-digests' '--enable-cachemgr-hostname=localhost' '--enable-delay-pools' '--enable-epoll' '--enable-icap-client' '--enable-ident-lookups' '--with-large-files' '--enable-linux-netfilter' '--enable-referer-log' '--enable-removal-policies=heap,lru' '--enable-snmp' '--enable-ssl' '--enable-storeio=aufs,diskd,ufs' '--enable-useragent-log' '--enable-wccpv2' '--enable-esi' '--with-aio' '--with-default-user=squid' '--with-filedescriptors=16384' '--with-dl' '--with-openssl' '--with-pthreads' 'build_alias=i386-redhat-linux-gnu' 'host_alias=i386-redhat-linux-gnu' 'target_alias=i686-redhat-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -fpie' 'LDFLAGS=-pie' 'CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -fpie' --with-squid=/builddir/build/BUILD/squid-3.1.10
zhigarartem ()
Ответ на: комментарий от zhigarartem

-i eth1 тогда. Т.е. запрос, прущий от клиента к веб-серверу прилетает на eth1 шлюза (ты ж не забыл сделать его шлюзом?), его и надо заворачивать.

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

Не понял значение фразы «В квотезы.»

http://www.lorquotes.ru/view.php Не уметь добавить одну строчку

 -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
в iptables, и говорить, что в iptables есть неисправности - это мощно. Да еще менять настройки squid для этого.

Есть какие-нибудь предположения?

Ты эникей, который не умеет настроить сетку. Разберись с настройками сети на компах. IP-адресация и адрес шлюза. Смотри как ходит трафик, и заворачивается ли он на твой сервер, аль проходит мимо.

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

Сдалал так: /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Sun Sep  7 18:49:37 2014
*nat
:PREROUTING ACCEPT [23:2229]
:POSTROUTING ACCEPT [2:236]
:OUTPUT ACCEPT [2:236]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
COMMIT
# Completed on Sun Sep  7 18:49:37 2014
# Generated by iptables-save v1.4.7 on Sun Sep  7 18:49:37 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [437:87534]
-A INPUT -p tcp -m tcp --dport 3128 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Sun Sep  7 18:49:37 2014

/etc/squid/squid.conf

# Generated by iptables-save v1.4.7 on Sun Sep  7 18:49:37 2014
*nat
:PREROUTING ACCEPT [23:2229]
:POSTROUTING ACCEPT [2:236]
:OUTPUT ACCEPT [2:236]
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
COMMIT
# Completed on Sun Sep  7 18:49:37 2014
# Generated by iptables-save v1.4.7 on Sun Sep  7 18:49:37 2014
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [437:87534]
-A INPUT -p tcp -m tcp --dport 3128 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Sun Sep  7 18:49:37 2014
[root@assassin ~]# cat /etc/squid/squid.conf
acl localnet src 10.0.0.0/24

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access allow localnet

http_port 3128 transparent

visible_hostname proxy

coredump_dir /var/spool/squid

# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

На клиентских тачках инета нет(

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

Squid Cache: Version 3.1.10

А теперь перечитай сообщение на которое ты ответил ещё раз

В третьем http_port 80 transparent будет некорректой строкой конфигурации

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

для ленящихся открыть документацию намекаю:

в squid версий 3.x для директивы конфигурации «http_port» режим «transparent» не определён.

Для получения перечня доступных режимов читайте документацию.

anonymous ()

Стесняюсь спросить, а какой смысл в прозрачном proxy только на 80 порту? Сейчас же куча всего на 443...

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

Вы хотя бы подсказали какие команды искать в документации.

Вот пример документации ...В статье я буду рассматривать версию squid3...
И самое прикольное - что он применяет в конце «http_port ip:port transparent»

Вот ещё одну нашёл http://www.bog.pp.ru/work/squid.html
В разделе «Squid как transparent proxy (только http)»
есть команды: http_port 3128 # redirect д.б. на этот порт
httpd_accel_host virtual # имитирует акселератор http-сервера, но не совсе нормально
httpd_accel_port 80 # а если перенаправляли не только 80 порт?
httpd_accel_with_proxy on # иначе при работе в режиме акселератора отключается кеширование
httpd_accel_uses_host_header on # иначе виртуальные домены будут неправильно кешироваться (см. замечание про безопасность)
На которые при запуске мой squid ругается и отказывается стартовать.

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

Да, dhcpd сервер раздаёт ip адреса в сеть и указывает шлюзом ip адрес прокси сервера(10.0.0.15)
Об этом я писал в самом первом сообщении:(

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

Стесняюсь спросить, а какой смысл в прозрачном proxy только на 80 порту? Сейчас же куча всего на 443...

Вопрос правильный, но задавать его нужно позднее, уже после того как будет настроен прозрачный режим для 80 порта.

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

попробуй в squid.conf такое прописать:

http_port 3128 intercept
http_port 3129

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

Смысла нет, на отдельный порт городить отдельный прокси. mitm - можно конечно, но тогда надо установить ROOT CA, а как его установить ВСЕМ? Это нужен или домен, а если домен, тогда и нет смысла в прозрачном прокси.

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

Хозяин-барин конечно... Но я не понимаю, почему сей вопрос должен задаваться после, а не до... Сделать, а потом всё переделать? :)

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

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

документация http://www.squid-cache.org/Doc/config/http_port/

или /usr/share/doc/squid-3.1.10/squid.conf.documented

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

молодой человек, к squid это не имеет ровно никакого отношения

прокси-сервер работает независимо от того, есть ли нат, более того прокси устанавливают именно тогда, когда не хотят натить весь подряд траффик клиентов

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

На клиентских тачках инета нет(

А на сквид запросы приходят? Что в логах?

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

перейти на прозрачный прокси сервер

прозрачный не умеет https

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