在我们日常工作中,是否有这种需求,在断网的情况下,假装网络可以通,仍然可以通过类似192.168.1.1 这样的IP 访问服务 。除了我们经常使用本地回环口127.0.0.1以外,今天介绍一个神器:dummy网卡。

ip link add nodelocaldns type  dummy
ip addr add 169.254.20.10 dev nodelocaldns
ip addr add 10.96.0.10 dev nodelocaldns

创建网卡后,就可以本地 ping 通了

dummy网卡_显式

?  → ping 10.96.0.10
PING 10.96.0.10 (10.96.0.10) 56(84) bytes of data.
64 bytes from 10.96.0.10: icmp_seq=1 ttl=64 time=0.016 ms
64 bytes from 10.96.0.10: icmp_seq=2 ttl=64 time=0.050 ms

dummy 接口的工作方式和 loopback 接口类似,但是你可以创建任意多的 dummy 接口。它提供路由数据包的功能,但实际上又不进行转发。dummy 接口主要有两个用途:

  • 用于主机内的程序通信
  • 由于 dummy 接口总是 up(除非显式将管理状态设置为 down),在拥有多个物理接口的网络上,可以将 service 地址设置为 loopback 接口或 dummy 接口的地址,这样 service 地址不会因为物理接口的状态而受影响。

细心的同学可能发现了前面创建的网卡名称是 nodelocaldns ,没错就是 k8s 里面的 local dns 的网卡,k8s 的 local dns 正是使用了这种分布式的 IP 的能力实现的,每台机器上面都可以有这样一个本地的网卡。