在 Ubuntu 20.04 LTS 上使用某些掩码进行静态配置时,ifupdown 中的 ifup 命令会失败。
工作配置示例
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto enp1s0
iface enp1s0 inet static
address 172.31.1.102
netmask 255.255.255.0
不工作配置示例
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto enp1s0
iface enp1s0 inet static
address 172.31.1.102
netmask 255.255.255.8
错误
$ sudo ifup enp1s0
Error: any valid prefix is expected rather than "172.31.1.102/255.255.255.8".
ifup: failed to bring up enp1s0
无法分离 IP 地址范围不连续的网络吗?例如,我不希望 172.31.1.102 能够到达 172.31.1.118,但 172.31.1.230 应该可以到达。
答案1
停止。255.255.255.8 非常危险,操作系统会警告您。您的掩码只能使用以 16 的倍数结尾的地址!
您需要使用掩码中的“高”位,而不是低位,以便创建连续的块。以下是一些有效示例。
A Class C is a /24 mask, or 24 bits, and looks 255.255.255.0 or
11111111.11111111.11111111.00000000
/25 位 255.255.255.128 或 11111111.11111111.11111111.10000000
/26 位 255.255.255.192 或 11111111.11111111.11111111.11000000
/27 位 255.255.255.224 或 11111111.11111111.11111111.11100000 << 你可能想要这个
(等等)
/28 位 255.255.255.240 (16 个 IP,其中 14 个可用);
/29 位 255.255.255.248 (8 个 IP,6 个可用);
/30 位 255.255.255.252 (4 个 IP,2 个可用);
/31 位 255.255.255.254(从未真正使用过,因为没有可用的地址。)
/32 位 255.255.255.255(通常仅用于描述主机,而不是网络。)