我有一些代码inheritance,它检查一个Linux路由器的IPv4networking连接。 有一个检查IPv6地址,如果他们在0:0:0:0:0:ffff ::networking。 接口在这个IPv6范围内可以有一个IPv6地址,并且没有IPv4地址,并且可以在IPv4networking中通信,这是否是一个有效的场景?
不,那不行。 映射地址用于表示IPv6软件中的IPv4networking连接。 但这就是他们的全部:软件中的表示。 将其分配给networking接口或在networking上发送实际数据包将不起作用。 如果有人这样做,那么它不是有效的IPv6。
还有一些有趣的不太明显的用例。 如果检查是针对IPv4连接的,则由于各种转换机制(如NAT64)而需要零IPv4地址。 可能唯一的IPv4地址在不同的网关上,并且有地址转换来在IPv6中进行编码。 在这种情况下,一个好的检查是向DNS中只有一个Alogging的已知资源发出请求。
当然,如果真正的问题只是一个接口是在一个v4子网上,更容易find,例如ip -4 addr 。