更改本地环回地址引发的血案

看网上一篇教程啊,说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写入的数据包。

 

posted @ 2018-05-19 10:48  honpey  阅读(360)  评论(0编辑  收藏  举报