我有一个应用程序,其中有一些使用发布者/订阅者进行通信的任务。主要问题是发布/订阅发现通过将信息多播到其他任务来工作,但是当我在 k8s 中部署这些任务时,Pod 无法在它们之间多播,因为它们分配了私有 IP。
我读过关于使用服务的文章,但它并没有说服我,因为我会失去对等结构。
有没有办法让来自同一个集群的 2 个 pod 使用多播互相看到?有关其他信息,我使用的 pub/sub 是 Zenoh。
我有一个应用程序,其中有一些使用发布者/订阅者进行通信的任务。主要问题是发布/订阅发现通过将信息多播到其他任务来工作,但是当我在 k8s 中部署这些任务时,Pod 无法在它们之间多播,因为它们分配了私有 IP。
我读过关于使用服务的文章,但它并没有说服我,因为我会失去对等结构。
有没有办法让来自同一个集群的 2 个 pod 使用多播互相看到?有关其他信息,我使用的 pub/sub 是 Zenoh。
我正在启动一台新机器,但由于某种原因它无法接收多播帧。
关于网络的其他一切似乎都运行良好。
甚至多播帧似乎也很好,因为我可以启动avahi-daemon
并且在启动时我可以看到多播在同一交换机上的另一台计算机上发出。
我有这个看起来很奇怪:
$ cat /sys/devices/pci0000:00/0000:00:1d.0/0000:58:00.0/net/enp88s0/statistics/multicast
0
同样在tcpdump
我得到广播但没有多播:
$ sudo tcpdump -i enp88s0 -n multicast
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp88s0, link-type EN10MB (Ethernet), capture size 262144 bytes
14:04:02.076411 IP 192.168.2.56.9999 > 255.255.255.255.9999: UDP, length 29
14:04:17.839828 IP 192.168.2.15.9999 > 255.255.255.255.9999: UDP, length 29
14:04:18.013897 ARP, Request who-has 192.168.2.14 tell 192.168.2.15, length 46
14:04:21.826386 ARP, Request who-has 192.168.2.135 tell 192.168.2.135, length 46
14:04:26.014544 ARP, Request who-has 192.168.2.144 tell 192.168.2.144, length 46
14:04:31.272095 IP 192.168.2.55.9999 > 255.255.255.255.9999: UDP, length 29
...
知道可以在哪里过滤吗?
我的大致理解是交换机和类似的 L2 设备使用IGMP 侦听来防止多播“流”从下游没有多播客户端的端口传播出去。
问题:
一些背景(不要认为这对问题有太大影响):
os-igmp-proxy
插件来提供 IPTV VLAN 和 WAN 之间的代理。Raspberry pi 有一个功能,当它连接到 LAN 时,您可以使用raspberrypi.local
( source ) 找到它的 IP。它提到了多播 DNS。
我想在 LAN 上为我自己的 linux 设备执行此操作,给它们我选择的名称(例如“xyz.local”)如何实现?
我正在寻找一种仅通过 IPv6 在 OSX 上进行反向 mDNS 查询的方法。我对使用 IPv4 的解决方案不感兴趣。
以下适用于dig
9.16.1 的 Linux:
dig +short @ff02::fb -p 5353 -x 2001:db8::1
我已经在 OSX 上安装dig
了带有 homebrew 的 9.16.7,该命令具有完全相同的参数会产生超时。并且在 Wireshark 上没有传出查询的迹象。
以下在 Linux 和 OSX 上运行良好:
dig +short @224.0.0.251 -p 5353 -x 192.168.1.23
该二进制文件avahi-resolve-address
在 OSX 上不可用,而且我没有找到使反向 DNS 与dns-sd
.
这是使用的操作系统版本:
当向目标地址发送 ICMPv4 回显请求时224.0.0.1
,接收请求的 Linux 主机会忽略它。使用的目标 MAC 地址是01:00:5e:00:00:01
。
让这些 Linux 主机应答的唯一方法是将 Kernel 参数设置net.ipv4.icmp_echo_ignore_broadcasts
为 value 0
。这将指示内核响应多播和广播 ICMPv4 请求,并为广播安全威胁打开大门。
为什么这个参数会过滤多播流量?有什么攻击可以证明它是正当的吗?
使用 ICMPv6 和等价的目标地址ff02::1
,Linux 主机不会过滤流量。是否存在将来也会被过滤的风险?ICMPv4 是否存在 ICMPv6 不存在的威胁?
Linux 主机:
我的虚拟网络和 IPv6 网络发现(多播流量)有问题。
(设置似乎有点复杂,我不记得每个设计决策的确切原因。尽管如此,网络被证明是稳定和可维护的。仍然可能存在优化和简化的空间。)
我的设置是这样的:
# brctl 显示 网桥名称 网桥 ID 启用 STP 的接口 br0 8000.f44d306689b5 没有 eno1 vnet0 vnet1
问题:
我的问题是:为什么我必须手动将 macvtap0 切换到混杂模式?多播不是应该与VM“开箱即用”的标准网络功能吗?(或者我的设置是如此不典型,以至于我的用例没有被涵盖?)
我们的网络使用 pimd 支持许多多播流。只有当我们在 pimd.conf 文件的 phyint 部分中使用“altnet multicast_source_ip masklen 24”语句时,许多(但不是全部)多播流才会流动。当某些网络设备根据全天的特定事件启动/关闭时,这些多播流会动态添加或删除。在一天中,pimd.conf 文件可能会多次添加或删除这些 altnet 语句。每次发生这种情况时,我们都必须发出“pimd -l”命令才能使更改生效。每次发出此命令时,都会重新加载守护程序并擦除 mroute 表。经过短暂的重新发现后,mroutes 慢慢地回到多播路由表中。
我想知道是否可以添加/删除 altnet 指令而无需编辑 pimd.conf 文件并发出 pimd -l 命令重新加载配置。换句话说,它们可以在运行时添加或删除吗?或者在不影响任何现有多播流/路由的情况下添加?
计算机 A 和计算机 B 连接到同一个交换机。A 在子网 192.168.1.0/24,B 在 192.168.2.0/24,所以他们不能使用单播直接通信。但是多播通信呢?它会起作用吗?
这里没有其他设备或软件可以帮助进行数据包路由。
我有一个使用端口 40000 发送多播消息的供应商。当我使用 tcpdump 观察流量时,该端口报告为安全网络,如下所示。在 40000 上侦听流量的应用程序永远不会收到消息。
这是一个端口冲突,会导致消息无法传递到侦听消息的应用程序,还是应该使用该端口仍然可以使用safetynetp?
tcp 转储流量看起来像
09:16:16.565887 IP x.x.x.x.33957 > x.x.x.x.safetynetp: UDP, length 263
09:16:16.569960 IP x.x.x.x.57385 > x.x.x.x.safetynetp: UDP, length 263
09:16:17.225545 IP x.x.x.x.39261 > x.x.x.x.safetynetp: UDP, length 50
这是在运行 RHEL 7 的服务器上。有没有办法让应用程序接收这些消息?