如何在dhcpd中通过MAC地址分配IP


10

如何使用dhcpd分配特定于Mac地址的IP地址?

到目前为止,我已经尝试过

host blah { hardware ethernet <mac address>; fixed-address <ip address>;}

在我的dhcpd.conf中。但是在重新启动dhcpd并使用了有问题的mac地址的机器后,我再次获得了一个随机IP。

Answers:


8

这是非常好的格式-我使用的格式完全相同。仅我在行尾添加了注释(除此之外)。这是工作摘录dhcpd.conf

host wrt45gl-etika  { hardware ethernet 00:21:29:a1:c3:a1; fixed-address ---.219.43.135; } # MSIE routeris WRT54GL

正如@Christoph提到的那样,可能声明了全局选项(或使用了服务默认值),这可能会影响IP分配方式/可能会覆盖它。

dhcp3-server(v3)迁移到isc-dhcp-server(v4)时,我需要添加一些强制性选项并重写一些声明。但是配置文件的结构仍然很简单:

#
# Sample configuration file for ISC dhcpd for Debian
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)

ddns-update-style none;

# option definitions common to all supported networks...

option domain-name "mf.vu.---";
option domain-name-servers ---.219.80.11, ---.219.80.2, ---.171.22.22;

default-lease-time 2678400;
max-lease-time 2678400;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.

authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).

log-facility local7;


# The subnet that shares this physical network

shared-network TOTAL_MF {
 server-name "letta.mf.vu.--";

 subnet ---.219.43.128 netmask 255.255.255.192 {
  option routers ---.219.43.190;
  option broadcast-address ---.219.43.191;

  group {
    host wrt45gl-etika  { hardware ethernet 00:21:29:a1:c3:a1; fixed-address ---.219.43.135; } # MSIE routeris WRT54GL
    # ...
    host saulute        { hardware ethernet 00:21:28:10:f4:16; fixed-address ---.219.43.189;  } # Virtual Qemu PC NIC
  }
 }

 subnet 172.16.43.128 netmask 255.255.255.192 {
  option routers 172.16.43.129;
  option broadcast-address 172.16.43.191;

  group{
    host ligo           { hardware ethernet 08:00:20:7A:E2:70; fixed-address 172.16.43.179;   } #a225 ligo
    # ...
    host vumfsa2        { hardware ethernet 00:80:48:8d:12:f0; fixed-address 172.16.43.140;   } # 118
  }
 }
}

那里我没有使用pool,没有range声明。只有两个子网声明(一个后跟另一个)。

我没有在此处声明的主机分配任何随机IP(与MAC绑定)。


我可以使用没有子网的主机吗?我需要将广播设置为与ip本身相同,也需要将netmask设置为255.255.255.255。我还需要一些post-up route addpre-down route del工作。我可以还是应该在这里做所有这些?
钱陈

@ElgsQianChen:我认为这与主题无关。
saulius2

@QianChen,您是否已设法将IP分配为子网为= 255.255.255.255
saulius2

2

dhcpd.conf手册页中的任何地方都没有明确提及(我现在无法尝试),但我一直认为每行只允许一个语句。

host blah { 
    hardware ethernet <mac address>; 
    fixed-address <ip address>;
}

2

我不知道您的dhcpd.conf,但是如果您有 allow unknown-clients声明,则应添加allow known-clients

如果我没记错的话,固定IP不应在DHCP服务器分发给客户端的范围内。

当主机具有来自同一DHCP服务器的旧地址时,服务器可以分发旧租约,只要该租约有效即可,即租约时间未到期。

如果您可以提供更多配置,那将会有所帮助。


实际上,我认为是正确的,您可以在硬件标识符上创建命名客户端的组或子类,然后为它们提供一个拒绝未知的地址池(如果需要,还可以给它们提供一个单独的地址池以允许未知。)
Quadruplebucky

-3

您那里的冒号太多:

在dhcpd.conf手册页中:

         host ncd1 { hardware ethernet 0:c0:c3:49:2b:57; }

2
这也会截断此固定IP声明,因此这实际上无法回答OP的问题。
麦哲伦2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.