Páginas

domingo, 18 de noviembre de 2012

Servidor DNS DHCP RHEL 5


Servidor DNS y servidor DHCP en RHEL 5 y Centos 5

Fuente: http://www.alcancelibre.org/staticpages/index.php/ejercicio-ddns-dhcp

yum -y install dhcp bind bind-chroot caching-nameserver vim-enhanced

# Intel Corporation 82801G (ICH7 Family) LAN Controller
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:13:D4:B7:9D:70
ONBOOT=yes
PEERDNS=no

# D-Link System Inc DGE-528T Gigabit Ethernet Adapter
DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.0.255
HWADDR=5C:D9:98:9A:64:8A
IPADDR=192.168.0.1
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
PEERDNS=no

cd /var/named/chroot/var/named
mkdir dynamics
chmod 770 dynamics/
chown named.named dynamics/

touch /var/named/chroot/var/named/dynamics/red-local.net.zone
touch /var/named/chroot/var/named/dynamics/0.168.192.in-addr.arpa.zone

vim /var/named/chroot/var/named/dynamics/red-local.net.zone

$TTL    86400
@               IN      SOA     servidor.zapto.org.     root.zapto.org.  (
                20121226;  numero de serie
                28800   ;  tiempo de refresco
                7200    ;  tiempo entre reintentos
                604800  ;  expira si se deja de resolver
                86400   ;  tiempo total de vida
                )
@               IN      NS      servidor.zapto.org.
@               IN      A       192.168.0.1
servidor        IN      A       192.168.0.1
~ 

touch /var/named/chroot/var/named/dynamics/0.168.192.in-addr.arpa.zone
$TTL    86400
@               IN      SOA     servidor.zapto.org.     root.zapto.org.  (
                20121226;  numero de serie
                28800   ;  tiempo de refresco
                7200    ;  tiempo entre reintentos
                604800  ;  expira si se deja de resolver
                86400   ;  tiempo total de vida
                )
@               IN      NS      servidor.zapto.org.
1               IN      PTR     servidor.zapto.org.

chown named:named /var/named/chroot/var/named/dynamics/0.168.192.in-addr.arpa.zone
chown named:named /var/named/chroot/var/named/dynamics/red-local.net.zone
touch /var/named/chroot/etc/named.conf
vim /var/named/chroot/etc/named.conf

//
// Sample named.conf BIND DNS server 'named' configuration file
// for the Red Hat BIND distribution.
acl     "red-local" {
                     127.0.0.0/8;
                     192.168.0.0/24;
                     };

options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-recursion { red-local; };
        allow-query { red-local; };
        forwarders { 8.8.8.8; 8.8.4.4; };
        forward first;

};

include "/etc/named.rfc1912.zones";
include "/etc/rndc.key";

zone "red-local.net" {
        type master;
        file "/var/named/dynamics/red-local.net.zone";
        allow-update { key "rndckey"; };
};
zone "0.168.192.in-addr.arpa" {
        type master;
        file "/var/named/dynamics/0.168.192.in-addr.arpa.zone";
        allow-update { key "rndckey"; };
};
Generar clave rndckey
/usr/sbin/dns-keygen clavesecreta
1488SCpaXu0MZlGW3w4v9WsjJW4JPsUkQG6KyfyqTIeASGLI3OkI2dsmx5Lr

Copiar y pegar la clave en /etc/rndc.key
key "rndckey" {
        algorithm       hmac-md5;
        secret          "key "rndckey" {
        algorithm       hmac-md5;
        secret          "1488SCpaXu0MZlGW3w4v9WsjJW4JPsUkQG6KyfyqTIeASGLI3OkI2dsmx5Lr";
};
service named start
chkconfig named on
vim /etc/resolv.conf

; generated manual dns bind
search servidor.zapto.org
nameserver 127.0.0.1


vim /etc/dhcpd.conf

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample  
#
include "/var/named/chroot/etc/rndc.key";
server-identifier servidor.zapto.org;
ddns-update-style interim;
ddns-domainname "zapto.org.";
ddns-rev-domainname "in-addr.arpa.";
ignore client-updates;
authoritative;
default-lease-time 900;
max-lease-time 7200;
option domain-name "zapto.org";
option ip-forwarding off;

zone localdomain. {
        primary 127.0.0.1;
        key rndckey;
}
zone  0.168.192.in-addr.arpa. {
        primary 192.168.0.1;
        key rndckey;
}
zone red-local.net. {
        primary 192.168.0.1;
        key rndckey;
}

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.150 192.168.0.199;

}

service dhcpd start chkconfig dhcpd on
vim /etc/sysconfig/dhcpd



Linux es genial!

lunes, 22 de octubre de 2012

Firewall redes linux

Viene de aquí
Script de inicialización de suse ubicado en /etc/init.d/firewall
# cat /etc/init.d/firewall
### BEGIN INIT INFO
# Provides: SuSEfirewall2_init
# Required-Start: $local_fs
# Required-Stop:  $local_fs
# Default-Start:  3 5
# Default-Stop:   0 1 2 6
# Short-Description: SuSEfirewall2 phase 1
# Description: SuSEfirewall2_init does some basic setup and is the
#       phase 1 of 2 of the SuSEfirewall initialization
### END INIT INFO

SUSEFWALL="/usr/local/bin/fw_nat_centos"
BOOTLOCKFILE="/var/lock/SuSEfirewall2.booting"

test -x $SUSEFWALL || exit 5
test -r /etc/sysconfig/SuSEfirewall2 || exit 6

startmode=close
if (. /etc/sysconfig/SuSEfirewall2; test "$FW_BOOT_FULL_INIT" = yes); then
        startmode=start
fi >/dev/null 2>&1

. /etc/rc.status

rc_reset

case "$1" in
    start)
        echo -n "Loading basic firewall rules "
        if test -x /usr/sbin/iptables; then
                /bin/rm -rf /var/run/SuSEfirewall2
                $SUSEFWALL --bootlock -q $startmode
        else
                echo -n "${extd}iptables not available (yet)${norm}"
                rc_failed 5
        fi
        rc_status -v
        ;;
    stop)
        rc_failed 0
        rc_status
        ;;
    restart|force-reload)
        $0 start
        ;;
    try-restart|reload)
        if ($0 status) >/dev/null 2>&1; then
            $0 start
        else
            rc_reset
        fi
        ;;
    status)
        echo -n "Checking the status of SuSEfirewall2 "
        { test -e /proc/net/ip_tables_names && iptables -nL reject_func >/dev/null 2>&1; } || rc_failed 3
        rc_status -v
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart|reload|force-reload}"
        exit 1
        ;;
esac

# Set exit status
rc_exit

# cat /usr/local/bin/fw_nat_centos
#!/bin/sh
#define variables
ipt="/sbin/iptables"
mod="/sbin/modprobe"
LAN_IFACE="eth1"
WAN_IFACE="eth0"
NETLAN="192.168.0.0/24"
IP_SERVER="192.168.0.1"

#basic set of kernel modules
$mod ip_tables
$mod ip_conntrack
$mod iptable_filter
$mod iptable_nat
$mod iptable_mangle
$mod ipt_LOG
$mod ipt_limit
$mod ipt_state
$mod ipt_MASQUERADE

#add these for IRC and FTP
$mod ip_nat_ftp
$mod ip_nat_irc
$mod ip_conntrack_ftp
$mod ip_conntrack_irc

# Flush all active rules and delete all custom chains
$ipt -F
$ipt -t nat -F
$ipt -t mangle -F
$ipt -X
$ipt -t nat -X
$ipt -t mangle -X

#Set default policies
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT ACCEPT
$ipt -t nat -P OUTPUT ACCEPT
$ipt -t nat -P PREROUTING ACCEPT
$ipt -t nat -P POSTROUTING ACCEPT
$ipt -t mangle -P PREROUTING ACCEPT
$ipt -t mangle -P POSTROUTING ACCEPT

#this line is necessary for the loopback interface
#and internal socket-based services to work correctly
$ipt -A INPUT -i lo -j ACCEPT
$ipt -A OUTPUT -o lo -j ACCEPT

# Activar IP masquerading
#$ipt -t nat -A POSTROUTING -o $WAN_IFACE -s $NETLAN -d 0/0 -j MASQUERADE
$ipt -t nat -A POSTROUTING -o $WAN_IFACE -j MASQUERADE

# Permitir conexion previamente establecida por la interfaz internet eth0  
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -i eth0

# permitir LAN acceda al firewall
$ipt -A INPUT -j ACCEPT -p all -s $NETLAN -i eth1
$ipt -A OUTPUT -j ACCEPT -p all -d $NETLAN -o eth1

$ipt -A FORWARD -o $WAN_IFACE -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $WAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT

# Accept important ICMP messages
$ipt -A INPUT -p icmp --icmp-type echo-request  -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT

# Restringir acceso SSH solamente a hosts LAN
$ipt -A INPUT -i $LAN_IFACE -p tcp -s $NETLAN --dport 22 --sport 1024:65535 -m state --state NEW -j ACCEPT

# Restringir ciertos servicios dudosos
$ipt -A OUTPUT -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
$ipt -A FORWARD -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP

# open access to samba server for lan users only 
$ipt -A INPUT -s $NETLAN -m state --state NEW -p tcp --dport 137 -j ACCEPT
$ipt -A INPUT -s $NETLAN -m state --state NEW -p udp --dport 137 -j ACCEPT
$ipt -A INPUT -s $NETLAN -m state --state NEW -p tcp --dport 138 -j ACCEPT
$ipt -A INPUT -s $NETLAN -m state --state NEW -p tcp --dport 139 -j ACCEPT
$ipt -A INPUT -s $NETLAN -m state --state NEW -p udp --dport 139 -j ACCEPT
$ipt -A INPUT -s $NETLAN -m state --state NEW -p tcp --dport 445 -j ACCEPT
$ipt -A INPUT -s $NETLAN -m state --state NEW -p udp --dport 445 -j ACCEPT

# Aceptamos que consulten los DNS
$ipt -A OUTPUT -s $NETLAN -o eth1 -p udp --dport 53 --sport 1024:65535 -j ACCEPT
$ipt -A INPUT -s $NETLAN -i eth1 -p udp --sport 53 --dport 1024:65535 -j ACCEPT

# Multicast de DNS (mDNS)
$ipt -A OUTPUT -s $NETLAN -o eth1 -p udp --dport 5353 -j ACCEPT

# Aceptar peticiones DHCP
$ipt -I INPUT -i $LAN_IFACE -p udp --dport 67:68 --sport 67:68 -j ACCEPT

# allow client to query and receive timeserver
# $ipt -A OUTPUT -o eth0 -p udp -s  --sport 123 -d  --dport 123 -m state --state NEW -j ACCEPT

$ipt -A OUTPUT -o eth1 -p udp -s $NET_LAN --sport 123 -d $IP_SERVER --dport 123 -m state --state NEW -j ACCEPT

# OPEN port by SWAT 
$ipt -A INPUT -s $NETLAN -m state --state NEW -p tcp --dport 901 -j ACCEPT

# Open port ldap
#$ipt -A INPUT -s $NETLAN -m state --state NEW -p tcp --dport 389 -j ACCEPT

# block all outgoing traffic to internet from ports 0:1024
$ipt -A OUTPUT -o $WAN_IFACE -p tcp --sport 1:1024 -j DROP
$ipt -A OUTPUT -o $WAN_IFACE -p udp --sport 1:1024 -j DROP

# Log all other input from internet
$ipt -A INPUT -i $WAN_IFACE -j LOG
                          
# Log all other forward 
$ipt -A FORWARD -j LOG --log-prefix "Forward:"         

# log all other input form lan
$ipt -A INPUT -i $LAN_IFACE -j LOG --log-prefix "from LAN:"

# enable forwarding - done last for security
echo " - Enabling firewall.."
#echo "1" > /proc/sys/net/ipv4/ip_forward

# saving iptables rules (works for Redhat/Fedora) (perhaps other distributions too)
/sbin/service iptables save

#
/sbin/iptables -nL

Linux es genial!

Servidor DNS OpenSuse

Configurar servidor DNS - opensuse 12 (mantis).

Como decía mi profesor después de conocer la teoría la implementación posterior será posible en cualquier distribución linux. En este caso le toca el turno a Opensuse.

Documentació en català lliure descàrrega: http://svn.projectes.lafarga.cat/svn/iceupc/
Fuente: http://acacha.org/mediawiki/index.php/

Instalación Opensuse RAID 1, más un disco duro de apoyo y dos tarjetas de red, detallaresmos la configuración del servidor DNS.

Este servidor incluye DHCP,  los clientes obtendrán una ip de forma dinámica y Samba para habilitar una red realmente mixta y puedan acceder tanto ordenadores windows linux bsd mac, etc.  Los clientes, excepto la máquina zeus (portatil), pertenecen a un entorno virtual (VirtualBox).

Configuración del cortafuegos nat

El archivo /etc/dhcpd.conf
Samba ha sido previamente configurado.  De todas formas será el próximo tema a tratar.

Después de conocer el funcionamiento de un servidor DNS no será dificil modificar o crear los archivos de configuración necesarios para su correcto funcionamiento, son estos:

interfaz eth1
ip servidor 192.168.0.1
network 192.168.0.0/24

interfaz eth0
Archivo de zona directa /var/lib/named/db.alumnat.directa


Archivo de zona inversa /var/lib/named/db.192.168.0


Archivo /etc/resolv.conf


Archivo /etc/hosts
Fichero /etc/named.d/forwarders.conf


Comprobación con nslookup
Comprobación con dig
Comprobación con el comando ping

Configuración de los clientes xp y linux:
Fichero /etc/hosts
Archivo /etc/resolv.conf
Archivo /etc/dhcpd/dhcpclient.conf

Comprobación dhcp xp

Comprobación nslookup xp


Comprobación ping xp


Comprobar conexión a Internet xp



Comando ping desde xp



Linux es genial!.

martes, 11 de septiembre de 2012

NFS Network File System


Un escenario físico de dos máquinas (clientes y servidor). Servidor con una distribución Debian Squeeze, dos tarjetas de red eth0 (192.168.1.0/24) conectada a Internet y eth1 (192.168.0.0/24) conectada a la red local. El servidor incorpora un cortafuegos iptables y una conexión compartida a Internet:
Escenario físico:

1. Máquina Pentium 4 3.2 2 GB de Ram actuando servidor
servidor - servidor.example.com

Estación de trabajo:

2. Gentoo linux zeus.example.com

Después de instalar NFS en el servidor es necesario para su funcionamiento funcionamiento configurar algunos ficheros y permitir el paso de paquetes a través del cortafuegos. Esto es un resumen del proceso realizado

Entrando en el servidor local (servidor.example.com)

$ ssh carlos@servidor


Fijar los nombres de la interfaz con ifrename /etc/iftab:



Fichero configuracion intefaces de red /etc/network/interfaces:



Comprobando la red con ifconfig -a:


Rutas en el servidor /sbin/route:


Activar forwarding paquetes para ipv4:
Fichero /etc/sysctl.conf
# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1
:wq
# sysctl -p


Así queda el firewall de manera que permite conectar la red local a Internet y abre los puertos necesarios para NFS y portmap:
#!/bin/sh
##/usr/local/bin/fw_nat
#iptables firewall script for sharing
#broadband Internet, with no public services

#define variables
ipt="/sbin/iptables"
mod="/sbin/modprobe"
LAN_IFACE="eth1"
WAN_IFACE="eth0"
NETLAN="192.168.0.0/24"

#basic set of kernel modules
$mod ip_tables
$mod ip_conntrack
$mod iptable_filter
$mod iptable_nat
$mod iptable_mangle
$mod ipt_LOG
$mod ipt_limit
$mod ipt_state
$mod ipt_MASQUERADE

#add these for IRC and FTP
$mod ip_nat_ftp
$mod ip_nat_irc
$mod ip_conntrack_ftp
$mod ip_conntrack_irc

# Flush all active rules and delete all custom chains
$ipt -F
$ipt -t nat -F
$ipt -t mangle -F
$ipt -X
$ipt -t nat -X
$ipt -t mangle -X

#Set default policies
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT ACCEPT
$ipt -t nat -P OUTPUT ACCEPT
$ipt -t nat -P PREROUTING ACCEPT
$ipt -t nat -P POSTROUTING ACCEPT
$ipt -t mangle -P PREROUTING ACCEPT
$ipt -t mangle -P POSTROUTING ACCEPT

#this line is necessary for the loopback interface
#and internal socket-based services to work correctly
$ipt -A INPUT -i lo -j ACCEPT

#Enable IP masquerading
$ipt -t nat -A POSTROUTING -o $WAN_IFACE -j MASQUERADE

#Enable unrestricted outgoing traffic, incoming
#is restricted to locally-initiated sessions only
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A FORWARD -i $WAN_IFACE -o $LAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $LAN_IFACE -o $WAN_IFACE -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Accept important ICMP messages
$ipt -A INPUT -p icmp --icmp-type echo-request  -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT

# Restringir acceso SSH solamente a hosts LAN
$ipt -A INPUT -i $LAN_IFACE -p tcp -s $NETLAN --dport 22 --sport 1024:65535 -m state --state NEW  -j ACCEPT

# SERVICES_TCP="ssh 22 nfs 111 2049 32765 32767 32768"
# SERVICES_UDP="111 2049 32765 32767 32768 "
# $ipt -N tcp_packets

# for x in ${SERVICES_TCP}
# do
# $ipt -A tcp_packets -p tcp -s $NETLAN --dport ${x} -j ACCEPT
# done

# for x in ${SERVICES_UDP}
# do
# $ipt -A tcp_packets -p tcp -s $NETLAN --dport ${x} -j ACCEPT
# done
# netstat -tl
# /etc/modprobe.d/local.conf http://wiki.debian.org/SecuringNFS

# Abrir puertos NFS
$ipt -A INPUT -m state --state NEW  -p tcp --dport 2049 -j ACCEPT
$ipt -A INPUT -m state --state NEW  -p udp --dport 2049 -j ACCEPT
$ipt -A INPUT -m state --state NEW  -p tcp --dport 111 -j ACCEPT
$ipt -A INPUT -m state --state NEW  -p udp --dport 111 -j ACCEPT
$ipt -A INPUT -m state --state NEW  -p udp --dport 32765 -j ACCEPT
$ipt -A INPUT -m state --state NEW  -p tcp --dport 32765  -j ACCEPT
$ipt -A INPUT -m state --state NEW  -p tcp --dport 32767 -j ACCEPT
$ipt -A INPUT -m state --state NEW  -p udp --dport 32767 -j ACCEPT
$ipt -A INPUT -m state --state NEW  -p tcp --dport 32768 -j ACCEPT
$ipt -A INPUT -m state --state NEW  -p udp --dport 32768 -j ACCEPT


Fichero /etc/modprobe.d/local.conf


Arrancando el firewall con el sistema. /etc/rc.local


Cambios en el fichero /etc/default/nfs-common


Cambios en el fichero /etc/default/nfs-kernel-server


Modificando /etc/hosts /etc/hosts.allow /etc/hosts.deny:


Definiendo servicios en /etc/services

 # vim /etc/services
 nfs     2049/tcp    # Network File System
 nfs     2049/udp    # Network File System

Fuente: http://wiki.debian.org/SecuringNFS

Información sobre rutas y servicios:
# netstat -tl

Reporte RPC información con rpcinfo -p lista todos los programas RPC registrados:


Directorios a compartir en red utilizando NFS /etc/exports:


Permisos de las carpetas:


exportfs -a sincroniza con el contenido de /etc/exports


En la estación de trabajo:
zeus carlos # /etc/init.d/rpcbind start
rpcbind       | * Starting rpcbind ...                                   [ ok ]
zeus carlos # /etc/init.d/rpc.statd start
rpc.statd     | * Starting NFS statd ...                                 [ ok ]
zeus carlos # /etc/init.d/nfs start      
rpc.idmapd    | * Starting idmapd ...                                    [ ok ]
nfs           | * Starting NFS mountd ...                                [ ok ]
nfs           | * Starting NFS daemon ...
nfs           |rpc.nfsd: Unable to access /proc/fs/nfsd 
nfs           | * Starting NFS smnotify ...                              [ ok ]
zeus carlos # 
Montar directorios:
El acceso de los usuarios dependerá de los permisos asociados a las carpetas. Por ejemplo para crear un directorio donde todo el mundo pueda escribir ficheros, donde todos los ficheros tengan el mismo grupo, pero donde nadie pueda suprimir los ficheros de los demás los derechos son:
rwxrwsrwt, lo que es lo mismo, 3777 en octal.

Si se tiene activada la opción volumes_visible el Escritorio se verá así:


Fuente: http://wiki.debian.org/SecuringNFS

Linux es genial!.

martes, 14 de agosto de 2012

Redes con virtualbox


Enrutamiento estático a través de subredes con virtualbox.

Escenario: Dos subredes privadas que recorrer, y no todas están conectadas al mismo router. Proporcionarles acceso de unas a otras creando rutas estáticas.



Primero instalar virtualbox utilizando ubuntu como sistema anfitrión. Crear una máquina virtual a partir de una iso basada en debian 5.0 i386 sin entorno gráfico.


Configuración de la red.
Adaptador1 NAT (ip asignada automáticamente por vbox)
Adaptador2 Red interna (red1 ip fija)
Adaptador3 Red interna (red2 ip fija)




A partir de la vmdebian clonar las 3 máquinas virtuales para la realización de la práctica.

Listar el nombre de las máquinas virtuales
$ vboxmanage list vms
"vmdebian" {3a26e53a-c24b-48a4-80b9-f83b38b23cb2}
"vmdebian1" {e8282c78-50f1-4ab9-be73-98f99042b41c}
"vmdebian2" {7f15dc6e-6481-4b5f-8d7c-f1ddeb3e0992}
"vmdebian3" {3661155b-83f2-4ee9-a5a4-ce06887c05e8}

Cambiar la red por defecto asignada por virtualbox.
$ vboxmanage modifyvm "vmdebian1" --natnet1 "192.168.11/24"
$ vboxmanage modifyvm "vmdebian2" --natnet1 "192.168.12/24"
$ vboxmanage modifyvm "vmdebian3" --natnet1 "192.168.13/24"

Los nombres de las vm serán router{1,2,3}. Las ip's de las interfaces eth1 y eth2 serán fijas y los ficheros de configuración de las interfaces como se ve más abajo.

router1

cat /etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug eth0 iface eth0 inet dhcp
allow-hotplug eth1 iface eth1 inet static
address 172.16.1.1 netmask 255.255.255.0 network 172.16.1.0 broadcast 172.16.1.255 gateway 172.16.1.1

router2

cat /etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug eth0 iface eth0 inet dhcp
allow-hotplug eth1 iface eth1 inet static
address 172.16.1.222 netmask 255.255.255.0 network 172.16.1.0 broadcast 172.16.1.255 gateway 172.16.1.222
allow-hotplug eth2 iface eth2 inet static
address 172.16.2.222 netmask 255.255.255.0 network 172.16.2.0 broadcast 172.16.2.255 gateway 172.16.2.222

router3

cat /etc/network/interfaces
auto lo
iface lo inet loopback
allow-hotplug eth0 iface eth0 inet dhcp
allow-hotplug eth2 iface eth2 inet static
address 172.16.2.1 netmask 255.255.255.0 network 172.16.2.0 broadcast 172.16.2.255 gateway 172.16.2.1

Status de todas las interfaces:
router1
# ifconfig -a
router2
# ifconfig -a


router3
# ifconfig -a


Crear las rutas estáticas. Comandos para establecer las rutas:

router1
# route add -net 172.16.2.0/24 gw 172.16.1.222 eth1

router3
# route add -net 172.16.1.0/24 gw 172.16.2.222 eth2

En el router2
Activar el reenvío IP desde la línea de comando. Configurarlo de forma permanente en /etc/sysctl.conf e iniciarlo inmediatamente:

# echo 1 > /proc/net/ipv4/ip_forward
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
:wq
# sysctl -p

Para conservar permanentemente las rutas estáticas y no tener que escribir de nuevo todos los comandos route agregarlas al fichero de configuración /etc/network/interfaces en la stanza para su interfaz correspondiente.

router1
# vim /etc/network/interfaces
up route add -net 172.16.2.0/24 gw 172.16.1.222 eth1
:wq

router3
# vim /etc/network/interfaces
up route add -net 172.16.1.0/24 gw 172.16.2.222 eth2
:wq

Verificar las rutas con route:
router1
# route -n


router2
# route -n


router3
# route -n


Haciendo ping desde los diferentes hosts:

router1
# ping -c3 172.16.2.222
# ping -c3 172.16.2.1


router2
# ping -c3 172.16.2.1
# ping -c3 172.16.1.1


router3
# ping -c3 172.16.1.222
# ping -c3 172.16.1.1


Habilitar la comunicación entre todas las redes:

router1
route add -net 192.168.12.0/24 gw 172.16.1.222 eth1
route add -net 192.168.13.0/24 gw 172.16.1.222 eth1


router2
route add -net 192.168.11.0/24 gw 172.16.1.1 eth1
route add -net 192.168.13.0/24 gw 172.16.2.1 eth2


router3
route add -net 192.168.12.0/24 gw 172.16.2.222 eth2
route add -net 192.168.11.0/24 gw 172.16.2.222 eth2


Para eliminar
# route del -net direccion_red/mascara

Ejemplo router3
# route del -net 192.168.11.0/24

Linux es genial!.