![OpenVPN - OpenVZ - 多播以及如何启用它](https://linux22.com/image/675145/OpenVPN%20-%20OpenVZ%20-%20%E5%A4%9A%E6%92%AD%E4%BB%A5%E5%8F%8A%E5%A6%82%E4%BD%95%E5%90%AF%E7%94%A8%E5%AE%83.png)
大家好
我的应用程序主要使用多播数据包
IP = 224.8.0.1
我已经在普通 Wifi/以太网和托管网络上进行了测试,一切正常。
问题:
我的 OpenVZ 服务器运行 OpenVPN:UDP。我的应用程序应该允许多播数据包通过 VPN 并被连接到 VPN 的任何其他客户端接收,但事实并非如此。
我在 OpenVPN tun0 适配器上执行了 tcpdump,没有发送多播流量,但是在发送方,wireshark 检测到正在发送的流量。
经过研究,我偶然发现了这篇文章
https://openvpn.net/archive/openvpn-devel/2004-04/msg00032.html
我会尝试切换到“dev tap”(无桥接)看看是否有帮助。
我确实看到过一些关于多播/igmp 无法在 tun 设备上运行的旧报告,但也读过一些关于它“现在可以运行”的报告...
另外,请确保您已在 tun 设备上禁用 rp_filter,因为多播地址未通过“rp_filter”检查(/proc/sys/net/ipv4/conf/*/rp_filter)
我无法切换到 tap,因此我尝试 echo 1 > ../../rp_filter 但它是写保护的。
根据另一篇文章,以下是3 种可能的解决方案:
https://community.openvpn.net/openvpn/ticket/79
(1)让内核进行路由。这意味着在隧道的每一端都回退到一个 OpenVPN 守护进程,就像在 1.x 中一样。
(2)在多客户端模式下,使用 OpenVPN 2.0 中的 tun 接口。这会将多播视为广播。
(3)使用多播隧道 - 这将通过封装在 IP-in-IP 容器中的 OpenVPN 来传输多播数据包,这应该可以正常工作。
另一个[可能][3]的解决方案是:
您需要嗅探并拦截传入的 IGMP 数据包、维护多播路由状态并根据新引入的多播转发表复制多播数据包。
选项(3)似乎最合适,但我不知道如何设置。
有人可以帮我吗?
服务器配置文件
port 1025
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh2048.pem
server 10.0.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-config-dir ccd
route 10.0.0.2 255.255.255.252
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
client-to-client
keepalive 10 120
comp-lzo no
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 4
#possible bandwidth increase
sndbuf 393216
rcvbuf 393216
push "sndbuf 393216"
push "rcvbuf 393216"
push "remote-gateway x.x.x.x"
push "dhcp-option DNS 8.8.8.8"
ccd-exclusive
#for checking active clients
management localhost 7505
iptables 很好,我最近添加了
iptables -A 输入 -i tun0 -m pkttype --pkt 类型多播 -j 接受
iptables -A 输入 -i tun0 --protocol igmp -j 接受
但没有运气