繁体   English   中英

为什么linux ip命令在添加IPv4地址时不接受主机名

[英]Why does the linux ip command not accept a hostname when adding an IPv4 address

我在 Ubuntu 17.04 上使用ip命令。 ip route add命令不接受主机名。 它将接受等效的 IPv4 地址。 我究竟做错了什么?

$ sudo ip route add f3.com via 192.168.0.1
[sudo] password for jeffs: 
Error: inet prefix is expected rather than "f3.com".
$ host f3.com
f3.com has address 174.132.98.146
$ 
$ sudo ip route add 174.132.98.146 via 192.168.0.1
$ sudo ip route list
default via 192.168.0.1 dev eno1 proto static metric 100 
10.0.3.0/24 dev lxcbr0 proto kernel scope link src 10.0.3.1 linkdown 
169.254.0.0/16 dev eno1 scope link metric 1000 
174.132.98.146 via 192.168.0.1 dev eno1 
192.168.0.0/24 dev eno1 proto kernel scope link src 192.168.0.16 metric 100 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 
$ sudo ip route get f3.com
Error: inet prefix is expected rather than "f3.com".
$ sudo ip route get 174.132.98.146
174.132.98.146 via 192.168.0.1 dev eno1 src 192.168.0.16 
    cache 
$ sudo ip -s route get 174.132.98.146
174.132.98.146 via 192.168.0.1 dev eno1 src 192.168.0.16 
    cache  users 1
$ 

我查看了 Linux 的 IP 层网络管理指南,附录 D. IP 路由管理10 个有用的“IP”命令来配置网络接口和其他地方,但我没有看到任何可以执行我正在尝试执行的操作的示例。

现在,我可以胡说八道了(UNIX 是个好东西):

$ sudo ip route add `host f3.com | fgrep address | cut -d ' ' -f 4` via 192.168.0.23
$ sudo ip route list
default via 192.168.0.1 dev eno1 proto static metric 100 
10.0.3.0/24 dev lxcbr0 proto kernel scope link src 10.0.3.1 linkdown 
169.254.0.0/16 dev eno1 scope link metric 1000 
174.132.98.146 via 192.168.0.23 dev eno1 
192.168.0.0/24 dev eno1 proto kernel scope link src 192.168.0.16 metric 100 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 
$ 

但那是一团糟。 有没有更好的办法?

没有什么不对的。 路由基于 IP 地址,不能与 DNS 地址一起使用。 想象一个主机地址解析为多个应该以不同方式路由的IP 地址。

在查看 OSI 层时,DNS 名称位于顶部,而 IP 地址位于网络层。 你不能扭转这种局面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM