我在装有 Ubuntu 11.10 的 OpenVZ VPS 上设置了一个相当简单的 OpenVPN。客户端是 Mac OS X 10.8.2 上的 Viscosity 客户端,经过一些测试,我们可以排除客户端是问题的一部分。除了 Apple 的 iCloud 之外,一切都运行良好。网上冲浪、电子邮件、FTP、NNTP 和 Skype 都按预期运行。只有 iCloud 服务停止运行。
如果我连接到 VPN,iCloud 就会停止工作。我再也收不到任何信息,日历项目不会更新,通知也会停止工作。如果我断开连接,iCloud 就会恢复工作。再次连接,iCloud 就会停止工作。
这是 server.conf:
status openvpn-status.log
log /var/log/openvpn.log
verb 4
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh1024.pem
server 10.9.8.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push “dhcp-option DNS 10.9.8.1″
keepalive 10 120
duplicate-cn
cipher BF-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
tun-mtu 1500
mssfix 1400
我在脚本中使用 iptables,它也相当简单。
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT
iptables -A FORWARD -i venet0 -o tun0 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -j SNAT --to-source <server's public ip>
echo 1 > /proc/sys/net/ipv4/ip_forward
我也尝试过转发端口,但没有成功。
iptables -A FORWARD -p tcp -d 10.9.8.0/24 --dport 5222:5230 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 5222:5230 -j DNAT --to-destination 10.9.8.6
我有时也会遇到我无法控制的双 NAT 情况。
Client -> work VPN -> my OpenVPN box -> Internet.
Client -> Airport Express -> ISP (which is doing NAT) -> my OpenVPN box -> Internet.
这两种情况都是我所处的现实,我无法改变。我确实可以完全控制我的客户端和 OpenVPN 服务器。
我完全没有主意了。我在 OpenVPN 论坛上发过类似的问题,但还没有发布,似乎还在他们的审核队列中。在 freenode irc 频道上试过,但没人醒着,所以我就来了。我在 Google 上搜索了广泛地为此,却找不到任何相关资料。
帮我让 iCloud 的东西重新工作!(我试过 serverfault,它被关闭了,因为与主题无关。我在这里和 Unix 网站上也试过。在这里是因为根据我看到的关于 OpenVPN 的问题数量,它可能是一个更普通的受众,他们可能对它有更多的了解)
编辑:-我也尝试过升级到版本:2.3-beta1-debian0 - 问题仍然存在。-删除了除刷新规则之外的所有 iptables 规则 -留下此规则:iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -j SNAT --to-source(服务器 ip)-added iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
仍然没有任何效果。
如果我观察隧道,我可以在服务器上的 tcpdump 中看到流量:20:03:48.702835 IP nk11p01st-courier105-bz.push.apple.com.5223 > 10.9.8.6.60772:Flags [F.],seq 2635,ack 1218,win 76,options [nop,nop,TS val 914984811 ecr 745921298],长度 0 20:03:48.911244 IP 10.9.8.6.60772 > nk11p01st-courier105-bz.push.apple.com.5223:Flags [R],seq 3621143451,win 0,长度 0
但仍然没有发送任何推送消息/通知。:/
编辑:* 进一步的测试表明它实际上可能是客户端。* 最终编辑:吞咽看起来就像是客户。
请参阅此主题:http://www.sparklabs.com/forum/viewtopic.php?p=3223#p3223