Pseudo-bridges
En un pseudo-bridge funciona de forma diferente, y se porta más como un router oculto que como un bridge.
Un caso común en el que son muy útiles los pseudo-bridges es el siguiente:
Red Interna Pseudo-bridge Red externa
eth1
192.168.0.2/24 --+--[ 192.168.0.1 ]-- 10.0.0.0/8
| [ 10.0.0.1 ]
| eth0
[ 10.0.0.2 ]Si uno quiere que desde la red externa se pueda acceder al computador con IP 10.0.0.2 sin hacer NAT, entonces el proxy_arp es lo más útil. Es importante tener bien hechas las tablas de enrutamiento antes de hacer Proxy ARP.
En este caso, un haría algo como:
echo "1" > /proc/sys/net/ipv4/conf/eth0/proxy_arp
echo "1" > /proc/sys/net/ipv4/conf/eth1/proxy_arp
route add -host 10.0.0.2 dev eth1
Estas líneas hacen que automáticamente, cuando un computador en la red externa intente enviar un paquete al host 10.0.0.2, este sea enrutado a través de el Linux Router. De igual forma, cuando el host 10.0.0.2 quiera enviar un paquete a la Red externa, este será enrutado a través del Linux Router.
La explicación técnica: Cuando la máquina con IP
10.0.0.5 (no aparece en la gráfica) que está en la
Red Externa va a enviar un paquete a la IP
10.0.0.2, primero debe averiguar la
dirección de hardware de la máquina con IP
10.0.0.2, y esto se hace a través de una solicitud de ARP (ARP request) que es enviada usando broadcast en toda la red externa. Esta solicitud le llega al
Linux Router. Si el
Linux Router no conoce la dirección de hardware que corresponde a esta IP, retransmitirá la solicitud a la red interna.
Cuando esto pasa, el host con IP 10.0.0.2 responde a la solicitud diciendo que la IP 10.0.0.2 corresponde a su dirección de hardware (por ejemplo 00:16:76:3C:CA:1E.
Como el Linux Router está configurado para hacer Proxy ARP, y ya sabe que alguien en la red externa está preguntando por el host con IP 10.0.0.2, él responderá a la solicitud hecha por 10.0.0.5, pero responderá diciendo que la IP 10.0.0.2 está en la dirección de hardware que tiene la interfaz eth0 del mismo, la misma que corresponde a la IP 10.0.0.1, digamos que es00:15:26:30:CD:3E
Así, 10.0.0.5 envía el paquete Ethernet a la dirección 00:15:26:30:CD:3E, que corresponde al Linux Router. Entonces el router re-envía el paquete a la dirección 00:16:76:3C:CA:1E, diciendo que el paquete Ethernet debe ser retornado a la dirección de hardware de la interfaz eth1 del router.
Cuando el paquete retorna, se hace el proceso inverso, y es así como funciona el Proxy ARP.
Note que los paquetes son modificados en la capa Ethernet.