====== Infraestructura de Red y Acceso a Internet ====== Encargado: Andrés Ambrois (aa) Secuaz: Francisco Castro (fcr) Bruno Iglesias (bjifas) Si tenés ganas de ayudar, anotate arriba para coordinar más fácilmente. ===== Servicios ===== Si sos parte de la organización, vas a realizar un demo, o una charla, y necesitás tener algún software instalado en un servidor en la red para que los asistentes lo puedan utilizar, por favor anótalo aquí junto con tu información de contacto. Depués del 17/4 no se van a aceptar más cambios a la lista de servicios ya que vamos a estar ocupados probando que todo funcione perfectamente. * Squid * [[organizacion:2010:montevideo:red:apt-cacher|apt-cacher-ng]] * Dokuwiki * iptraf ===== Hardware ===== * 3 Switches de 24 bocas 10/100 con 2 bocas de giga. * Cinta de colores para marcar cables/aparatos/etc. ===== Uplink ===== ==== Balanceo ==== #!/bin/sh IFACES="ppp0 ppp1" ip rule flush hops= for iface in $IFACES do addr=`ifconfig $iface | grep -o 'inet addr:[^ ]*' | sed 's/.*:\(.*\)/\1/'` nm=`ifconfig $iface | grep -o 'Mask:[^ ]*' | sed 's/.*:\(.*\)/\1/'` gw=`ip route show dev $iface | head -n 1 | cut -d' ' -f1` table=$((${iface#ppp} + 1)) ip route flush dev $iface ip route flush table $table ip route add $gw dev $iface src $addr table $table ip route add default via $gw dev $iface table $table ip route add $gw dev $iface src $addr ip rule add from $addr table $table hops="$hops nexthop via $gw dev $iface weight 1" done ip route del default ip route add default scope global $hops ===== Mapas ===== ===== Segmentación ===== * Dos subredes - Una para los APs y otra para instalaciones: * 192.168.0.0/24 (eth2) -> General * 192.168.1.0/24 (eth0) -> Instalaciones auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 auto eth2 iface eth2 inet static address 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 auto eth1 iface eth1 inet manual auto dsl-provider iface dsl-provider inet ppp pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf provider dsl-provider ===== Wireless ===== ===== Firewall ===== #!/bin/sh SQUIDIP=192.168.0.1 SQUIDPORT=3128 LAN_INSTALL=192.168.1.0/24 LAN_GENERAL=192.168.0.0/24 WAN_IFACES="ppp0 ppp1" # Limpieza iptables -F iptables -t nat -F iptables -X iptables -P INPUT DROP # Aceptar lo iptables -A INPUT -i lo -j ACCEPT # Aceptar conexiones establecidas y nuevas desde la lan iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT for iface in $WAN_IFACES do iptables -A INPUT -m state --state NEW -i $iface -j DROP done iptables -A INPUT -m state --state NEW -j ACCEPT iptables -t nat -A PREROUTING -d $SQUIDIP -j ACCEPT iptables -t nat -A PREROUTING -s $SQUIDIP -p tcp --dport 80 -j ACCEPT iptables -t nat -A PREROUTING -s $LAN_INSTALL -p tcp --dport 80 -j REDIRECT --to-ports $SQUIDPORT iptables -t nat -A PREROUTING -s $LAN_GENERAL -p tcp --dport 80 -j REDIRECT --to-ports $SQUIDPORT for iface in $WAN_IFACES do iptables -t nat -A POSTROUTING -o $iface -j MASQUERADE done ===== DHCP ==== [13:18:24] root@flisol:~# sed '/^\(#\|$\)/d' /etc/dhcp3/dhcpd.conf ddns-update-style none; default-lease-time 600; max-lease-time 3600; # 1h authoritative; log-facility local7; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option domain-name-servers 192.168.1.1; range 192.168.1.20 192.168.1.254; } subnet 192.168.0.0 netmask 255.255.255.0 { option routers 192.168.0.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option domain-name-servers 192.168.0.1; range 192.168.0.20 192.168.0.254; } ===== DNS ==== El servidor responderá al nombre local "flisol" en la IP 192.168.0.1 para las peticiones entrantes desde la subred General, y 192.168.1.1 para la subred de instalaciones. ===== Traffic Control ===== #!/bin/sh IFACE=eth2 REDGRAL=192.168.0 RATETOTAL=4mbit # En Intel tenemos 100 ticks por segundo. La máxima tasa se da cuando # se envían $burst bytes en cada tick. Para lograr $RATETOTAL (en bytes), # necesitamos un burst de $RATETOTAL/(100*8). Ver man tc-htb. # No hace falta, tenemos NO_HZ=y en el server. Lo dejo como referencia. # MINBURST=`dc -e "${RATETOTAL%mbit} 1048576 * 100 8 * / p"` RATEGRALCLI=100kbit # lsmod | grep -q '^sch_htb ' || insmod sch_htb # lsmod | grep -q '^cls_u32 ' || insmod cls_u32 # Bueno, borramos los qdiscs y todos sus amigos: tc qdisc del dev $IFACE root # Agregamos el qdisc ra'iz en donde marcamos la clase por omisi'on para # los paquetes que salen (1:1): tc qdisc add dev $IFACE root \ handle 1: \ htb default 1 ################################ Clases ################################ # # Clase ra'iz: 1:1 # .---------^---------. # | | # Clases hijas: (general) 1:2 1:3 (instalaciones) # .--^--. .---^--. # .0.2 | |.0.254 .1.2| |.1.254 # Clases recontrahijas: 1:3 .. 1:255 1:256 1:508 # #Clase = IP +: +1 +254 # # Creamos la clase ra'iz ilimitada, ya que es un fast ethernet: tc class add dev $IFACE parent 1: \ classid 1:1 \ htb rate 1000mbit burst $MINBURST # Burst debe ser mayor o igual # a la más alta de sus hijos # Creamos la clase hija para General: tc class add dev $IFACE parent 1:1 \ classid 1:2 \ htb rate $RATETOTAL prio 10 burst $MINBURST for IP in `seq 2 254` do #### GENERAL #### # Clase recontrahija, ac'a van a ir a parar los paquetes que vayan a # clientes. Limito a $RATE y se le baja la prioridad: #10: tc class add dev $IFACE parent 1:2 \ classid 1:$((IP + 1)) \ htb rate $RATEGRALCLI prio 10 ceil $RATETOTAL burst $MINBURST # Esto es un filtro que permite colocar los paquetes con destino a # clientes dentro de la clase 10. N'otese que la prio del filtro nada # tiene que ver con la prioridad de la clase, el objetivo de la # prioridad del filtro es simplemente para definir el orden de testeo # de las reglas: tc filter add dev $IFACE parent 1: \ protocol ip prio 10 \ u32 match ip dst $REDGRAL.$IP flowid 1:$((IP + 1)) done # Este filtro permite saltear el filtro a aquellos paquetes cuyo origen # se encuentre dentro de la lan: tc filter add dev $IFACE parent 1: \ protocol ip prio 5 \ u32 classid 1:1 match ip src $REDGRAL.0/24 ===== Reuniones ===== Todas las reuniones son abiertas, pero si piensas participar por favor anotate al principio de ésta página para poder contactarte más fácilmente. * [[organizacion:2010:montevideo:red:reunion0|Reunión 0 - 3/3/10]] * [[organizacion:2010:montevideo:red:reunion1|Reunión 1 - 8/3/10]] * [[organizacion:2010:montevideo:red:reunion2|Reunión 2 - 15/3/10]] * [[organizacion:2010:montevideo:red:reunion3|Reunión 3 - 23/3/10]] * [[organizacion:2010:montevideo:red:reunion4|Reunión 4 - 15/04/10]]