linux – loopback接口如何工作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – loopback接口如何工作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1844字,纯文字阅读大概需要3分钟。
内容图文
![linux – loopback接口如何工作](/upload/InfoBanner/zyjiaocheng/958/b19bc4ca1fbf4c04a599c5250ae786ff.jpg)
有奇怪的事情:
在我的虚拟机上:
centos7
接口:
enp0s3: 192.168.10.110/24<br>
lo:0 10.0.3.110/24<br>(ip alias)
路线:
default via 10.0.3.2 dev lo
192.168.10.0/24 dev enp0s3
enp0s3 is plugged in 10.0.3.0/24
我启用了ip_forward(net.ipv4.ip_forward = 1)
我的问题:
ping 10.0.3.2有效,但为什么?
tcpdump无法在enp0s3上获取软件包,但在lo上获取软件包.
默认路由是lo,为什么剂量ping 10.0.3.2工作?为什么我不能在enp0s3上获得包?
解决方法:
Loopback接口是一个虚拟接口.环回接口的唯一目的是返回发送给它的数据包,即在接口上接收发送给它的任何数据包.在loopback接口上放置一个默认路由是没有意义的,因为它可以发送数据包的唯一地方就是从接口输出到输入的循环虚线.没有任何东西可以改变环回接口的这种行为,这就是它编码要做的事情.
当您ping 10.0.3.2时,回复不是来自某些外部设备,而是来自回送接口本身.在环回接口上添加地址时,例如
sudo ip addr add 10.0.3.1/24 dev lo
添加了到10.0.3.0/24的路由.你可以看到这个
ip route show table local
就像是
local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1
应该出现.此路由表条目告知发送到10.0.3.1和10.0.3.254之间的任何地址的数据包是通过lo接口发送的,从该接口立即返回.
编辑:澄清作为对以下评论的回应.
以下是ping 10.0.3.2时发生的情况:内核获取一个IP数据包,用于传送目标地址10.0.3.2.就像要传递的任何数据包一样,内核会查询路由表.在这种情况下,匹配条目是:local 10.0.3.0/24 dev lo proto kernel scope host src 10.0.3.1,它表示数据包应该通过lo接口传送,源地址为10.0.3.1.
现在,因为数据包被提供给lo接口,所以loopback接口执行它通常所做的事情:它将数据包从发送队列中取出并将其放在接收队列中.从内核的角度来看,我们现在已经收到一个传入的数据包,可供服务器进程在套接字上侦听使用. (在ping的情况下,内核在内部处理它.)我们现在收到一个目标地址为10.0.3.2的“远程”ICMP数据包,它可能不是我们的本地地址之一,但它被传送到环回尽管如此.
接下来,内核向ping发送响应:ICMP响应数据包,地址反转:10.0.3.2作为源地址,10.0.3.1作为目标.这是通过loopback接口传回ping程序,这表明我们收到了10.0.3.2的回复.
内容总结
以上是互联网集市为您收集整理的linux – loopback接口如何工作全部内容,希望文章能够帮你解决linux – loopback接口如何工作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。