Por que a 'route' não aceita argumentos de destino com o formato CIDR?

1

Eu notei que esses dois formatos de comando fornecem resultados diferentes:

$ 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

O arquivo man de route diz claramente que o formato CIDR deve funcionar:

route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw]...

[...]

target: the destination network or host. You can provide IP addresses in dotted decimal or host/network names.

Então, o que estou perdendo?

Nota: também, a opção detalhada parece ser inútil neste comando.

    
por mblakesley 21.09.2018 / 04:14

1 resposta

2

A diferença deve estar na análise de argumentos feita pelo comando route. Na minha opinião, é provavelmente inadequado que o resultado do primeiro comando não seja o erro que você recebe no segundo, já que você está tentando definir uma rota para um host especificando que é uma rota para uma rede.

Se você substituir -net por -host, o segundo comando será aceito:

$ route -v add -host <IP>/32 gw <gateway>

Em qualquer caso, eu recomendo usar o comando ip, com ele você pode adicionar a rota desta forma:

$ ip route add <IP>/32 via <gateway>

ou

$ ip route add <IP> via <gateway>
    
por 21.09.2018 / 08:46