¿Utilizar Docker para crear un servidor dhcp en la LAN (sin servicio dhcp)?
sudo docker pull networkboot/dhcpd
2 La topología de LAN probada es la siguiente: h es el servidor DHCP y los conmutadores ovs s1, s2 y s3 son. conectado a un host A esperando que se le asigne una dirección IP.
3. El servidor DHCP está conectado a través de un par de pares expuestos en el espacio de nombres raíz, como se muestra a continuación
3.1, genera los conmutadores s1, s2, s3
sudo ovs-vsctl add-br s1sudo ovs-vsctl add-br s2sudo ovs-vsctl add-br s3
3.2, cree un par veth conectado al servidor DHCP.
2. Cree un par veth de v1-v2
sudo ip link add v1 tipo veth peer name v2
3.3 **up
sudo ip link set. dev v1 upsudo ip link set dev v2 up
3.4 Configurar la IP y máscara de subred de v1
sudo ifconfig v1 192.168.1.254 netmask 255.255.255.0
3.5 Genere un servidor DHCP para monitorear v1 y móntelo en la carpeta de datos local. Solo está el archivo dhcpd.conf en los datos
sudo docker run -it \--rm --net host \--. init \--name =dhcpServer1 \-v ~/emxbook/docker-dhcpd/data:/data \ networkboot/dhcpd v1
dhcpd.conf
subred 192.168.1.0 máscara de red 255.255 .255.0 {opción de enrutadores 192.168.1.1; opción de máscara de subred 255.255 .255.0; opción de nombre de dominio "emx.local"; opción de servidores de nombre de dominio 8.8.8.8;
3.5. Conecte v2 al conmutador
sudo ovs-vsctl add-port s1 v2
3.6 Conecte los conmutadores s1, s2 y s3 entre sí
sudo ovs-vsctl ADD-PORT S1 S1Sudo OVS-VSCTL SET Interfaz S1P1 Tipo = PatchSudo OVS-VSCTL SETRFACE S1PTIONS: Peer = S2P1Sudo OVS-PORT S2 OVS-VSCTL SET Interfaz S2P1 Tipo = PatchSudo OVS-VSCTL SET Interfaz S2P1 Opciones: peer=s1p1sudo ovs-vsctl add-port s1 s1p2sudo ovs-vsctl set Interfaz s1p2 type=patchsudo ovs-vsctl set Opciones de interfaz s1p2: peer=s3p1sudo ovs-vsctl add-port s3 s3p1sudo ovs-vsctl set Interfaz s3p1 type=patchsudo ov s - vsctl establece las opciones de la interfaz s3p1: peer=s1p2
3.7 Cree los hosts h1, h2, h3 y conéctelos al conmutador, donde ubunut: 5 se agrega a las herramientas de red básicas. isc -dhcp-client, recuerde usar --cap-add=NET_ADMIN
sudo docker run -itd --
network=none --name=home
sudo docker run -itd --cap-add=NET_admin network=none --name=h1 --cap-add=NET_ADMIN ubuntu:5sudo docker run - itd --network=none --name=h3 --cap-add=NET_ADMIN ubuntu:5sudo ovs-docker add-port s1 eth1 h1sudo ovs-docker add-port s2 eth1 h2sudo ovs-docker add -port s3 eth1 h3 p>
3.8. Puedes usar float-light para controlar los interruptores s1, s2, s3 (opcional)
sudo ovs-vsctl set-controller s1 tcp: 127.0.0.1: 6653sudo ovs-vsctl set. - controlador s2 tcp: 127.0.0.1: 6653sudo ovs-vsctl set-controller s3 tcp: 127.0.0.1: 6653
9.1: 6653
4. Utilice dhclient eht1 para solicitar DHCP servidor
4.1. Antes de solicitar IP
4.2 Solicitar IP (interfaz del lado del servidor)
4.3 Después de solicitar IP, h1(192.168.1.38. ):
De manera similar, h2(192.168.1.39):
h3(192.168.1.40):
5. Prueba
5.1 , h1 ping h2 (192.168 .1.39):
5.2. h2 ping h3 (192.168.1.40):
6. Diagrama de topología final, topología después de la asignación de IP: servidor DHCP (192.168 .1.6), h1 (192.168.1.38), h2 (192.168.1.39), h3 (192.168.1.40)
7. Referencia de resumen de código
sudo ovs-vsctl add-br s1sudo ovs-vsctl add -br s2sudo ovs-vsctl add-br s3sudo ip link add v1 tipo veth nombre de par v2sudo ip link set dev v1 upsudo ip link set dev v2 upsudo ifconfig v1 192.168.1.6 netmask 255.255.255.0sudo docker run -it \--rm - -net host \--init \--name=dhcpServer \-v ~/emxbook/docker-dhcpd/data:/data \networkboot/dhcpd v1sudo ovs-vsctl add-port s1 v2sudo ovs-vsctl add -port s1 s1p1sudo ovs -vsctl set Interfaz s1p1 tipo=patchsudo ovs-vsctl set Opciones de interfaz s1p1:
peer=s2p1sudo ovs-vsctl add-port s2 s2p1sudo ovs-vsctl set Interfaz s2p1 type=patchsudo ovs-vsctl set Opciones de interfaz s2p1: peer=s1p1sudo ovs-vsctl add-port s1 s1p2sudo ovs-vsctl set Interfaz s1p2 type=patchsudo ovs - vsctl set Opciones de interfaz s1p2: peer=s3p1sudo ovs-vsctl add-port s3 s3p1sudo ovs-vsctl set Interfaz s3p1 tipo=patchsudo ovs-vsctl set Opciones de interfaz s3p1: peer=s1p2sudo docker run -itd --network=none --name= h1 --cap-add=NET_ADMIN ubuntu:5sudo docker run -itd -- --network=none --name=h1 --cap-add=NET_ADMIN ubuntu:5sudo ovs-docker add-port s1 eth1 h1sudo ovs-docker add -port s2 eth1 h2sudo ovs-docker add-port s3 eth1 h3sudo ovs-vsctl set-controller s1 tcp:127.0.0.0.1:6653sudo ovs -vsctl set-controller s2 tcp:127.0.0.1:6653sudo ovs-vsctl set-controller s3 tcp:127.0.0.1:6653