feliz navidad

uv negativa uv.negativa en gmail.com
Mie Ene 10 18:20:29 CLST 2007


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 en 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
>
>



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