环回设备是如何实现的?

环回组网接口

是一个完全用软件实现的虚拟网络设备。

但是这个实现是如何实现的呢?你如何操纵呢?

据我所知,IP在本地路由表中标记为本地:

ip route show table local 

发送到标记为本地的IP将触发环回设备。 但这种检测是纯粹由路由表还是其他一些内核操作完成的?

编辑:我的最终目标是操纵循环设备配置,以便在我的笔记本电脑上的接口(两个wlan适配器)之间发送数据报将导致网络中的实际流量/数据报,而不是本地循环。 接口1 – > WLAN – >接口2和NOT:接口1 – > LOOP – >接口2

它完全通过路由表处理。

如果你想玩得开心的话,在虚拟机中试用很容易。 对于您尝试此操作的计算机上可能发生的任何事情,我不承担任何责任。

首先让我们将lo的网络掩码更改为255.255.0.0:

 sudo ip addr del 127.0.0.1/8 dev lo; sudo ip addr add 127.0.0.1/16 dev lo 

现在让我们来看看我们的情况:

 $ ip -4 addr show dev lo 1: lo:  mtu 16436 qdisc noqueue state UNKNOWN inet 127.0.0.1/16 scope host lo 

到127.1.1.1的数据包去哪儿了?

 $ sudo ip route get 127.1.1.1 127.1.1.1 via 172.16.22.2 dev eth0 src 172.16.22.130 cache mtu 1500 advmss 1460 hoplimit 64 

我们开始在另一个终端ping:

 $ ping 127.1.1.1 

让我们监控eth0上的ICMP流量:

 $ sudo tcpdump -i eth0 icmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes 07:28:42.060077 IP 172.16.22.130 > 127.1.1.1: ICMP echo request, id 5665, seq 4, length 64 07:28:43.059920 IP 172.16.22.130 > 127.1.1.1: ICMP echo request, id 5665, seq 5, length 64 

我将让您将远程计算机上的网络掩码更改为255.255.0.0,并将IP地址127.1.1.1添加到其网络接口。 您可以看到ICMP回复。 请注意,路由器可能无法正常播放。