[FUG-BR] ipfw + setfib + squid com tcp_outgoing_address
Wenderson Souza
wendersonsouza em gmail.com
Terça Maio 31 20:32:41 BRT 2011
Boa noite Galera,
Venho acompanhando a lista há algum tempo pelos "arquivos" e há pouco
tempo como assinante.
Migrei um servidor linux-centos-5.2 para FreeBSD 8.2 Release, nunca
tinha mexido com FreeBSD mas já tinha lido muito sobre o sistema.
De cara adorei o FreeBSD pela sua facilidade de compilação/instalação
do kernel (coisa que ainda é meio chata em linux) e gostei mais ainda
dos ports.
Consegui configurar os meus serviços mais necessários como: BIND, HTTP
(com vhosts), ftp, squid etc.
Com 1 fornecedor de internet apenas, consegui fazer o squid funcionar
normalmente.
Mas quando adiciono o outro fornecedor e tento utilizar o
tcp_outgoing_address do squid para definir por onde devem sair alguns
sites, não funciona.
Vamos a explicação.
Tenho uma RB-44GB (4 interfaces de rede identificadas como vge0, vge1,
vge2 e vge3)
Meu kernel está configurado assim:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options LIBALIAS
options IPDIVERT
options DUMMYNET
options HZ=1000
options ROUTETABLES=10
# ee /etc/rc.conf
# interfaces
#------------------------------------------------------------------
ifconfig_vge0="inet 189.x.x.2 netmask 255.255.255.240" # link1 - rota default
ifconfig_vge0_alias0="inet 189.x.x.5 netmask 255.255.255.240" # http
ifconfig_vge0_alias1="inet 189.x.x.8 netmask 255.255.255.240" # smtp
ifconfig_vge0_alias2="inet 189.x.x.10 netmask 255.255.255.240" # ns1
ifconfig_vge0_alias3="inet 189.x.x.11 netmask 255.255.255.240" # ns2
ifconfig_vge1="inet 201.x.x.130 netmask 255.255.255.248" # link2
ifconfig_vge2="inet 192.168.253.1 netmask 255.255.255.0" # link3 -
adsl para jogar lixo
ifconfig_vge3="inet 177.x.x.5 netmask 255.255.255.252" # /30 válido
rede internet (pppoe server roteado)
# rotas
#-----------------------------------------------------------------
defaultrouter="189.x.x.1" # link1 - vge0
gateway_enable="YES"
hostname="bgp.xxx.com.br"
route add 10.10.0.0/16 177.x.x0.6 # rota rede estatica interna
route add 177.x.x1.0/23 177.x.x0.6 # rota clientes pppoe
# servicos
...
# firewall
#-----------------------------------------------------------------
firewall_enable="YES"
firewall_type="/etc/rc.fw"
# fim ee /etc/rc.conf
# ee /etc/rc.fw
#!/bin/sh
# rc.fw - firewall personalizado
#--------------------------------------------------------------------
.. flush
# firewall statefull
ipfw add 1 check-state
...
# nat
#------------------------------------------------------------------
setfib 1 route delete default
setfib 1 route add default 192.168.253.254
ipfw table 1 add 192.168.253.1
ipfw nat 1 config if vge2
ipfw add 5000 nat 1 all from 192.168.253.1 to any
ipfw add 5001 setfib 1 all from 192.168.253.1 to any
ipfw add 5002 setfib 1 all from any to 192.168.253.1
setfib 2 route delete default
setfib 2 route add default 201.x.x.129
ipfw table 2 add 201.x.x.130
ipfw nat 2 config if vge1
ipfw add 6000 nat 2 all from 201.x.x.130 to any
ipfw add 6001 setfib 2 all from 201.x.x.130 to any
ipfw add 6002 setfib 2 all from any to 201.x.x.130
setfib 3 route delete default
setfib 3 route add default 189.x.x.1
ipfw table 3 add 189.x.x.2
ipfw nat 3 config if vge0
ipfw add 7000 nat 3 all from 189.x.x.2 to any
ipfw add 7001 setfib 3 all from 189.x.x.2 to any
ipfw add 7002 setfib 3 all from any to 189.x.x.2
# negar tudo
#-------------------------------------------------------------------
ipfw add 65533 deny log all from any to any
ipfw add 65534 deny all from any to any
# fim ee /etc/rc.fw
no squid tenho no tcp_outgoing_address configurado assim:
# squid
http_port 3128 transparent
# link adsl
acl linkadsl url_regex -i "/usr/local/etc/squid/sites.linkadsl"
tcp_outgoing_address 192.168.253.1 linkadsl
# link2
acl link2 url_regex -i "/usr/local/etc/squid/sites.link2"
tcp_outgoing_address 201.x.x.130 link2.sites
# link1
tcp_outgoing_address 189.x.x.2 # ip da interface vge0 rota padrão do rc.conf
Espero ter sido claro, apesar do tamanho do e-mail.
Agradecido desde já pelas possíveis ajudas.
--
Wenderson Souza
e-mail: wendersonsouza em gmail.com
msn: wendersonsouza em msn.com
skype: wendersonsouza
Mais detalhes sobre a lista de discussão freebsd