我注意到这两种命令格式给出了不同的结果:
$ sudo route -v add -net <IP> netmask 255.255.255.255 gw <gateway>
# succeeds without outputting text
$ sudo route -v add -net <IP>/32 gw <gateway>
SIOCADDRT: Invalid argument
man 文件route
明确指出 CIDR 格式应该有效:
路由 [-v] [-A family] 添加 [-net|-host] 目标 [网络掩码 Nm] [gw Gw]...
[...]
target:目标网络或主机。您可以提供点分十进制形式的 IP 地址或主机/网络名称。
那么我错过了什么?
注意:此外,详细选项对此命令似乎没有用。
答案1
区别应该在于路由命令进行的参数分析。在我看来,第一个命令的结果不是第二个命令中出现的错误可能是不合适的,因为您试图设置到主机的路由,并指定该主机是到网络的路由。
如果将 -net 替换为 -host,则将接受第二个命令:
$ route -v add -host <IP>/32 gw <gateway>
无论如何,我建议使用 ip 命令,使用它您可以通过以下方式添加路由:
$ ip route add <IP>/32 via <gateway>
或者
$ ip route add <IP> via <gateway>
答案2
我认为有一个令人困惑的地方:
您可以提供点分十进制的 IP 地址或主机/网络名称
host/network
名字似乎表明CIDR
,但我认为他们应该写主机名或网络名称正如人们会发现的那样/etc/hosts and /etc/networks
。