morris2600 发表于 2012-11-01 14:22

从网卡收到一个目的IP为本地loopback IP的UDP包, 协议栈是否会转发给本机应用层?

A上有两个IP:eth0 (192.168.67.63) lo:0 (192.168.67.181)
B上也配了一个192.168.67.181的IP(与设备A的lo:0 IP相同),现在设备B通过192.168.67.181向设备A的192.168.67.63地址发UDP包
在A上通过tcpdump等能抓到该包, 但应用层无法收到。

想知道协议栈对这种包是否如何处理的? 如果被丢弃, 是在哪一流程里丢弃的?
看了下代码 ip_rcv、ip_local_deliver等都没发现线索, 求大侠指点!

瀚海书香 发表于 2012-11-02 07:47

回复 1# morris2600
这个的应用场景是?

   

morris2600 发表于 2012-11-02 17:23

是某服务的一台集群设备上同时安装了另一服务, 此服务要和集群中另一设备通讯 回复 2# 瀚海书香


   

giant1st 发表于 2012-11-04 23:16

1. loopback接口还能设置地址吗?不是127.0.0.1吗?

2. 能收到包是因为,2层不关心Ip的啊,源MAC地址是B机器的地址,当然认为这个是来自别的机器的包。

再说,理论上自己发给自己的包是不会进入网络上的。

【Another implication of Figure 2.4 is that IP datagrams sent to the one of the host's own IP addresses normally do not appear on the corresponding network. 】

TCP/IP详解1 2.7节

goter 发表于 2012-11-05 10:03

lo的路由项是发不出去包的

wayling 发表于 2012-11-05 13:15

妳的lo是另一张网卡喔?
我建议一先关掉lo试试吧…..

morris2600 发表于 2012-11-06 09:43

不是额外的网卡, 配置如下:

ifconfig结果如下:
lo      Link encap:Local Loopback
          inet addr:127.0.0.1Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNINGMTU:16436Metric:1
          RX packets:1176240 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1176240 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:202914326 (193.5 Mb)TX bytes:202914326 (193.5 Mb)

lo:0      Link encap:Local Loopback
          inet addr:10.137.13.28Mask:255.255.255.255
          UP LOOPBACK RUNNINGMTU:16436Metric:1


/etc/sysconfig/network # cat ifcfg-lo
# Loopback (lo) configuration
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
STARTMODE=onboot
USERCONTROL=no
IPADDR_0='10.137.13.28'
NETMASK_0='255.255.255.255'
LABEL_0='0'

ourgreen 发表于 2014-12-02 13:54

最近也遇到类似案例,应该是由于发送过来的包的MAC地址不是你接口网卡地址造成的实际上没有被本机收下来。请检查LVS上配置负载均衡的替换MAC地址。
页: [1]
查看完整版本: 从网卡收到一个目的IP为本地loopback IP的UDP包, 协议栈是否会转发给本机应用层?