我有一个IP地址为123.123.123.1/24的dedi,问题是网关地址:111.111.111.254,它在完全不同的子网上。 我已经设置了桥接和KVM虚拟化。
主机节点上的/etc/dhcpd.conf。
subnet 0.0.0.0 netmask 0.0.0.0 { authoritative; default-lease-time 21600000; max-lease-time 432000000; } ddns-update-style ad-hoc; host kvm111.0 { hardware ethernet 02:00:00:ce:fd:ab; option routers 111.111.111.254; option subnet-mask 255.255.255.0; fixed-address 123.123.123.2; option domain-name-servers 8.8.8.8,8.8.4.4; }
然后,在Windows操作系统和dhcp上,在该HWID上设置KVM虚拟机(VM)。 它运作良好。 Windows虚拟机得到了123.123.123.2 IP与在111.111.111.254的网关。
但是当我把虚拟机的操作系统改为Debian 6时,它不起作用。 我login到虚拟机,发现网关没有分配。 当我inputroute add default gw 111.111.111.254的答案是:
SIOADDCART: no such process
这是因为网关与分配的IP地址在不同的子网中。 所以我不得不在VM上这样做:
route add 111.111.111.254/32 dev eth0
路由添加默认gw 111.111.111.254
然后它会工作。 但是因为我想通过主机节点进行自动化(不是通过VM手动执行),所以我必须通过/etc/dhcpd.conf
有谁知道如何通过/etc/dhcpd.conf 路由添加111.111.111.254/32 dev eth0 ?
答案是无类别静态路由(RFC3442) 。 在isc dhcp服务器中,您必须手动指定选项。
本网站简明扼要地说明了如何以适用于Windows和Linux客户端的方式进行操作。
这是缩写版本:
将以下内容添加到顶部的dhcpd.conf中
option rfc3442-classless-static-routes code 121 = array of integer 8; option ms-classless-static-routes code 249 = array of integer 8;
在相应的子网块中添加以下两个选项行
option rfc3442-classless-static-routes 32, 111, 111, 111, 254, 0, 0, 0, 0, 111, 111, 111, 254; option ms-classless-static-routes 32, 111, 111, 111, 254, 0, 0, 0, 0, 111, 111, 111, 254;
这应该为111.111.111.254创build一个静态路由,与dhcp分配的地址在链路上,并保持默认路由器111.111.111.254。 特殊路由器值0.0.0.0表示在链路上。 rfc声明客户端不需要实现无类别静态路由,但是windows通过他们的ms选项,linux的dhclient(经过testing的debian7,rhel6.4)以及我所有的IPMI和PXE客户端都可以。 你应该testing,以确保它与您的客户,但我相当有信心,它将工作。 dhclient可以通过一个退出钩子来解释选项121 ,如果它不支持的话。
最糟糕的情况是,在主机节点上,可以添加局域网中的IP(在您的示例中为123.123.123.254),并通知客户端将其用作默认网关。