文件的实际用途是什么/etc/networks
?据我了解,人们可以在此文件中为网络命名。例如:
root@fw-test:~# cat /etc/networks
default 0.0.0.0
loopback 127.0.0.0
link-local 169.254.0.0
google-dns 8.8.4.4
root@fw-test:~#
但是,如果我尝试在ip
实用程序中使用此网络名称,则它不起作用:
root@fw-test:~# ip route add google-dns via 104.236.63.1 dev eth0
Error: an inet prefix is expected rather than "google-dns".
root@fw-test:~# ip route add 8.8.4.4 via 104.236.64.1 dev eth0
root@fw-test:~#
文件的实际用途是什么/etc/networks
?
答案1
正如写在手册页,该/etc/networks
文件用于描述网络的符号名称。对于网络来说,它是指.0
末尾带有尾部的网络地址。仅支持简单的 A、B 或 C 类网络。
在您的示例中,google-dns
输入是错误的。它不是 A、B 或 C 网络。这是一个 ip-address-hostname-relationship,因此它属于/etc/hosts
.实际上default
条目也不符合要求。
假设您有一个192.168.1.5
来自公司网络的 IP 地址。的条目/etc/network
可以是:
corpname 192.168.1.0
当使用诸如route
或 之类的实用程序时netstat
,这些网络将被转换(如果您不使用该-n
标志抑制解析)。路由表可能如下所示:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
corpname * 255.255.255.0 U 0 0 0 eth0
答案2
该ip
命令也从不使用主机名进行输入,因此您的示例几乎不相关。此外,您还输入了主机名/etc/networks
,而不是网络名称!
来自的条目/etc/networks
由尝试将数字转换为名称的工具使用,例如(已弃用的)route
命令。如果没有合适的条目,它会显示:
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 * 255.255.254.0 U 0 0 0 eth0
如果我现在添加一行mylocalnet 192.168.0.0
到/etc/networks
:
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
mylocalnet * 255.255.254.0 U 0 0 0 eth0
在实践中它从未被真正使用过。