dhcp服务器怎么启用 如何利用具备双网口之DHCP+DNS+Hyper
温馨提示:这篇文章已超过621天没有更新,请注意相关的内容是否还可用!
首先描述网络,网关是一个NETGEAR Nighthawk R8500路由器其地址是10.0.0.1,同一子网的10.0.0.254是这台服务器。
服务器上启用了Hyper-V服务以运行一个Linux虚拟机(地址:10.0.0.253),其上8080端口有一个网站(用frp内网穿透软件将虚拟机的此端口映射到了一台阿里云公网服务器的同号端口——这样便可以公网访问这台服务器上虚拟机中的网站啦。可惜不能映射到80端口,不过不然阿里云就只剩卖带宽的生意了;))。
在阿里云DNS中给网站配置了域名指向上述阿里云服务器,而在内网使用阿里云DNS来访问网站则是没必要的曲线救国——哪里需要阿里云公网服务器中转,直接内网访问上述Linux虚拟机不就得了。于是需要在此服务器上启用DNS服务并在其中将上述域名指向10.0.0.253。
因为此子网的设备数量很容易超过256,而一般路由器分配不了超过256个IP地址,所以必须在此服务器上启用HDCP服务以分配IP地址。恰好令HDCP服务同时将客户端设备的DNS服务器地址配置为10.0.0.254,以实现内网客户端通过域名直接访问虚拟机中的网站。
现有一台工作站,由于路由器和交换机上的网口已经全被占用,必须通过服务器的第二个网口联网。
拓补图如下:
一般来说只要桥接服务器的两个网络接口就可以啦,服务器的IP地址在新生成的"Network Bridge"上配置,在两个网口上将不可配置IP地址。如果有更多的网口,将它们全部加入这个网桥,那么服务器俨然就变成了一个"Managed Switch"。
可是就是因为依之运行Linux虚拟机的Hyper-V服务,我必须建立虚拟交换机,而这使得桥接不可能。
有必要先解释一下Hyper-V虚拟交换机(这里仅就External类型的而非Internal或Private类型的展开讨论):它依托于实际网口建立,建立后在实际网口上将不可配置IP地址,服务器也成为一个"Managed Switch",实际网口相当于此"Managed Switch"的对外连接端口,服务器的IP地址在虚拟交换机上配置,一个Hyper-V服务器可以有至多实际网口数个虚拟交换机;而Hyper-V虚拟机的虚拟网卡可以连接至虚拟交换机并有自己的IP配置,一个虚拟机可以有多张虚拟网卡。
下图是一个有两个虚拟交换机并且其上运行着三个虚拟机的双网口Hyper-V服务器的例子,两网口接到不同子网:
接着讲为什么在服务器上建立了虚拟交换机就无法桥接。如下图,我依托em1建了New Virtual Switch,依托em2建了New Virtual Switch 2,实验发现桥接两个Virtual Switch虽然显示成功,但是并未出现桥接的效果;若只依托em1建New Virtual Switch继而尝试将其跟em2桥接,则根本无法桥接成功。
想想也对,在网络安全问题突出的今天,虚拟机跟宿主机之间的以及虚拟机跟虚拟机之间的访问是必须被严格控制的,Virtual Switch与其他网络接口之间存在天然的隔离大概就是微软特意为之,不能桥接在情理之中。
既然不能不用Hyper-V,那么只能考虑桥接之外的方案了,这便是RRAS (Routing and Remote Access Service),即路由和远程访问服务。我们启用它的NAT功能使服务器成为一台软路由,把em1 (New Virtual Switch)当作WAN口dhcp服务器怎么启用,em2 (New Virtual Switch 2)当作LAN口。两Virtual Switch分别配置如下:
在em1和em2上都绑定了DNS和DHCP服务,结果之前提到的工作站在192.168.1.0/24子网可以上网了,自定义DNS也生效,然而在10.0.0.0/24子网的所有设备都访问不到DNS服务了!就是说DNS服务在192.168.1.1上正常,而在10.0.0.254上挂了!
初步怀疑是微软的DNS服务有问题,于是改用Windows版的BIND 9,发现问题一模一样。难道是DNS服务同时为两个子网服务会出现问题?于是在宿主Windows里用微软的DNS服务或BIND 9为10.0.0.0/24服务,在前述运行有网站的虚拟机中运行Linux版的BIND 9为192.168.1.0/24子网服务(在这儿DNS服务器地址是10.0.0.253),结果还是10.0.0.0/24子网的DNS服务异常。忘记测试让虚拟机中Linux版的BIND 9同时为两个子网服务了,如果此情况下一切正常,那么说明宿主机上的RRAS会影响宿主机上的DNS服务为WAN口所在子网提供服务,如果此情况下还是只有192.168.1.0/24子网的DNS服务正常,那么说明宿主机上的RRAS会影响宿主机以及虚拟机上的DNS服务为WAN口所在子网提供服务。
总之,要避免在宿主机里同时启用RRAS和DNS或者避免在宿主机里开启RRAS。也许再建一个虚拟机,这个运行Windows,在其中同时启用RRAS和DNS(此时宿主机仅作为Hyper-V平台)不会有问题,但是这个我不试啦。我采取最保险的方案:新建一个Windows虚拟机在其中运行RRASdhcp服务器怎么启用,把DNS和DHCP服务留在宿主Windows操作系统。结果成功,两个子网的客户端都能上网,而且自定义DNS生效。此时网络拓扑如下:
服务器细节如下,其中宿主机上开启了DNS和DHCP服务,Windows虚拟机中开启了RRAS的NAT功能:
服务器上关于10.0.0.0/16和192.168.1.0/24两张子网的DHCP配置分别如下:
至于之前出现的10.0.0.0/16子网无法访问DNS服务,应该是RRAS跟Hyper-V共同作用的结果,具体原因有待分析,很奇怪,别的服务如HTTP、FTP还有DHCP都没受到影响,唯独DNS出问题。