看网上一篇教程啊, 说LVM使用的就是在回环地址上绑定了IP地址, 然后设置 arp_filter 和 arp_ignore 来达到负载均衡的目的, 于是就自己把本地的回环地址给改掉了, 改成了一个随便的值: 192.168.3.110, 然后发现访问不了外网了, 用 wireshark 抓包发现是因为DNS解析失败, 然后发现了是因为. 本机的DNS服务是被 dnsmasq 服务在 127.0.1.1 端口给监听, 本机的所有的dns服务都是通过这个这个进程接收并访问的, 这样我把127.0.1.1是绑定在网卡本地回环网卡上的
本地回环地址是指以127开头的地址, 通常是指 127.0.0.1-127.255.255.254, 都是回环地址, 所以这个地址应该是在ping的系统调用中能看到, 可以自己试着往本地的网卡发送数据嘛, 使用strace就可以看到ping都做了什么操作:
socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.1.1")}, 16) = 0
其实ping操作和, 然后就是写操作了
write(3, "ping: icmp open socket: Operatio"..., 48ping: icmp open socket: Operation not permitted
cat /proc/<ping-pid>/io 中 wchar 和rchar并不都是diskIO,ping就通过write写数据的
也从另一个方面证明了io操作其实并不是全部都,
这么说其实lo和 / tun/tap 非常相似,tap是模拟的二层设备,tun是三层设备,lo则应用层
你可以想tap写入一个二层的数据包, 包含mac地址的数据包;tun写入一个三层的数据包, 包含三层的数据包;lo写入的数据包.
来源: http://www.bubuko.com/infodetail-2607549.html