feliz navidad

Alex M. Alvarez A. alex.alvarez en bsd.cl
Mie Ene 10 18:58:12 CLST 2007


uv negativa wrote:
> Primero que todo muchas gracias por su colabarion y por las que llegen
> , ya estoy entendiendo.
> 
> Les contare actualmente como lo tengo para ver si alguien comprende
> por que no funciona el balanceo de carga. Para empezar les contare que
> quiero
> 
> Tengo dos conexiones como les explicaba 600k y otra de 800k ADSL
> y me gustaria realizar lo siguiente:
> 
> - Balanceo de carga
> - Proxy con squid el cual funciona en modo no transparante
> - VPN con IPSec y validacion con clave (la cual monte pero al
> conectarme desde un cliente windows solo se conecta pero no puedo
> hacer ping a la lan de la VPN, ojala alguien me ayude pero se que
> tengo que ir por pasos)
> 
> Que tengo
> - AMD 64 bits +3200 y un 1GB de ram
> - OpenBSD 4.0
> - Tarjeta de red cuadruple Soekris lan1621
> - Tarjeta de aceleracion de encriptacion Soekris vpn1401 la cual
> activa OpenBSD por defecto
> - Disco duro sata de 80GB
> 
> Que he realizado
> - Instalacion
> - La vpn ya les conte que falla
> - PF lo tengo funcionando sin redundancia
> - Squid en modo no transparente con Squid Guard
> 
> Configuracion actual de las interfaces de red
> ADSL 1
> # cat /etc/hostname.sis0
> inet 200.75.53.xxx 255.255.255.252 NONE \
> media 100baseTX mediaopt full-duplex
> !route add -mpath default 200.75.53.xxx
> 
> ADSL 2
> # cat /etc/hostname.sis1
> inet 200.118.116.212 255.255.255.0 NONE \
> media 100baseTX mediaopt full-duplex
> !route add -mpath default 200.118.116.1
> 
> LAN
> # cat /etc/hostname.sis2
> inet 192.168.2.3 255.255.255.0 NONE
> 
> DMZ
> # cat /etc/hostname.sis3
> inet 192.168.1.3 255.255.255.0 NONE
> 
> 
> SYSCTL.CONF
> 
> #       $OpenBSD: sysctl.conf,v 1.40 2006/01/28 18:22:43 brad Exp $
> #
> # This file contains a list of sysctl options the user wants set at
> # boot time.  See sysctl(3) and sysctl(8) for more information on
> # the many available variables.
> #
> net.inet.ip.forwarding=1        # 1=Permit forwarding (routing) of IPv4 
> packets
> #net.inet.ip.mforwarding=1      # 1=Permit forwarding (routing) of
> IPv4 multicast packets
> #net.inet6.ip6.forwarding=1     # 1=Permit forwarding (routing) of IPv6 
> packets
> #net.inet6.ip6.accept_rtadv=1   # 1=Permit IPv6 autoconf (forwarding 
> must be 0)
> #net.inet.tcp.rfc1323=0         # 0=Disable TCP RFC1323 extensions
> (for if tcp is slow)
> #net.inet.tcp.rfc3390=0         # 0=Disable RFC3390 for TCP window 
> increasing
> #net.inet.esp.enable=0          # 0=Disable the ESP IPsec protocol
> #net.inet.ah.enable=0           # 0=Disable the AH IPsec protocol
> #net.inet.esp.udpencap=0        # 0=Disable ESP-in-UDP encapsulation
> #net.inet.ipcomp.enable=1       # 1=Enable the IPCOMP protocol
> #net.inet.etherip.allow=1       # 1=Enable the Ethernet-over-IP protocol
> #net.inet.tcp.ecn=1             # 1=Enable the TCP ECN extension
> #ddb.panic=0                    # 0=Do not drop into ddb on a kernel panic
> #ddb.console=1                  # 1=Permit entry of ddb from the console
> #fs.posix.setuid=0              # 0=Traditional BSD chown() semantics
> #vm.swapencrypt.enable=0        # 0=Do not encrypt pages that go to swap
> #vfs.nfs.iothreads=4            # number of nfsio kernel threads
> #net.inet.ip.mtudisc=0          # 0=disable tcp mtu discovery
> #kern.usercrypto=0              # 0=disable userland use of /dev/crypto
> #kern.splassert=2               # 2=enable with verbose error messages
> #machdep.allowaperture=2        # See xf86(4)
> #machdep.kbdreset=1             # permit console CTRL-ALT-DEL to do a 
> nice halt
> #net.inet6.ip6.multipath=1
> net.inet.ip.multipath=1
> 
> PF.CONF sin redundancia en conexion
> 
> ext_if="sis0"
> int_if="sis3"
> dmz_if="sis2"
> ext_ip="200.75.53.xxx"
> 
> 
> servicios_tcp = "{ ftp, 3389, 1433, ssh, smtp, domain, pop3, https,
> www, 2095, 2082, 5011, 5001, 2084, 8083, 8880, 7978, 8001, 8002, 89 }"
> servicios_udp = "{ domain, 33434 }"
> 
> set loginterface $ext_if
> set block-policy drop
> 
> 
> scrub in on ALL from any to any
> 
> 
> 
> nat on $ext_if from !($ext_if) -> ($ext_if:0)
> 
> #redireccionar el trafico www y https para la LAN y DMZ cuando no
> tiene activo el proxy al servidor OpenBSD
> rdr pass on !$ext_if proto tcp to port www -> 192.168.1.3 port 80
> rdr pass on !$ext_if proto tcp to port https -> 192.168.1.3 port 80
> 
> rdr on $ext_if proto tcp from any to any port 80 -> 192.168.1.4
> rdr on $ext_if proto tcp from any to any port 3389 -> 192.168.1.4
> rdr on $ext_if proto tcp from 2xx.xx.xxx.xxx to any port 1433 -> 
> 192.168.1.4
> rdr on $ext_if proto tcp from 2xx.xx.xxx.xxx to any port 21 -> 192.168.1.4
> 
> block log on $ext_if from any to any
> 
> pass in on $ext_if proto udp from any port = 500 to $ext_ip port = 500
> keep state
> pass in on $ext_if proto esp from any to $ext_ip keep state
> 
> pass proto tcp from any to any port $servicios_tcp keep state
> pass proto udp from any to any port $servicios_udp keep state
> 
> pass from any to 2xx.xx.xxx.xxx keep state
> 
> 
> PF.CONF con redundancia el cual no utilizo por que desde la LAN o la
> DMZ no accede a internet parece que no routea es mi impresion y no se
> por no funciona si es igual al ejemplo del faq de OpenBSD o si es por
> que hay que hacer algo en el squid
> 
> lan_net = "192.168.1.0/24"
> int_if  = "sis3"
> ext_if1 = "sis1"
> ext_if2 = "sis0"
> ext_gw1 = "200.118.116.XXXX"
> ext_gw2 = "200.75.53.XXXX"
> 
> 
> servicios_tcp_ext = "{ ftp, 3389, 1433, ssh, smtp, domain, pop3,
> https, www, 2095, 2082, 5011, 5001, 2084, 8083, 8880, 7978, 8001,
> 8002, 89 }"
> servicios_udp_ext = "{ domain, 33434 }"
> 
> nat on $ext_if1 from !($ext_if1) to any -> ($ext_if1)
> nat on $ext_if2 from !($ext_if2) to any -> ($ext_if2)
> 
> #redireccionar el trafico www y https para la LAN y DMZ cuando no
> tiene activo el proxy al servidor OpenBSD
> rdr on $ext_if2 proto tcp from any to any port 80 -> 192.168.1.4
> rdr on $ext_if1 proto tcp from any to any port 80 -> 192.168.1.4
> 
> rdr on $ext_if2 proto tcp from any to any port 3389 -> 192.168.1.4
> rdr on $ext_if2 proto tcp from 2xx.xx.xxx.xxx to any port 1433 -> 
> 192.168.1.4
> rdr on $ext_if2 proto tcp from 2xx.xx.xxx.xxx to any port 21 -> 192.168.1.4
> 
> 
> block log on $ext_if1 from any to any
> block log on $ext_if2 from any to any
> 
> 
> pass in on $int_if route-to \
>    { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
>    proto tcp from $lan_net to any flags S/SA modulate state
> #  load balance outgoing udp and icmp traffic from internal network
> pass in on $int_if route-to \
>    { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
>    proto { udp, icmp } from $lan_net to any keep state
> 
> #  general "pass out" rules for external interfaces
> pass on $ext_if1 proto tcp from any to any flags S/SA modulate state
> pass  on $ext_if1 proto { udp, icmp } from any to any keep state
> pass  on $ext_if2 proto tcp from any to any flags S/SA modulate state
> pass  on $ext_if2 proto { udp, icmp } from any to any keep state
> 
> pass from any to 200.31.195.157 keep state
> 
> 
> #  route packets from any IPs on $ext_if1 to $ext_gw1 and the same for
> #  $ext_if2 and $ext_gw2
> pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to any
> pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any
> 
> 
> Sobre lo de Multipath no se si uno al activarlo hay que hacer algo en
> pf para que funcione la redundancia y lo otro es que no se si puedo
> enrutar en BGP4 y si esto serviria para solucionar mi problema
> 
> Gracias de nuevo
> 
> 
> 
> 
> On 1/10/07, Jorge Niedbalski R. <jorge.niedbalski at mop.gov.cl> wrote:
>> Daemon wrote:
>> >> Me ha creado una duda: si el sistema utiliza multipath a nivel de
>> >> route uno no necesita con pf hacer balanceo, ya que el route hace eso,
>> >> lo unico que habria que hacer en el pf es activar el nat y las reglas
>> >> correspondientes a cada interfaz de salida y no tendria que utulizar
>> >> el tag route en el pf???.
>> >>
>> >> Bueno les dejo mi duda no se si estoy mal o bien si alguien tiene un
>> >> ejemplo les agradezco
>> >>
>> >>
>> >>
>> > Esto te lo respondi hace mas de un mes por la lista usuarios.bsd.cl 
>> y trate
>> > de ser muy detallado.
>> >
>> > Saludos,
>> >
>> > ------------
>> > Podrías detallarlo acá entonces....
>> >
>> >
>>
>> Las tablas de enrutamiento no prevalecen sobre el balanceo que puedas
>> hacer en PF , lo que realmente ocurre es que las tablas de rutas que son
>> manejadas por el kernel y que requieren de cierto procesamiento como en
>> este caso de las rutas de igual costo y multiples caminos(rfc2992)
>> finalmente son enviadas a cada una de las interfaces o pseudo interfaces
>> que hayas definido y es justamente en ese momento donde comienza a actuar
>> PF (dado que es una muy extraña mezcla de capa de red+transporte) pero PF
>> SOLO OPERA EN INTERFACES por ende, debo recalcarte que el multipathing es
>> solo indicar que una red destino EXISTENTE puede tener multiples 
>> gateways,
>> lo que da la posibilidad de tener multiples uplinks redundantes, sin
>> embargo al producirse una falla en uno de los enlaces el kernel seguira
>> forwardiando la informacion IP hacia la interface ya que el algoritm no
>> provee ningun mecanismo de tolerancia a fallos.
>>
>> Si lo que te interesa es controlar el ancho de banda y realizar
>> asignaciones de pesos por enlace DEBES hacerlo a traves de PF en cada
>> interface que tengas definida.
>>
>> Te recomendaria una opciones de Multipath+ifstated (para controlar fallas
>> en enlaces) + PF que son completamente compatibles para diagnosticar
>> fallas en uno de los 2 proveedores y conmutar solo con 1 o hacer ALTQ ,
>> priorizacion de trafico, etc.
>>
>> Dudo que tengas la posibilidad de enrutar sobre BGP4 , si asi fuera envia
>> tus dudas a la lista y te podemos ayudar.
>>
>>
>> Saludos,
>>
>> Jorge Niedbalski
>>
>>
> 
> 
> 
tcpdump -i pflog0 -e -tt

Te mostrara las reglas que tengan log en PF para que puedas ver que es 
lo que estas denegando mas de la cuenta en la VPN. Y asi puedas arreglar 
y/o mejorar tu filtrado.


-- 
+-------------------------------+---------------------------------+
|      Alex M. Alvarez A.       |    http://kuarzo.FreeBSD.cl     |
+-------------------------------+---------------------------------+
|      Sistemas BSD Chile - IPv6 Activo sobre sistemas *BSD.      |
+-------------------------------+---------------------------------+
|  E-Mails :                    |    Telefono : +56 2 6822094     |
|   alex.alvarez at bsd.cl         |    Celular  : +56 9 3302869     |
|   alex.alvarez at freebsd.cl     |        Santiago - CHILE.        |
+-------------------------------+---------------------------------+
|        www.FreeBSD.cl - www.OpenBSD.cl - www.NetBSD.cl          |
+-------------------------------+---------------------------------+


Más información sobre la lista de distribución BSD