gpt4 book ai didi

linux - 可以使用 TCPdump/Wireshark 看到组播数据包,但无法在应用程序中接收到它

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:37 26 4
gpt4 key购买 nike

我有一台带有 6 个网卡的 Centos 7 服务器。我有两个连接到不同的局域网 - ens20f3(我的家庭局域网)enp130s0f0(用于访问不同的网络)。我需要读取在 enp130s0f0 上接收到的多播数据包。如果我执行 tcpdump -i enp130s0f0 -n,我可以看到接口(interface)正在接收多播数据包。

但是当我尝试在我的测试 python 应用程序中读取数据包时,我无法读取任何内容。我已使用 netstat -gn 检查我是否加入了正确的组。我已经禁用了 rp_filter。我什至尝试按照一篇帖子中的建议将界面置于混杂模式。我已经在另一台机器上测试了我的 python 应用程序,它工作正常。

MYPORT = 10872
MYGROUP_4 = '239.50.50.72'

import time
import struct
import socket
import sys

def main():
group = MYGROUP_4
# Look up multicast group address in name server and find out IP version
addrinfo = socket.getaddrinfo(group, None)[0]`
# Create a socket
s = socket.socket(addrinfo[0], socket.SOCK_DGRAM)

# Allow multiple copies of this program on one machine
# (not strictly needed)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# Bind it to the port
s.bind(('', MYPORT))

group_bin = socket.inet_pton(addrinfo[0], addrinfo[4][0])
# Join group
if addrinfo[0] == socket.AF_INET: # IPv4
mreq = group_bin + struct.pack('=I', socket.INADDR_ANY)
s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
else:
mreq = group_bin + struct.pack('@I', 0)
s.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq)

# Loop, printing any data we receive
while True:
data, sender = s.recvfrom(1500)
while data[-1:] == '\0': data = data[:-1] # Strip trailing \0's
print (str(sender) + ' ' + repr(data))

if __name__ == '__main__':
main()

我的路由表如下:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0 10.230.47.129 0.0.0.0 UG 100 0 0 enp130s0f0
10.230.47.128 0.0.0.0 255.255.255.128 U 100 0 0 enp130s0f0
172.19.0.0 10.230.47.129 255.255.0.0 UG 100 0 0 enp130s0f0
192.168.110.0 0.0.0.0 255.255.255.0 U 100 0 0 ens20f3

tcp 转储输出如下所示:

17:30:24.444744 IP 172.19.250.28.56915 > 239.100.39.25.10225: UDP, length 56

因此条目对应于 172.19.*.*

关于我可以寻找什么来解决这个问题的任何指示?

最佳答案

找到了。结果是防火墙阻止了数据包。

service firewalld stop

这成功了。

关于linux - 可以使用 TCPdump/Wireshark 看到组播数据包,但无法在应用程序中接收到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32203434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com