在 OpenBSD 上,是否可以在单个物理接口上通过 DHCP 请求多个 IP 地址?看起来 DHCP 租用的地址不能被分配为别名。我虽然创建了一个虚拟接口并将流量转发到物理接口,然后在虚拟接口上运行 dhclient (第二个地址是否分配给虚拟接口而不是作为物理接口的别名并不重要)。不幸的是,我无法让它像那样工作。
有什么建议?你会怎么做?
我运行 CentOS 6.2 服务器作为我的网关和防火墙,同时还提供一些内部服务。这是我多年来使用各种硬件和发行版(基于红帽)的设置。最近我遇到了一个互联网连接问题,我相信这是由于我的 ISP(Roadrunner,纽约州北部)存在缺陷,或者是我的 dhclient 配置(默认)存在缺陷。
我没有在这台服务器上使用 NetworkManager,因为网络配置是静态的,并且服务器作为网关 24/7 全天候运行。我的 sysconfig 网络脚本接口配置如下:
它已通过 dhclient 实用程序在启动时配置了接口并使用 DHCP。我有一个有效的 iptables 防火墙脚本,多年来我一直致力于提供路由/NAT 功能,但这与我的问题无关。
在过去的一两周里(至少,我已经看到这些日志条目断断续续有一段时间了)我看到一旦我的 ISP 提供的 DHCP 租约到达中点,触发续订,dhclient 进入一个循环,其中每个15 秒后,它向 /var/lib/dhclient/dhclient-eth1.leases 文件(见下文)中指定的 DHCP 服务器条目发出单播 DHCPREQUEST。这会持续数小时,直到网络连接中断或最终尝试广播发现并正确接收新租约。
dhclient 请求循环始终是单播的,始终使用它尝试更新的租约中指定的 DHCP 服务器地址,并且始终为这些请求中的每一个使用相同的 xid 值。我想知道,有没有办法强制 dhclient 总是发出广播 DHCPDISCOVER 而不是单播 REQUEST 数据包进行更新?是否存在可能的配置问题,或者这只是时代华纳的脆弱 DHCP 服务?在过去的 5 年里,我一直使用 TWC 作为我的 ISP,并且在使用 Linux 作为网关时从未遇到过这个问题。
这是我的接口配置脚本:
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
NAME=Internet
HWADDR=00:D0:B7:**:**:**
MTU=1500
BOOTPROTO=dhcp
PEERDNS=no
IPV6INIT=no
ONBOOT=yes
Run Code Online (Sandbox Code Playgroud)
这是一个示例 dhclient-eth1.leases 文件(当前,但将在 ~6-8 小时内开始循环)
lease {
interface "eth1";
fixed-address 74.***.***.***;
option subnet-mask 255.255.240.0;
option routers 74.***.***.***; …Run Code Online (Sandbox Code Playgroud) 我正在 Azure 云中运行一些 Ubuntu 16.04 VM。每当我重新启动 VM 时,我都必须手动设置默认网关。
网关应该由 dhclient 设置。我激活了调试并得到了这个:
root@backend01:/etc/dhcp/dhclient-exit-hooks.d# cat /tmp/dhclient-script.debug
root@backend01:/etc/dhcp/dhclient-exit-hooks.d# cat /tmp/dhclient-script.debug
Thu Jun 2 17:18:33 UTC 2016: entering /etc/dhcp/dhclient-enter-hooks.d, dumping variables.
reason='PREINIT'
interface='eth0'
--------------------------
Thu Jun 2 17:18:33 UTC 2016: entering /etc/dhcp/dhclient-enter-hooks.d, dumping variables.
reason='REBOOT'
interface='eth0'
new_ip_address='10.10.0.13'
new_network_number='10.10.0.0'
new_subnet_mask='255.255.0.0'
new_broadcast_address='10.10.255.255'
new_routers='10.10.0.1'
new_rfc3442_classless_static_routes='0 10 10 0 1 32 168 63 129 16 10 10 0 1'
new_domain_name='azure-prod'
new_domain_search='azure-prod.'
new_domain_name_servers='10.11.0.250 10.11.0.251'
Run Code Online (Sandbox Code Playgroud)
所以路由器选项设置正确。甚至租约文件也显示了正确的值:
lease {
interface "eth0";
fixed-address 10.10.0.13;
server-name "RD7CFE90879C98";
option subnet-mask 255.255.0.0;
option dhcp-lease-time 4294967295; …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个可以更改本地机器 IP 地址的应用程序。在做一些实验时,我注意到如果我刚连接到无线网络,我会被分配一个 IPv6 地址,它是 MAC 地址的函数。考虑以下命令序列:
<disconnect wireless and reconnect>
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:7d:7c:42
inet addr:192.168.2.98 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7d:7c42/64 Scope:Link
UP BROADCAST RUNNING MULTICAST...
$ sudo ip addr flush dev eth0
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:7d:7c:42
UP BROADCAST RUNNING MULTICAST...
$ sudo dhclient eth0
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:7d:7c:42
inet addr:192.168.2.98 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST
Run Code Online (Sandbox Code Playgroud)
请注意,刷新后,我丢失了 IPv4 和 IPv6 地址,但使用 续订后dhclient,我只重新初始化了我的 IPv4 地址。为什么是这样?我该怎么做才能自动重新分配我的 IPv6 地址?
我有一种情况,我可以在子网上启动 CentOS 6.6 映像,以便 VM 实例从子网的虚拟网关获取其 IP 地址。现在这个网关已经坏了,我无权修复它,所以我在这个子网上设置了我自己的 DHCP 服务器。
所以现在这个子网上有 2 个 DHCP 服务器,我的虚拟机正在获取随机 IP 地址,有时来自一个 DHCP 服务器,有时来自另一个。我的问题是如何在我的虚拟机上配置 dhcp 客户端,以便它们只向我的 DHCP 服务器而不是有故障的服务器发出 DHCP 请求?man dhcp.conf帮助不大。