假设我使用 ifconfig 或类似命令来设置网络接口,并将 0.0.0.0 分配给 mask 参数。这有什么特殊含义吗?这会有什么影响?
答案1
0.0.0.0 通常意味着网络接口根本不绑定到任何网络,甚至本地主机请求也不会被确认。如果有什么不同的话,那就是操作系统将接口显示为可用但不活动且未路由的一种方式。
答案2
可以将子网掩码视为出站流量的过滤器。子网掩码可帮助 IP 协议确定哪些是本地“LAN”流量以及哪些流量需要转发到路由器。
实际上,0.0.0.0 子网掩码会使所有出站流量都成为“本地流量”,并且不会转发任何流量到路由器。如果网络上没有路由器(又称默认网关),此配置应该可以正常工作。
如果您确实需要路由,您可以随时使用 ROUTE ADD 命令在房屋上添加静态路由(Windows,其他操作系统应该具有相同/类似的命令)。
在这种情况下(为简洁起见,进行了一些编辑)。我可以向接口添加 /0 或 0.0.0.0 网络掩码,它将在环回和本地链路上工作:
root@host:/tmp# ip addr add 10.0.0.0/0 dev eth0
root@host:/tmp# ip addr show
root@host:/tmp# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> ...
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> ...
link/ether fe:dc:ba:98:76:54 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.0/0 scope global eth0
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
link/ether 01:23:45:67:89:ab brd ff:ff:ff:ff:ff:ff
inet 192.168.1.5/24 brd 192.168.1.255 scope global wlan0
valid_lft forever preferred_lft forever
inet6 fe80::226:c6ff:fe4b:e38e/64 scope link
valid_lft forever preferred_lft forever
root@host:/tmp# ping 10.0.0.0
PING 10.0.0.0 (10.0.0.0) 56(84) bytes of data.
64 bytes from 10.0.0.0: icmp_seq=1 ttl=64 time=0.033 ms
64 bytes from 10.0.0.0: icmp_seq=2 ttl=64 time=0.036 ms
^C
--- 10.0.0.0 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.033/0.034/0.036/0.006 ms