在一个局域网中(没有dhcp服务)用docker搭建一个dhcp服务器?
1、使用的镜像
sudo docker pull networkboot/dhcpd
2、测试的局域网拓扑结构如下:h为 DHCP服务器,ovs交换机s1、s2、s3各连着一台等待分配ip地址的主机。
3、h DHCP服务器通过一对暴露于root namespace 的veth pair相连,具体操作如下
31、生成交换机s1、s2、s3
sudo ovs-vsctl add-br s1sudo ovs-vsctl add-br s2sudo ovs-vsctl add-br s3
32、创建veth pair 即 v1-v2
sudo ip link add v1 type veth peer name v2
33、up
sudo ip link set dev v1 upsudo ip link set dev v2 up
34、给v1配置ip及子网掩码
sudo ifconfig v1 1921681254 netmask 2552552550
35、生成DHCP服务器,监听v1 ,挂载本地data文件夹,data里面中只有dhcpdconf文件
sudo docker run -it \--rm --net host \--init \--name=dhcpServer1 \-v ~/emxbook/docker-dhcpd/data:/data \networkboot/dhcpd v1
dhcpdconf
subnet 19216810 netmask 2552552550 {option routers 19216811;option subnet-mask 2552552550;option domain-name "emxlocal";option domain-name-servers 8888;range 19216812 1921681100;}
35、将v2连接到交换机上
sudo ovs-vsctl add-port s1 v2
36、交换机s1、s2、s3彼此相连
sudo ovs-vsctl add-port s1 s1p1sudo ovs-vsctl set Interface s1p1 type=patchsudo ovs-vsctl set Interface s1p1 options:peer=s2p1sudo ovs-vsctl add-port s2 s2p1sudo ovs-vsctl set Interface s2p1 type=patchsudo ovs-vsctl set Interface s2p1 options:peer=s1p1sudo ovs-vsctl add-port s1 s1p2sudo ovs-vsctl set Interface s1p2 type=patchsudo ovs-vsctl set Interface s1p2 options:peer=s3p1sudo ovs-vsctl add-port s3 s3p1sudo ovs-vsctl set Interface s3p1 type=patchsudo ovs-vsctl set Interface s3p1 options:peer=s1p2
37、创建主机h1、h2、h3,并将其连接到交换机上,其中ubunut:5是添加了基本net-tools、isc-dhcp-client,创建的时候记得使用 --cap-add=NET_ADMIN
sudo docker run -itd --network=none --name=h1 --cap-add=NET_ADMIN ubuntu:5sudo docker run -itd --network=none --name=h2 --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
38、可以使用floot-light控制交换机s1、s2、s3交换机(选择)
sudo ovs-vsctl set-controller s1 tcp:127001:6653sudo ovs-vsctl set-controller s2 tcp:127001:6653sudo ovs-vsctl set-controller s3 tcp:127001:6653
4、使用dhclient eht1 向DHCP服务器申请
41、申请ip之前
42、申请ip(服务器端界面)
43申请ip之后,h1(192168138):
同理,h2(192168139):
h3(192168140):
5、测试
51、h1 ping h2(192168139):
52、h2 ping h3(192168140):
6、最后拓扑结构图,ip分配之后的拓扑结构:DHCP服务器(19216816)、h1(192168138)、h2(192168139)、h3(192168140)
7、代码汇总参考
sudo ovs-vsctl add-br s1sudo ovs-vsctl add-br s2sudo ovs-vsctl add-br s3sudo ip link add v1 type veth peer name v2sudo ip link set dev v1 upsudo ip link set dev v2 upsudo ifconfig v1 19216816 netmask 2552552550sudo 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 Interface s1p1 type=patchsudo ovs-vsctl set Interface s1p1 options:peer=s2p1sudo ovs-vsctl add-port s2 s2p1sudo ovs-vsctl set Interface s2p1 type=patchsudo ovs-vsctl set Interface s2p1 options:peer=s1p1sudo ovs-vsctl add-port s1 s1p2sudo ovs-vsctl set Interface s1p2 type=patchsudo ovs-vsctl set Interface s1p2 options:peer=s3p1sudo ovs-vsctl add-port s3 s3p1sudo ovs-vsctl set Interface s3p1 type=patchsudo ovs-vsctl set Interface s3p1 options:peer=s1p2sudo docker run -itd --network=none --name=h1 --cap-add=NET_ADMIN ubuntu:5sudo docker run -itd --network=none --name=h2 --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 h3sudo ovs-vsctl set-controller s1 tcp:127001:6653sudo ovs-vsctl set-controller s2 tcp:127001:6653sudo ovs-vsctl set-controller s3 tcp:127001:6653
1、鼠标右键点击电脑上的网络图标,在弹出的菜单中选择“属性”。
2、打开网络和共享中心之后,点击里面的“本地连接”。
3、打开本地连接状态之后,点击底下的“属性”。
4、打开本地连接属性之后,选择“Internet协议版本4(TCP/IPV4)”来点击底下的“属性”。
5、打开Internet协议版本4(TCP/IPV4)属性之后,确定勾选“自动获得IP地址”和“自动获得DNS服务器地址”。
6、这样一来网页就会正常显示,即可解决网络连接出现问题(DHCP未开启)了。
基本无线局域网故障大集合
如果你的无线网络出现了问题,其原因可能是来自各个方面。当你试图解决这一问题时,可能会涉及硬件厂商以及网络配置等诸多因素。当一个无线网络发生问题时,你应该首先从几个关键问题入手进行排错。一些硬件的问题会导致网络错误,同时错误的配置也会导致网络不能正常工作。在这篇文章中,我们将介绍一些无线网络排错的方法和技巧。(本文针对的是基本的无线网络,而不是特殊的无线网络)
硬件排错
当只有一个接入点以及一个无线客户端出现连接问题时,我们可能会很快的找到出有问题的客户端。但是当网络非常大时,找出问题的所在可能就不是那么容易了。
在大型的无线网络环境中,如果有些用户无法连接网络,而另一些客户却没有任何问题,那么很有可能是众多接入点中的某个出现了故障。一般来说,通过察看有网络问题的客户端的物理位置,你就能大概判断出是哪个接入点出现问题。
当所有客户都无法连接网络时,问题可能来自多方面。如果你的网络只使用了一个接入点,那么这个接入点可能有硬件问题或者配置有错误。另外,也有可能是由于无线电干扰过于强烈,或者是无线接入点与有线网络间的连接出现了问题。
检查接入点的可连接性
要确定无法连接网络问题的原因,首先需要检测一下网络环境中的电脑是否能正常连接无线接入点。简单的检测方法是在你的有线网络中的一台电脑中打开命令行模式,然后ping无线接入点的IP地址,如果无线接入点响应了这个ping命令,那么证明有线网络中的电脑可以正常连接到无线接入点。如果无线接入点没有响应,有可能是电脑与无线接入点间的无线连接出现问题,或者是无线接入点本身出现了故障。
要确定到底是什么问题,你可以尝试从无线客户端ping无线接入点的IP地址,如果成功,说明刚才那台电脑的网络连接部分可能出现了问题,比如网线损坏。
如果无线客户端无法ping到无线接入点,那么证明无线接入点本身工作异常。你可以将其重新启动,等待大约五分钟后再通过有线网络中的电脑和无线客户端,利用ping命令察看它的连接性。
如果从这两方面ping无线接入点依然没有响应,那么证明无线接入点已经损坏或者配置错误。此时你可以将这个可能损坏了的无线接入点通过一段可用的网线连接到一个正常工作的网络,你还需要检查它的TCP/IP配置。之后,再次在有线网络客户端ping这个无线接入点,如果依然失败,则表示这个无线接入点已经损坏。这时你就应该更换新的无线接入点了。
配置问题
无线网络设备本身的质量一般还是可以信任的,因此最大的问题根源一般来自设备的配置上,而不是硬件本身。知道了这一点,我们下面就来看看几种常见的由于错误配置而导致的网络连接故障。
测试信号强度
如果你可以通过网线直接ping到无线接入点,而不能通过无线方式ping到它,那么基本可以认定无线接入点的故障只是暂时的。如果经过调试,问题还没有解决,那么你可以检测一下接入点的信号强度。虽然对于大多数网管来说,还没有一个标准的测量无线信号强度的方法,但是大多数无线网卡厂商都会在网卡上包含某种测量信号强度的机制。
试试改变频道
如果经过测试,你发现信号强度很弱,但是最近又没有做过搬移改动,那么可以试着改变无线接入点的频道并通过一台无线终端检验信号是否有所加强。由于在所有的无线终端上修改连接频道是一项不小的工程,因此你首先应该在一台无线终端上测试,证明确实有效后才可以大面积实施。记住,有时候无线网络的故障可能由于某个员工挂断手机或者关闭微波炉而突然好转。
检验SSID
不久前,我带着我的笔记本去朋友家工作。由于朋友家也采用了无线网络,因此我决定连接到他的网络。回到家后,我并没有再用这台笔记本。过了两周,当我再打开笔记本后,发现它无法连接到我的无线网络了。很快我就找到了问题的根源:我忘记重新将服务区标识符(SSID,Service Set Identifier )修改回我自己的网络标识了。记住,如果你的SSID没有正确的指定网络,那么你的笔记本根本不会ping到无线接入点,它会忽略无线接入点的存在,按给定的SSID来搜索对应的接入点。
检验WEP密钥
检查WEP加密设置。如果WEP设置错误,那么你也无法从无线终端ping到无线接入点。不同厂商的无线网卡和接入点需要你指定不同的WEP密钥。比如,有的无线网卡需要你输入十六进制格式的密钥,而另一些则需要你输入十进制的密钥。同样,有些厂商采用的是40位和64位加密,而另一些厂商则只支持128位加密方式。
要让WEP正常工作,所有的无线客户端和接入点都必须正确匹配。很多时候,虽然无线客户端看上去已经正确的配置了WEP,但是依然无法和无线接入点通信。在面对这种情况时,我一般都会将无线接入点恢复到出厂状态,然后重新输入WEP配置信息,并启动WEP功能。
棘手的WEP配置问题
到现在为止,最常见的与配置有关的问题就是有关使用WEP协议。而且WEP带来的问题也相当棘手,因为由于WEP不匹配所产生的问题显现的症状和很多严重的问题非常相似。比如,如果WEP配置错误,那么无线客户端将无法从无线网络的DHCP服务器那里获得IP地址(就算是无线接入点自带DHCP功能也不行)。如果无线客户端使用了静态IP地址,那么它也无法ping到无线接入点的IP地址,这经常会让人误以为网络没有连接。
判断到底是WEP配置错误还是网络硬件故障的基本技巧是利用无线网卡驱动和操作系统内置的诊断功能。举个例子,我的一个笔记本采用Windows XP系统,并配备了Linksys的无线网卡。当我将鼠标移动到系统任务栏的无线网络图标时,会有网络连接信息摘要浮现出来。当连接频道和SSID设置正确后,就算WEP设置错误,你也可以连接到无线接入点。此时,从任务栏你会看到连接信号的强度为零。不论WEP是否设置正确,Linksys网卡都会显示出连接信号强度。由此你也可以知道网络确实是已经连接上了,虽然有可能无法ping到无线接入点。
如果你右键点击任务栏中的无线网络图标,并在弹出菜单中选择查看可用的无线网络(View Available Wireless Networks)命令,之后你会看到无线网络连接(Wireless Network Connection)对话窗。这个对话窗会显示出当前频道内的全部无线网络的SSID号,包括你没有连接上的网络。因此如果你发现你的无线网络号在列表中,但是你看起来不能正常连接,那么你可以放心,自己的网络连接并没有什么问题,问题是出在配置上。
注意:无线网络连接对话框还提供了一个可以输入WEP密钥的区域,当你试图连接某个无线网络时,可以输入该网络的WEP密钥。曾经有很多次,我无法正确的连接到目的网络,都是通过在这个区域手动输入WEP密钥而获得成功的。一般在这里输入WEP密钥后,网络会马上连接成功。
DHCP 配置问题
另一个让你无法成功的访问无线网络的原因可能是由DHCP配置错误引起的。网络中的DHCP服务器可以说是你能否正常使用无线网络的一个关键因素。
很多新款的无线接入点都自带DHCP服务器功能。一般来说,这些DHCP服务器都会将1921680x这个地址段分配给无线客户端。而且DHCP接入点也不会接受不是自己分配的IP地址的连接请求。这意味着具有静态IP地址的无线客户端或者从其它DHCP服务器获取IP地址的客户端有可能无法正常连接到这个接入点。
当我第一次安装了带有DHCP服务的无线接入点时,我允许它为我的无线终端分配IP地址。然而我的网络的IP地址段是147100xy,这意味着虽然无线客户端可以连接到无线接入点并得到一个IP地址,但笔记本将无法与有线网络内的其它电脑通信,因为它们属于不同的地址段。对于这种情况,有两种解决方法:
禁用接入点的DHCP服务,并让无线客户端从网络内标准的DHCP服务器处获取IP地址。
修改DHCP服务的地址范围,使它适用于你现有的网络。
这两种方法都是可行的,不过具体还要看你的无线接入点的固件功能。很多无线接入点都允许你采用其中一种方法,而能够支持这两种方法的无线接入点很少。
多个接入点的问题
设想一下假如有两个无线接入点同时按照默认方式工作。在这种情况下,每个接入点都会为无线客户端分配一个1921680X的IP地址。由此产生的问题是,两个无线接入点并不能区分哪个IP是自己分配的,哪个又是另一个接入点分配的。因此网络中早晚会产生IP地址冲突的问题。要解决这个问题,你应该在每个接入点上设定不同的IP地址分配范围,以防止地址重叠。
注意客户列表
有些接入点带有客户列表,只有列表中的终端客户才可以访问接入点,因此这也有可能是网络问题的根源。这个列表记录了所有可以访问接入点的无线终端的MAC地址,从安全的角度来说,它可以防止那些未经认证的用户连接到你的网络。通常这个功能是不被激活的,但是,如果用户不小心激活了客户列表,这时由于列表中并没有保存任何MAC地址,因此不管其他的如何设置,所有的无线客户端都无法连接到这个接入点了。
我也遇见过当网络中存在多个接入点时,由于设置了用户列表而引起的问题。有些管理员以为只要在一个接入点上设置了客户列表,那么这些认证的客户就可以访问网络的任何接入点了。其实不然,如果你希望接入点激活客户列表功能,以提高安全性,那么应该在网络中的每个接入点上进行相同的设置,这样经过确认的用户就可以连接网络的任何一个接入点,而未经确认的用户则无法连接到任何一个接入点。
一定要记住
错误一:0x80074E6F 指定的服务器已在目录服务中
造成此错误的原因是DHCP服务器没有正常卸载,
解决方法
1卸载DHCP服务器
2重启服务器
3打开adsieditmsc
4展开到 CN=NetServices
5删除CN=Your ServerName
6重新安装DHCP服务器
错误二:0x80074E54 作用域参数不正确
解决方法
1卸载DHCP服务器
2重启服务器
3删除C:\Windows\System32下的DHCP目录
4重新安装DHCP服务器
0条评论