我想为本地网络服务器上安装的 Debian Stretch 分配一个静态 IP 地址。
以前我是/etc/network/interfaces
这样做的,服务器只有一个网卡,而我的网络有两个路由器,服务器主要插入子网为192.168.1.0的第二个路由器,该路由器不是我的ISP提供的路由器。如果我需要将服务器连接到子网 192.160.0.1 的 ISP 路由器,我想在每个子网上使用静态 IP 配置服务器,如下所示:
ISP 路由器:192.168.0.250
第二个路由器:192.168.1.250
要在每个子网上分配静态 IP,我配置dhcpcd.conf
如下。
interface enp30s0
arping 192.168.0.1
arping 192.168.1.1
# Static IP configuration 1 (Default):
profile 192.168.0.1
static ip_address=192.168.0.250/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.11 192.168.0.12 192.168.0.1
# Static IP Configuration 2:
profile 192.168.1.1
static ip_address=192.168.1.250/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.11 192.168.1.12 192.168.1.1
奇怪的是,这似乎至少在服务器首次打开时有效,但是如果我需要在路由器重新启动时重新启动路由器,服务器将获得一个 IP 地址,该 IP 地址不是上面配置的静态 IP。我不确定如何解决此问题,非常感谢任何正确方向的建议或要点。
答案1
我目前尚未dhcpcd
安装(我使用dhclient
),但正在阅读dhcpcd.conf 手册页对于 Debian 10,似乎当您选择arping
静态 IP 配置文件时,配置文件名称不应该是 IP 地址,而应该是在每种情况下响应 ARP ping 的硬件地址(即 MAC 地址)。
在里面Debian Stretch 的相应手册页,有关使用arping
with的示例profile
不清楚:看起来修补错误已从示例中删除了一些行。在 Debian 10 中,该错误似乎已得到修复。
当您重新启动路由器时,在其接口上启用链接后,显然需要一段时间才能真正响应 ARP 请求。 Debian Stretch 系统可能拥有比普通路由器更快的处理器,因此一旦看到链接出现,它就会执行 arping,并且由于路由器仍处于启动过程的中间,arping 将会失败。
然后将dhcpcd
回退到常规 DHCP,其超时时间较长,因此最终会从路由器获得 DHCP 响应并使用它。如果您不希望这样,您能做的最好的可能就是使用关键字fallback
来选择最常见的情况,并希望它是正确的选择。
如果您可以配置路由器,您还可以将每个路由器配置为识别服务器的 MAC 地址,并始终使用常规 DHCP 为其提供所需的 IP 地址。这是使用 DHCP 时获取静态 IP 的常用方法,但我认为由于某种原因您不能这样做。
所以你会想要这样的东西:
interface enp30s0
# the most often used router first, to make things happen more quickly
arping 192.168.1.1 192.168.0.1
# Second router 192.168.1.1 has MAC address 11:22:33:44:55:66 in this example
# ISP router 192.168.0.1 has MAC address 22:33:44:55:66:77 in this example
# if arping fails, the next step would normally be to use the regular DHCP.
# Assume we're on the second router in that case instead, since it's the most common case
fallback 11:22:33:44:55:66
# Static IP Configuration for the second router:
profile 11:22:33:44:55:66
static ip_address=192.168.1.250/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.11 192.168.1.12 192.168.1.1
# Static IP configuration for the ISP router:
profile 22:33:44:55:66:77
static ip_address=192.168.0.250/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.11 192.168.0.12 192.168.0.1