[FUG-BR] RES: Testando Lusca no FreeBSD 8.0-RELEASE-p2

Marcelo Gondim gondim em linuxinfo.com.br
Terça Abril 20 10:59:40 BRT 2010


Opa modesto,

Show vou tentar fazer isso aí. :D

Uma outra coisa estranha que está acontecendo é que o serviço do lusca tá
caindo de tempo em tempo e aí eu preciso ir lá e levantar ele. A mensagem
que fica no cache.log quando isso ocorre é essa aqui:


2010/04/19 15:38:41| Closing Pinger socket on FD 19
2010/04/19 15:38:41| Pinger socket opened on FD 19
2010/04/19 15:38:41| pingerOpen: ICMP socket opened
2010/04/19 15:38:58| pingerReadRequest: socket 0: read() failed; errno 61
2010/04/19 15:38:58| Pinger exiting.

Aí quando acontece isso tenho que ir lá e levantar o Lusca novamente. Isso
acontece quando coloco em produção no modo transparente mesmo, sem tentar
nada de tproxy. Ou seja fica funcionando direitinho, as pessoas navegando aí
do nada cai todo mundo e quando vou ver está assim no log. Tem alguma dica
modesto? Ah! Esqueci de dizer, sou novato em FreeBSD. Rsrsrsrs  

Grande abraço e obrigado pela ajuda de todos.
 

-----Mensagem original-----
De: freebsd-bounces em fug.com.br [mailto:freebsd-bounces em fug.com.br] Em nome
de Modesto
Enviada em: terça-feira, 20 de abril de 2010 09:04
Para: Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)
Assunto: Re: [FUG-BR] Testando Lusca no FreeBSD 8.0-RELEASE-p2

Voce tem que fazer uma modificação no codigo fonte do lusca, para ele
poder rodar com o usuario root.

No codigo fonte do lusca edite o arquivo src/main.c, comente essa parte
de if, para que ele não verifique se esta rodando como root.

if (geteuid() == 0) {
    debug(0, 0) ("Squid is not safe to run as root!  If you must\n");
    debug(0, 0) ("start Squid as root, then you must configure\n");
    debug(0, 0) ("it to run as a non-priveledged user with the\n");
    debug(0, 0) ("'cache_effective_user' option in the config file.\n");
    fatal("Don't run Squid as root, set 'cache_effective_user'!");
  }

Se voce estiver usando a ultima versão do lusca no ports, voce so
precisa fazer essa alteração citada acima, caso contrario, voce tambem
tem que fazer isso:

No arquivo libiapp/comm_ips_freebsd.c, substitua aonde tem IP_NONLOCALOK
para IP_BINDANY.

Depois no squid.conf

cache_effective_user root
cache_effective_group wheel

Pra mim funcionou assim, mas esse seu exemplo é seu ambiente de trabalho
ou voce esta fazendo testes? pois com essa classe invalida não tem
sentido usar T-PROXY.


On Mon, 2010-04-19 at 22:21 -0300, Marcelo Gondim wrote:
> Buenas lista,
> 
> Esses dias resolvi montar um ambiente aqui pra testes pois estou querendo
> implementar um Lusca/Squid com FreeBSD 8 usando o TProxy e assim o cliente
> sair com seu próprio IP pelo Proxy. Antes disso fiz funcionar um Lusca
> transparente em um FreeBSD 8 como bridge redirecionando os acessos pro
Proxy
> via PF porque com o ipfw não consegui mas não testei muito. :) perdi um
bom
> tempo porque estou mais acostumado com o Netfilter/IPTables. Esse ambiente
> de bridge o servidor de teste estava com 2 interfaces de rede. Lógico :)
> Nesse ambiente transparente o usuário não sabia da existência do Proxy e
> ainda pude fazer algumas regras de Firewall. Ficou show de bola! 
> 
> A conf que fiz como bridge, sendo 192.168.10.171 o IP do servidor Proxy
> Lusca Transparent:
> 
> /etc/rc.conf
> ============
> cloned_interfaces="bridge0"
> ifconfig_bridge0="inet 192.168.10.171 netmask 255.255.255.0 addm re0 addm
> em0 up"
> ifconfig_re0="up"
> ifconfig_em0="up"
> defaultrouter="192.168.10.254"
> hostname="proxy.localdomain.net"
> keymap="br275.iso.acc"
> sshd_enable="YES"
> squid_enable="YES"
> pf_enable="YES"
> pf_rules="/etc/pf.conf"
> 
> /etc/pf.conf
> ============
> rdr pass on bridge0 inet proto tcp from any to any port 80 ->
192.168.10.171
> port 3128
> 
> No kernel adicionei:
> ====================
> device pf
> device pflog
> device pfsync
> device if_bridge
> 
> Se for usar o squid31 do ports ainda precisei fazer isso. O lusca não
> precisei:
>
============================================================================
> ===
> chgrp squid /dev/pf
> chmod 660 /dev/pf
> 
> no squid.conf:
> ==============
> http_port 192.168.10.171:3128 transparent
> 
> Foi importante usar o IP ao invés de 127.0.0.1, porque não funcionou de
> outro jeito. :) 
> Aí da minha estação(192.168.10.177) saía um cabo que entrava numa
interface
> do proxy e do proxy outro cabo no meu router Mikrotik e o gateway da
estação
> era o 192.168.10.254.
> Essa solução ficou perfeita pra bridge transparent mas não consegui fazer
> com tproxy. Então mudei o ambiente de teste.
> 
> Nesse novo ambiente o servidor FreeBSD tinha apenas 1 interface de rede e
> nesse caso usei o ipfw fwd para direcionar as requisições para o Proxy,
sem
> a bridge. Minha configuração ficou assim:
> 
> /etc/rc.conf
> ============
> ifconfig_re0="inet 192.168.10.171 netmask 255.255.255.0 up"
> defaultrouter="192.168.10.254"
> hostname="proxy.localdomain.net"
> keymap="br275.iso.acc"
> sshd_enable="YES"
> squid_enable="YES"
> firewall_enable="YES"
> firewall_script="/etc/rc.ipfw"
> 
> /etc/rc.ipfw
> ============
> #!/bin/sh
> fw="/sbin/ipfw"
> rede_interna="192.168.10.0/24"
> ifi="re0"
> #
> $fw -f flush
> #
> # Liberando rede da Caixa Econômica Federal do Proxy
> $fw add fwd 192.168.10.254 all from $rede_interna to 200.201.160.0/20 80
in
> via $ifi
> #
> $fw add fwd 127.0.0.1,3128 tcp from $rede_interna to any 80 in via $ifi
>  
> /etc/sysctl.conf
> ================
> net.inet.ip.forwarding=1
> 
> No kernel usei essa conf:
> =========================
> options IPFIREWALL
> options IPFIREWALL_FORWARD
> options IPFIREWALL_VERBOSE
> options IPFIREWALL_VERBOSE_LIMIT=100
> options IPFIREWALL_DEFAULT_TO_ACCEPT
> options IPDIVERT
> options DUMMYNET
> options HZ=1000
> options LIBALIAS
> 
> squid.conf:
> ===========
> http_port 3128 transparent
> 
> Coloquei o gateway da minha estação sendo o 192.168.10.171 e funcionou
> perfeitamente o modo transparent do Proxy. Aí fiz o seguinte para tentar
> usar o tproxy:
> 
> No squid.conf mudei para:
> =========================
> http_port 3128 transparent tproxy
> 
> No mikrotik router 192.168.10.254 criei as seguintes regras:
> ============================================================
> add comment="Proxy" disabled=no distance=1 dst-address=0.0.0.0/0
> gateway=192.168.10.171 routing-mark=proxy scope=30 target-scope=10
> 
> add action=mark-routing chain=prerouting comment="Proxy IN" disabled=no
> src-port=80 in-interface=ether1 new-routing-mark=proxy passthrough=yes
> protocol=tcp dst-address=192.168.10.0/24
> 
> Obs.: ether1 é a interface de fora da Internet e a ether2 a interface da
> rede interna.
> 
> No rc.ipfw as regras ficaram assim no final do arquivo:
> =======================================================
> $fw add fwd 127.0.0.1,3128 tcp from $rede_interna to any 80  in via $ifi
> $fw add fwd 127.0.0.1,3128 tcp from any 80 to $rede_interna  in via $ifi
> 
> E mesmo assim o tproxy não funcionou. No cache.log acusava o seguinte
erro:
> 
> 2010/04/19 11:03:00| comm_fdopen6: FD 21: TPROXY comm_ips_bind_rem()
failed:
> errno 1 ((1) Operation not permitted)
> 2010/04/19 11:03:01| comm_fdopen6: FD 23: TPROXY comm_ips_bind_rem()
failed:
> errno 1 ((1) Operation not permitted)
> 2010/04/19 11:03:02| comm_fdopen6: FD 24: TPROXY comm_ips_bind_rem()
failed:
> errno 1 ((1) Operation not permitted)
> 2010/04/19 11:03:02| comm_fdopen6: FD 26: TPROXY comm_ips_bind_rem()
failed:
> errno 1 ((1) Operation not permitted)
> 2010/04/19 11:03:02| comm_fdopen6: FD 28: TPROXY comm_ips_bind_rem()
failed:
> errno 1 ((1) Operation not permitted)
> 2010/04/19 11:03:02| comm_fdopen6: FD 30: TPROXY comm_ips_bind_rem()
failed:
> errno 1 ((1) Operation not permitted)
> 
> E ao invés de abrir a página requisitada, exibia uma página de erro do
> Lusca.
> 
> Alguém já passou por isso e sabe como resolver? Tentei de tudo :D mas
ainda
> não descobri. Nem que seja alguma doc, howto, faq rsrsrsrs
> Qualquer coisa pra eu sair desse erro. Rsrsrs
> 
> Grande abraço a todos e desculpem o enorme texto explicativo do meu
> laboratório.
> 
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> 

-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd



Mais detalhes sobre a lista de discussão freebsd