在ubuntu服务器16.04上使用isc-dhcp-client,有一个选项听起来应该做我想要的:
send dhcp-requested-address 10.23.33.254;

当我的dhclient.conf文件中存在此选项时,我的客户端正是我想要的:始终从我的专用网络上的DHCP服务器获取所请求地址的租约,其中DHCP范围是10.23.33.0/24.但是,如果我将计算机连接到请求的地址不在服务器的DHCP地址范围内的网络,则服务器提供不同的地址,而isc-dhcp-client只发送一个NAK,因为它没有被提供请求的地址.

基本上,我想要的是

客户:“你好,我可以拥有10.23.33.254”
服务器:“不,你不能.在这里,有192.168.1.23而不是”
客户:“好的,谢谢”

相反,正在发生的事情是

客户:“你好,有192.168.1.23而不是”
客户:“那不是我想要的.我可以拥有10.23.33.254吗?”
服务器:“不,你不能……”(永远重复这个循环)

任何人都知道我想要的是不可能的,没有写我自己的DHCP客户端?

请改用 lease block.从试验和错误中,dhclient.conf文件中忽略此配置块,但在leases文件中使用(默认为/var/lib/dh​​cp/dhclient.leases,除非用-lf覆盖,就像从NetworkManager运行时一样)

只需构建一个最小的租约文件,该文件具有过期的续订和重新绑定(以避免一些重试)但仍然是未来的过期日期(不会立即忘记它并立即尝试发现而不是请求,并且如果没有则使用此IP DHCP服务器完全回答).保持此文件不变,并在每次运行dhclient之前复制它.

这是一个来自我的stretch-amd64容器的最小文件,只要DHCP服务器(此处为dnsmasq)没有为此客户端设置的其他租约就可以工作.在运行dhclient之前,只需将其复制到租约文件中即可.

lease {
  interface "eth0";
  fixed-address 10.0.3.222;
  renew 0 2000/1/1 00:00:01;
  rebind 0 2000/01/01 00:00:01;
  expire 0 2038/1/1 00:00:01;
}

尝试使用服务器10.0.3.0/24并且不知道此客户端的LAN服务器的局域网:

# dhclient -v eth0
Internet Systems Consortium DHCP Client 4.3.5
copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info,please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/xx:xx:xx:xx:xx:xx
Sending on   LPF/eth0/xx:xx:xx:xx:xx:xx
Sending on   Socket/fallback
DHCPREQUEST of 10.0.3.222 on eth0 to 255.255.255.255 port 67
DHCPACK of 10.0.3.222 from 10.0.3.1
bound to 10.0.3.222 -- renewal in 1486 seconds.

新租约文件/var/lib/dh​​cp/dhclient.leases:

lease {
  interface "eth0";
  fixed-address 10.0.3.222;
  renew 6 2000/01/01 00:00:01;
  rebind 6 2000/01/01 00:00:01;
  expire never;
}
lease {
  interface "eth0";
  fixed-address 10.0.3.222;
  option subnet-mask 255.255.255.0;
  option routers 10.0.3.1;
  option dhcp-lease-time 3600;
  option dhcp-message-type 5;
  option domain-name-servers 10.0.3.1;
  option dhcp-server-identifier 10.0.3.1;
  option dhcp-renewal-time 1800;
  option broadcast-address 10.0.3.255;
  option dhcp-rebinding-time 3150;
  option host-name "stretch-amd64";
  renew 0 2017/10/29 19:57:41;
  rebind 0 2017/10/29 20:24:34;
  expire 0 2017/10/29 20:32:04;
}

在IP范围之外尝试:

Listening on LPF/eth0/xx:xx:xx:xx:xx:xx
Sending on   LPF/eth0/xx:xx:xx:xx:xx:xx
Sending on   Socket/fallback
DHCPREQUEST of 10.0.4.222 on eth0 to 255.255.255.255 port 67
DHCPREQUEST of 10.0.4.222 on eth0 to 255.255.255.255 port 67
DHCPdisCOVER on eth0 to 255.255.255.255 port 67 interval 4
DHCPREQUEST of 10.0.3.249 on eth0 to 255.255.255.255 port 67
DHCPOFFER of 10.0.3.249 from 10.0.3.1
DHCPACK of 10.0.3.249 from 10.0.3.1
bound to 10.0.3.249 -- renewal in 1411 seconds.

这个DHCP服务器似乎没有发送NAK,但无论如何我确信你明白了,它确实有效.

如果没有DHCP服务器,经过一段时间后,dhclient将配置IP,因为它在租约和daemonize中没有过期.如果没有其他选项(广播…),这将是/ 32,因为信息不可用.如果需要,在“模板”租约文件中添加其他值.这将是:

option subnet-mask 255.255.255.0;
option routers 10.0.3.1;
option domain-name-servers 10.0.3.1;
option broadcast-address 10.0.3.255;

在这种情况下运行dhclient时:

[…]

DHCPdisCOVER on eth0 to 255.255.255.255 port 67 interval 12
No DHCPOFFERS received.
Trying recorded lease 10.0.3.222
PING 10.0.3.1 (10.0.3.1) 56(84) bytes of data.

--- 10.0.3.1 ping statistics ---
1 packets transmitted,1 received,0% packet loss,time 0ms
rtt min/avg/max/mdev = 0.240/0.240/0.240/0.000 ms
bound: immediate renewal.
DHCPREQUEST of 10.0.3.222 on eth0 to 255.255.255.255 port 67
root@stretch-amd64:~#

ubuntu-16.04 – 我是否可以通过DHCP请求特定的IP地址而不拒绝DHCP服务器提供的其他地址?的更多相关文章

  1. iOS 9 LaunchServices:错误:没有注册处理程序的URL scheme itms-services

    我们有一些内部应用程序,在iOS9之前,应用程序将在版本比较后打开“itms-services://”链接,新版本的应用程序将被下载并安装.但是在iOS9测试之后,我们发现这些应用无法打开“itms-services://”链接,出现错误,如“LaunchServices:ERROR:没有注册处理程序的URLschemeitms-services”我们用来更新应用程式的代码:我们测试了将“itms

  2. android – setOutputFormat在无效状态下调用:4(where和why)

    所以看起来调用setoutputFormat一定工作正常,但是setProfile本身必须再次调用setoutputFormat然后失败…

  3. vBulletin Forum 2.3.xx SQL Injection

    theoneyouwant.

  4. 如何在CentOS上配置dhclient以从特定的DHCP服务器获取IP

    我有一种情况,我可以在子网上启动CentOS6.6映像,以便VM实例从子网的虚拟网关获取其IP地址.现在这个网关已经不稳定了,我无法修复它,所以我在这个子网上设置了自己的DHCP服务器.所以现在这个子网上有2台DHCP服务器,我的虚拟机正在获取随机IP地址,有时来自一台DHCP服务器,有时来自另一台.我的问题是我如何在我的虚拟机上配置dhcp客户端,以便他们只向我的DHCP服务器发出DHCP请求而不是错误的服务器?

  5. 使用NetworkManager和没有GUI工具的CentOS 6 WiFi

    我正在使用CentOS6,拼命想通过ifcfg-wlan0文件获取Wifi并使用/etc/wpa_supplicant/wpa_supplicant.conf进行捏造.我没有X服务器,所以我不想使用GUI工具.如何配置NetworkManager在wlan0上使用ESSID为inet_bridge的WPA2-PSKWiFi.以太网工作正常,所以我知道我的设置并没有完全搞砸.必须在命令行或使用vim

  6. 如何指定DHCP IP地址? (CentOS 5.3)

    我想缩短CentOS虚拟机的启动时间.它们在我们的测试周期中自动生成.我们注意到从DHCP服务器获取IP地址可能需要15秒,并且怀疑它与DHCP广播发现有关.如何在CentOS5.3中对DHCP服务器的IP地址进行硬编码?

  7. 命令行 – 在Windows XP上通过命令行更改IP地址

    我正在尝试使用以下代码通过cmd.exe更改机器IP地址:IP不会更改的问题,但不会在DHCP上更改.因此,当我重新启动机器时,IP返回到DHCP.我需要一种方法通过命令行永久地更改IP.有任何想法吗?您可以使用以下命令:哪里>192.168.0.100是IP地址>网络掩码为255.255.255.0>并且网关是192.168.0.1您还可以通过DHCP使用以下命令自动配置DNS:

  8. centos – 强制Linux服务器在丢失时自动尝试获取IP地址

    我们在小型企业网络上为我们的Linux服务器使用静态DHCP租约.最近DHCP服务器发生了一些不好的事情,所有的linux服务器都因为无法在网络上找到DHCP服务器而丢失了IP地址.一天后快进,DHCP服务器恢复运行,但服务器似乎不再寻找DHCP服务器,因此他们没有IP地址,也没有尝试获取.我最终不得不手动和物理地转移每个服务器并重新启动网络,此时他们会立即恢复他们的IP地址.我可以在服务器上做些什么来防止将来出现这个问题吗?

  9. 如何在CentOS 6.x上的DHCPd(isc-dhcpd-4.1.1-P1)中为多个MAC设置一个主机名和IP?

    我试图在CentOS中获取我的DHCP服务器,以便在同一台计算机上为两个不同的MAC地址提供相同的IP和主机名,具体取决于连接的位置.这是我在dhcpd.conf中的条目我尝试添加第二条硬件线并将第二条MAC添加到第一条硬件线.都没有奏效.有没有人知道如何在DHCPd中使用相同的主机名和IP时完成此任务?你正在打开自己的IP地址冲突,但我相信你有一个非常有效的理由做这样的事情.

  10. CentOS 7没有从DHCP设置我的网关

    有什么变化,我必须在DHCP客户端添加一些额外的标志才能工作吗?似乎CentOS6使用dhclient版本4.1.1-P1而CentOS7使用4.2.5.也许他们在这些版本之间改变了一些?

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部