Red de conocimiento informático - Material del sitio web - ¿Utilizar Docker para crear un servidor dhcp en la LAN (sin servicio dhcp)?

¿Utilizar Docker para crear un servidor dhcp en la LAN (sin servicio dhcp)?

1. La imagen utilizada

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

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