Me gustaría configurar tres interfaces de red virtuales ( veth
) que pueden comunicarse entre sí. Para simular un clúster de tres nodos, cada programa se une a una veth
interfaz. Me gustaría hacerlo sin LXC si es posible.
Intenté usar:
- Creó tres
veth
pares:sudo ip link add type veth
- Creado un puente
sudo brctl addbr br0
- Se agregó uno de cada par al puente:
sudo brctl addif br0 veth1
sudo brctl addif br0 veth3
sudo brctl addif br0 veth5
- Configurado las interfaces:
sudo ifconfig veth0 10.0.0.201 netmask 255.255.255.0 up
sudo ifconfig veth2 10.0.0.202 netmask 255.255.255.0 up
sudo ifconfig veth4 10.0.0.203 netmask 255.255.255.0 up
Luego verifiqué si funciona usando: ping -I veth0 10.0.0.202
pero no :(
El añadí direcciones IP al veth1
, veth3
, veth5
y br0
las interfaces en el intervalo 10.0.1.x / 24. Pero eso no ayuda.
¿Algunas ideas? o una guía, todo lo que encuentro sobre cómo usarlo con LXC. ¿O estoy intentando algo que no es posible?
linux
networking
Reinder
fuente
fuente
br0
sí?Respuestas:
Para que veth funcione, un extremo del túnel debe ser puenteado con otra interfaz. Como desea mantener todo esto virtual, puede conectar el extremo vm1 del túnel (vm2 es el otro extremo del túnel) con una interfaz virtual de tipo tap, en un puente llamado brm. Ahora le da direcciones IP a brm y vm2 (10.0.0.1 y 10.0.0.2, respectivamente), habilite el reenvío de IPv4 mediante
active todas las interfaces y agregue una ruta que indique al núcleo cómo llegar a las direcciones IP 10.0.0.0/24. Eso es todo.
Si desea crear más pares, repita los pasos a continuación con diferentes subredes, por ejemplo, 10.0.1.0/24, 10.0.2.0/24, etc. Dado que habilitó el reenvío de IPv4 y agregó las rutas apropiadas a la tabla de enrutamiento del núcleo, podrán comunicarse entre sí de inmediato.
Además, recuerde que la mayoría de los comandos que está utilizando (brctl, ifconfig, ...) son obsoletos: la suite iproute2 tiene comandos para hacer todo esto, vea a continuación mi uso del comando ip .
Esta es una secuencia correcta de comandos para el uso de interfaces de tipo veth :
primero cree todas las interfaces requeridas,
Tenga en cuenta que no mencionamos brm y vm2 porque tenemos que asignarles direcciones IP, pero mencionamos tapm y vm1, lo cual es necesario para incluirlos en el puente brm. Ahora esclavice las interfaces tapm y vm1 al bridge brm,
ahora dé direcciones al puente y a la interfaz veth restante vm2,
ahora trae vm2 y brm up,
No es necesario agregar la ruta a la subred 10.0.0.0/24 explícitamente, se genera automáticamente, puede verificar con ip route show . Esto resulta en
También puede hacerlo al revés, es decir , desde vm2 de regreso a brm:
La aplicación más útil de las NIC del tipo veth es un espacio de nombres de red , que es lo que se usa en los contenedores de Linux (LXC). Empiezas uno llamado nnsm de la siguiente manera
luego le transferimos vm2,
Dotamos el nuevo espacio de nombres de red con una interfaz lo (absolutamente necesaria),
permitimos NATting en la máquina principal,
(si está conectado a Internet a través de eth0 , de lo contrario cambie en consecuencia), inicie un shell en el nuevo espacio de nombres de red,
y ahora, si comienza a escribir en el nuevo xterm, encontrará que está en una máquina virtual separada con la dirección IP 10.0.0.2, pero puede acceder a Internet. La ventaja de esto es que el nuevo espacio de nombres de red tiene su propia pila, lo que significa que, por ejemplo, puede iniciar una VPN mientras el resto de su PC no está en la VPN. Este es el artilugio en el que se basan los LXC.
EDITAR:
Cometí un error, trayendo la interfaz vm2 lo baja y borra su dirección. Por lo tanto, debe agregar estos comandos, desde dentro de xterm:
y ahora puedes navegar desde xterm.
Los
ip
comandos también se pueden hacer antes de xterm confuente
Aquí hay una configuración de puente de 5 nodos que utilizo que funciona. Debería poder usar ifconfig para asignar direcciones a las interfaces NodeX
y para limpiar
fuente