Linux

錯誤:需要任何有效前綴而不是“172.31.1.102/255.255.255.8”

  • March 19, 2022

在 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 應該可以到達。

停止。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(通常僅用於描述主機,而不是網路。)

引用自:https://serverfault.com/questions/1017135