在 Amazon EC2 上,我不能使用多播,但是机架空间云呢?能够使用多播将是非常有益的,因为大多数集群协议都依赖它......
目前,一家小公司的防火墙正在阻止他们网络上的多播。他们应该继续阻止多播吗?解除封锁是否存在安全问题?解锁它有什么好处吗?
我的防火墙配置的核心部分是:
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
这似乎RELATED不适用于多播响应:当主机发送到多播组(在我的例子中是 UPnP SSDP 发现,到 239.255.255.250:1900)时,来自特定 IP 地址的相应响应返回到发送者随机选择的端口被丢弃。
保留--state ESTABLISHED,RELATED语义的正确方法是什么,但使响应匹配适用于多播?
我是程序员,不是系统管理员,所以请原谅我的管理天真。我的软件是用 C# 编写的,它依赖于 UDP 多播。一台机器,即服务器,将事件流式传输到一个已知的 UDP 组地址(可配置,但默认为 224.130.103.5),网络上的所有客户端都订阅了该地址。
通常这很好用,但在我的一些客户中它根本不起作用,而且他们的网络管理员通常无法解决问题。我的问题是,在 Windows 网络上,UDP 多播不起作用的常见原因是什么?有什么我可以告诉网络管理员如何修复它或至少在哪里查看的吗?
我们有一组机器(大约 50 台并且还在不断增加)。每台机器都有一个搜索索引,每天需要更新多次。我们目前单独更新每台机器上的索引,但理想情况下,我们可以在一台机器上更新它,然后将新文件同步到集群的其余部分。我们最初使用 rsync 来处理这个问题,但随着机器数量的增加,这个解决方案显然无法扩展。我刚刚开始研究多播文件传输。任何有经验的人都可以推荐一些值得一看的地方?
我正在使用由 MAN(桥接)链接的两个数据中心进行设置,它们之间的所有内容都加倍,在故障转移模式下使用 RedHat Cluster、DRBD 和类似的东西。
我为每个位置都有一个 DNS 服务器,但事实证明,在 /etc/resolv.conf 中同时拥有这两个服务器并没有多大帮助;如果出现故障,客户端有一半的时间会等待 10 秒左右。换句话说,它使用它们进行负载平衡,而不是故障转移。所以我将两台服务器配置为使用带有 ucarp (?VRRP) 的 VIP。
有没有办法让我的两个 DNS 服务器都启动,例如,一直响应同一个 IP?如果一个 NS 请求得到两个答案,这没什么大不了的。
有没有办法用任播/多播等来做到这一点?
编辑:事实证明任播在我的场景中对我没有任何好处,我只有静态路由,而且大多数流量实际上是通过一座桥。
如果可能的话,让两个 DNS 服务器响应同一 IP 上的请求的方法会很有趣。
注意:虽然现在有一个可以接受的答案,但这只是一部分;检查下面的最终 iptables 规则。
我在一个接口上接收单播 RTP 流,并希望通过多播在第二个接口上将其发送出去。有问题的系统是一个运行 Linux 的嵌入式处理器,但我发现在我的 Ubuntu 10.10 主机上设置同样困难。基于http://lists.netfilter.org/pipermail/netfilter/2002-October/038890.html和其他来源的简单而明显的答案似乎是:
iptables -t nat -A PREROUTING -i [unicast-interface] -p udp --dport [unicast-incoming-port] -j DNAT --to-destination [multicast-addr]:[multicast-port]
Run Code Online (Sandbox Code Playgroud)
一些额外的研究导致了这种配对:
iptables -t nat -A PREROUTING -i [unicast-interface] -p udp --dport [unicast-incoming-port] -j DNAT --to-destination [multicast-addr]:[multicast-port]
iptables -A FORWARD -i [unicast-interface] -o [multicast-interface] -p udp --dport [unicast-incoming-port] -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
尽管列出时会显示规则,并且 tcpdump 显示传入的单播数据包,但单独机器上的 Wireshark 显示没有数据包传出。
我查看了如何使用 iptables 通过 DNAT 将单播转换为广播?但这似乎与广播案件的细节有关。
注意:没有设置其他的 iptables 规则。我已经使用 iptables -L(和 -t nat -L)和 iptables --flush …
我在StackOverflow上发布了这个,并被告知它可能更适合在这里。
我无法理解多播地址的工作原理。
首先,如果我有 N 个在不同网络上工作的客户端或对等点,它们是否都订阅同一个多播组,并且该组允许任何源发送消息,这些对等点/主机都可以通过这个相互通信吗?团体?(听起来像黑魔法!)
其次,我听说 IANA 控制/规范多播地址的暗示。那么您是否必须向 IANA 请求/询问您的项目/公司的特定多播地址?这是如何运作的?我错了吗?你能为我澄清多播网络吗?
非常感谢!
我正在设置一个笔记本用于软件演示目的。该机器拥有 8GB RAM、Core i7 Intel CPU、128GB SSD,运行 Ubuntu 12.04 LTS 64 位。该笔记本电脑用作 KVM 主机并运行一些 KVM 来宾。
所有此类来宾都使用virbr0默认网桥。为了使它们能够使用多播相互通信,我将以下内容添加到主机的 中/etc/sysctl.conf,如下所示
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
Run Code Online (Sandbox Code Playgroud)
随后,man sysctl(8)我发布了以下内容:
sudo /sbin/sysctl -p /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)
我的理解是,这应该使这些设置在重新启动后仍然存在。我测试了它,并惊讶地发现以下内容:
root@sdn1 :/proc/sys/net/bridge# more *tables
::::::::::::::
bridge-nf-call-arptables
::::::::::::::
1
::::::::::::::
bridge-nf-call-ip6tables
::::::::::::::
1
::::::::::::::
bridge-nf-call-iptables
::::::::::::::
1
Run Code Online (Sandbox Code Playgroud)
所有默认设置都将恢复!
是的。我可以使用一些笨拙的“解决方法”,例如将 a/sbin/sysctl -p /etc/sysctl.conf放入主机中,/etc/rc.local但我宁愿“做对”。我是否误解了手册页或者我错过了什么?
感谢您的任何提示。
——扎克
我有一个 MS NLB 集群(Win 2003),其中只包含两个主机。集群配置为使用多播操作模式(不是 IGMP)。
出于某种原因,我看到了用于 NLB 集群的数据包
目的地:MS-NLB-VirtServer-Multicast_bd:1a:0f:04 (03:ce:bd:1a:0f:04)
登陆局域网内的所有服务器。正常吗?可以做些什么来摆脱它们吗?我们不控制开关,但如果我知道该问什么的话,我可以请他们进行调整