我有2个Linux的框与以下描述
方框A:内核:Linux 2.6 IP:172.19.1.99/24
方框B:内核:Linux 3.14 IP:192.168.200.100/24
连接到第2层交换机
两个盒子都运行UDP广播服务和UDP接收器服务。 接收服务收到广播发送的任何内容。 这些服务一起构成在这些框上运行的Web应用程序使用的自定义发现协议。
问题:
当框A移动到192.168.200.0/24子网,然后移回到172.19.1.0/24子网时,框B上的接收机服务仍然从框A接收广播,但从技术上讲,它应该停止从A接收广播。现在运行在框A上的相同服务此时不接收框B的广播。
只是为了确认我在B框上的接收服务上附加了strace,我可以看到recvfrom系统调用确实正在接收由A框发送的地址为192.168.200.255的广播。
现在,如果我杀死了Box B上的接收服务并重新启动它,那么它将停止接收Box A发送的广播。
总而言之,只有当运行在同一子网中的一个盒子迁移到不同的子网时才会出现这个问题,只能在盒子B上看到。
任何想法,为什么这可能会发生?
更新:只是添加更多的信息框B也使用conntrack模块的iptables可以这一些如何影响这种行为?