通过 DHCP 利用 MAC 地址仿真固定 IP 地址

在很多采用 DHCP 的网络里,能够为 DHCP 客户端提供预订的 IP 地址及主机名称是个可取的做法。要达至这个目的,你可以让 DHCP 服务器按客户端的 MAC 地址派发 IP 地址及主机名称。这个方法会视乎所用的 DHCP 服务器而异,但针对很多内置 DHCP 及 DNS 的家用路由器而言,你可以利用路由器的网页界面。

内置 DHCP 及 DNS 的家用路由器

你可以通过查看客户端上的通讯闸来找出路由器的地址。

# /sbin/route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

在这个样例中,路由器位于 192.168.1.1,因此它的网页界面一般可通过 http://192.168.1.1/ 来访问。它的使用界面普遍会提供一个连结来显示现有连接,而当中多数包括每个客户端的主机名称、IP 地址及 MAC 地址。有了这些数据,你便可以转至利用 MAC 地址保留及派发 IP 地址的页面。详情请查询你的路由器的文档或联机说明。

Linux DHCP 服务器

同一果效亦可通过修改一台 Linux 主机上的 DHCP 服务器而达成。就 CentOS 的 dhcp 组件而言,你可以在 dhcpd.leases 里找出类似上述例子的信息,继而在 dhcpd.conf 内置立一个分段来定义每台主机(在 CentOS 组件内,这两个文件分别是 /var/lib/dhcpd/dhcpd.leases 及 /etc/dhcpd.conf)。详情请参阅 dhcpd 及 dhcpd.conf 的使用说明。你也许可以考虑采用 grouppool 这两个指令。类似的技巧亦适用于其它提供 DHCP 服务器的软件。

dhcpd.leases

lease 192.168.0.249 {
  starts 3 2010/11/10 21:46:35;
  ends 4 2010/11/11 03:46:35;
  tstp 4 2010/11/11 03:46:35;
  binding state free;
  hardware ethernet 00:01:08:00:ad:33;
}

dhcpd.conf

host myhost {
  hardware ethernet 00:01:08:00:ad:33;
  fixed-address 192.168.0.249;
  option host-name "myhost";
}


这页的英文版由 PhilSchaffner 创建及维护。欢迎其它 Wiki 贡献者作出更正、添加或修改。

Translation of revision 4

zh/TipsAndTricks/EmulateFixedAddressByDHCP (last edited 2011-04-30 15:42:45 by TimothyLee)