12月 032010
 

前一段时间参照这篇在Ubuntu上搭建OpenVPN服务器,并配合Mac和Windows的客户端 (一)在自己的 VPS 上装好 OpenVPN 服务器后使用一直不太正常,这两天花了点时间调试解决,结果总结如下。调试期间多次得到 @yegle @ChandleWEi @Greendamn 和 @FretiaX 等推友的帮助,尤其是 @ChandleWEi 深夜还在我家现场调试 iptables,特此感谢。

MTU 太大造成的连接不稳定

症状
刚连接上 OpenVPN 只用浏览器打开一两个页面时速度很正常,但随着流量加大网络就会开始阻塞,直到完全无法连接任何服务器。而且与 OpenVPN 服务器之间的连接容易自动断开。

解决方案
在 OpenVPN 服务器的 server.conf 里加入 mssfix 1300。此方案由 @yegle 提供。数字应该是他多次测试得出的较优选择,我试过设为 mssfix 1400 自己的 PC 没问题,而朋友的机器会速度奇慢。

DNS 污染造成的部分墙外网站无法访问

症状
连接 OpenVPN 后 Twitter 可以正常访问,被严重 DNS 污染的 Facebook 则会被浏览器提示无法连接。

解决方案
在 OpenVPN 服务器上使用 iptables 强行劫持客户端对任何 DNS 服务器的查询请求,将请求的目标 IP 地址修改为墙外的 DNS 服务器,例如 Google 的公共 DNS 服务器 8.8.8.8 和 8.8.4.4。此方案参照 @yegle 的方案稍作修改,不需要 OpenVPN 服务器自己提供 DNS 服务。iptables 命令如下:

iptables -t nat -A PREROUTING -p udp –dport 53 -j DNAT –to-destination 8.8.8.8 Continue reading »

12月 032010
 

作者:fqvpn

之前有一个用户抱怨说OpenVPN 不稳定,不定时的断,而且断了之后还不能自动重新连上。 经过调试发现是客户端配置文件中的persist-tun 配置项的问题。 OpenVPN 手册中的说明如下

–persist-tun
Don’t close and reopen TUN/TAP device or run up/down scripts across SIGUSR1 or –ping-restart restarts.

SIGUSR1 is a restart signal similar to SIGHUP, but which offers finer-grained control over reset options.

Windows 下面的客户端如果指定了这个配置项,会导致断线之后 (比如承载OpenVPN 的实际网络比如Wifi或者PPPoE断线)。
断线之后服务器端在一段时候内没有收到客户端的Keep-Alive 包, 认为客户端断线,中断连线。
当网络恢复的时候,客户端发现服务器端没有响应了(因为服务器关闭连接了), 重启自己的进程。 当有 persist-tun 选项时,它会重用之前的TUN/TAP 设备, 但是很奇怪它没有取重新认证,然后就一直卡在哪里,托盘图标一直时黄色的。 将persisit-tun 选项去掉之后,就能马上自动连上了。