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

Modesto modesto em isimples.com.br
Terça Abril 20 09:03:45 BRT 2010


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
> 



Mais detalhes sobre a lista de discussão freebsd