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