我的系统位于连接到路由器的常规家庭网络中。路由器会毫无问题地将 IP 分配给我的设备。
我希望每次都为我的设备使用相同的 IP。将其设置为静态或首选。这是一个完全受控的环境,因此从 DHCP 获取首选 IP 应该没有问题。
更新:我无法在 DHCP 服务器端进行任何更改,我需要从客户端找到解决方案。该服务器是 ICS,无法配置。
问题
我的问题是,这可以通过 实现吗dhcpcd
?我可以使用 的静态 IP 吗?或者甚至是首选?由于一些不相关的要求,dhcpcd
我无法避免使用。dhcpcd
迄今已完成
到目前为止,我尝试过的是将以下几行添加到/etc/dhcpcd.conf
文件中:
interface eth0
static ip_address=192.168.1.135/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
手册页上的内容如下dhcpcd.conf
:
静态值
Configures a static value. If you set ip_address then dhcpcd will not attempt to obtain a lease and just use the value for the address with an infinite lease time. Here is an example which configures a static address, routes and dns. interface eth0 static ip_address=192.168.0.10/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1
但问题是,即使我这样做,我也只能看到我的设备短暂地使用该 IP,之后它似乎丢失并被另一个很可能通过 DHCP 分配的 IP 替换(我猜它是池中的下一个)。
这是我的完整dhcpcd.conf
文件内容:
# Inform the DHCP server of our hostname for DDNS.
hostname
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
duid
# Persist interface configuration when dhcpcd exits.
persistent
# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit
# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Most distributions have NTP support.
option ntp_servers
# A ServerID is required by RFC2131.
require dhcp_server_identifier
# A hook script is provided to lookup the hostname if not set by the DHCP
# server, but it should not be run by default.
nohook lookup-hostname
noipv4ll
interface eth0
static ip_address=192.168.1.135/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
我是否需要添加更多选项以让 DHCP 知道我不需要新的 IP 地址或其他东西?还是我完全误解了手头的主题?
我尝试在线搜索更详细的帮助,但要么是该主题上没有太多信息,要么更可能的是,我对该主题了解不够,无法进行有效的搜索。
任何帮助都将不胜感激!
答案1
您需要进行 MAC 预留,如下所示:
host vnbandk3920.dsdk12.schoollocal {
hardware ethernet 00:c0:ee:7d:bc:80;
fixed-address 172.30.176.243;
}
答案2
如果你正在使用 dhcpcd(客户端守护进程,大多数人都将其与 DHCP 和 DHCPd 混淆,它们是不同的),那么在/etc/dhcpcd.conf
static
interface eth0
static ip_address=192.168.1.135/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
当然,请记住用您的网络详细信息替换 IP 信息。
答案3
您是否尝试使用路由器地址池内的静态地址?如果是这样,则无法知道您的路由器将做什么。从 GUI 检查路由器地址池,然后选择池外的地址。
您可以通过停止网络管理器(我假设您使用一个)来检查是否仍然遇到这种现象,给自己一个地址,
ip link set dev eth0 down
ip addr flush dev eth0
ip addr add 192.168.1.whatever/24 dev eth0
ip link set dev eth0 up
ip route add default via 192.168.1.1
无需使用 dhcpcd。这样做的好处是可以隔离问题:如果再次发生,那么就是路由器的问题,否则就是静态 IP 地址选择不正确。