ocean

匿名

12 月 032010
 

dog250 发表于 @ 2010年06月01日 22:32:00

OpenVPN由于其设计问题,速度很慢,有人认为是由于加密解密导致了速度变慢,当将cipher设置成none之后,发现效率并没有提升,并且使用最慢的cipher,使用比较好的cpu,设置比较大的txqueuelen,使用比较快的网卡–100baseT- FD,OpenVPN的效率还是不行,cpu使用率没多少,那么可以认为提升cpu性能已经于事无补了,后来才发现是OpenVPN自身的问题,通过源代码看得出OpenVPN是一个单进程单线程的程序,整个程序启动后就是一个大的循环,结构如下:

while (true) {
    select/poll/epoll
    do-io[tun-io/socket-io]
}

这样的结构效率肯定不会太高,因此就不要再想从配置上寻找优化的突破口了,然而修改源代码又太麻烦,于是考虑多进程的方式,那就是在客户端和服务器分别启动数量相同的N多个OpenVPN进程,一对一的连接,这就相当于建立了N条隧道,单条隧道不宽,但是可以有多条隧道,然后大流量由所有这些隧道分担, Continue reading »

12 月 032010
 

August 24, 2010 by LostRiver

        使用OpenVPN一段时间,发现Windows客户端速度一直远小于Linux客户端。我的网络环境两边都是百兆 IPv6共享接入服务端是OpenVZ VPS。linux下客户端和服务端单个TCP连接速度在500KB/s上下波动,通过OpenVPN后速度差别不大。未优化时,Windows下速度明显降低,全局下载带宽只能到100KB/s左右。优化后部分问题能够得到明显改善。

        OpenVPN有TCP和UDP两种连接方式,虽然OpenVPN over TCP不被推荐。
优化Windows TCP接收窗口(RWIN)

        作用有二,优化运行于OpenVPN上的TCP连接,在使用TCP模式时优化OpenVPN所使用的TCP连接。这里Vista/Win7无需优化。

        Windows下情况有些复杂,对于IPv6 TCP,Vista/Win7没有问题但之前版本Windows处理得很不好。首先Windows Server 2003系统下有个BUG,见KB966321,简单说被动打开的TCP连接接收窗口大小固定为16384且不随注册表项相应的设定值影响。我发现XP情况更坏,所有IPv6 TCP连接窗口大小都固定为最大44800,在我这里260ms的RTT下,单IPv6 TCP连接的带宽最大只有约160KB/s,该问题尚未解决。微软并未发布Win32 XP平台的补丁。 Continue reading »

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 选项去掉之后,就能马上自动连上了。

12 月 012010
 

Overview

OpenVPN is a full-featured open source SSL VPN solution that accommodates a wide range of configurations, including remote access, site-to-site VPNs, Wi-Fi security, and enterprise-scale remote access solutions with load balancing, failover, and fine-grained access-controls. Starting with the fundamental premise that complexity is the enemy of security, OpenVPN offers a cost-effective, lightweight alternative to other VPN technologies that is well-targeted for the SME and enterprise markets.

OpenVPN combines security with ease-of-use

OpenVPN's lightweight design sheds many of the complexities that characterize other VPN implementations. The OpenVPN security model is based on SSL, the industry standard for secure communications via the internet. OpenVPN implements OSI layer 2 or 3 secure network extension using the SSL/TLS protocol, supports flexible client authentication methods based on certificates, smart cards, and/or 2-factor authentication, and allows user or group-specific access control policies using firewall rules applied to the VPN virtual interface. OpenVPN is not a web application proxy and does not operate through a web browser.

What is OpenVPN?

With OpenVPN, you can:

    * tunnel any IP subnetwork or virtual ethernet adapter over a single UDP or TCP port,
    * configure a scalable, load-balanced VPN server farm using one or more machines which can handle thousands of dynamic connections from incoming VPN clients,
    * use all of the encryption, authentication, and certification features of the OpenSSL library to protect your private network traffic as it transits the internet,
    * use any cipher, key size, or HMAC digest (for datagram integrity checking) supported by the OpenSSL library,
    * choose between static-key based conventional encryption or certificate-based public key encryption,
    * use static, pre-shared keys or TLS-based dynamic key exchange,
    * use real-time adaptive link compression and traffic-shaping to manage link bandwidth utilization,
    * tunnel networks whose public endpoints are dynamic such as DHCP or dial-in clients,
    * tunnel networks through connection-oriented stateful firewalls without having to use explicit firewall rules,
    * tunnel networks over NAT,
    * create secure ethernet bridges using virtual tap devices, and
    * control OpenVPN using a GUI on Windows or Mac OS X. Continue reading »

12 月 012010
 

2010-10-24

笔者(66ip.com)在实践中遇到OPENVPN变慢,以及掉包的现像.在网络上也有许多人询问,但多无明确的答复.现根据研究略作分析.

1 为什么会掉包?
根本原因是由于网络连接质量较差.
当ICMP报文封装成IP数据报,再封装成帧在网络上传输时,由于帧的丢失导致掉包.

2 为什么将UDP改成TCP掉包会减少?
网上许多人答复掉包的解决方案是换用TCP协议.在下测试时,发现换用TCP协议的确使掉包减少了。
原因分析:
ICMP报文封装成IP数据报,此数据报传输在虚拟的VPN线路上。
当OPENVPN使用UDP协议时,虚拟的VPN线路是基于UDP协议的,ICMP本身并无什么差错控制功能,UDP也是一个无连接、不可靠的协议,所以线路质量不佳时就易表现为掉包。
当OPENVPN改用TCP协议时,虚拟的VPN线路是基于TCP协议的,TCP协议是有连接的、可靠的协议,有较强的差错控制、流量控制、拥塞控制功能,故虽然也会有帧丢失,但TCP协议本身进行了对出错的TCP报文段进行了重发,故掉包会得到抑制。

3 为什么UDP改成TCP后PING值会增加,下载速度会减慢?
经66ip.com测试,UDP改成TCP后,使得ping值严重增加,此时测试下载速度会较使用UDP协议有很大的下降.
原因分析:
改用TCP后,与使用UDP相比,丢帧的程度是差不多的,TCP以大量的重发来弥补丢帧,所以PING值会增加,下载速度会减慢。非常有趣的是,PING值会表现得很不稳定。

4 将UDP协议改成TCP是解决掉包的好主意吗?
不是. Continue reading »

11 月 292010
 

一、使用mod_gzip 和 mod_deflate对网页内容进行压缩

Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台。当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。这取决于文件中的内容。

利用Apache中的Gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。

网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏览体验外,另一个潜在的好处是Gzip与搜索引擎的抓取工具有着更好的关系。例如 Google就可以通过直接读取gzip文件来比普通手工抓取更快地检索网页。在Google网站管理员工具(Google Webmaster Tools)中你可以看到,sitemap.xml.gz 是直接作为Sitemap被提交的。

而这些好处并不仅仅限于静态内容,PHP动态页面和其他动态生成的内容均可以通过使用Apache压缩模块压缩,加上其他的性能调整机制和相应的服务器端缓存规则,这可以大大提高网站的性能。

因此,对于部署在Linux服务器上的PHP程序,在服务器支持的情况下,我们建议你开启使用Gzip Web压缩。

二、 Gzip Web压缩工作原理

Web服务器处理HTTP压缩的过程如下: Continue reading »

11 月 292010
 

2010-11-26 来源:阮一峰博客

有人在Stack Overflow上发问,动手开发网站之前,需要知道哪些事情?不出意料地,他得到了一大堆回答。

通常情况下,你需要把所有人的发言从头到尾读一遍。但是,Stack Overflow有一个很贴心的设计,它允许在问题下方开设一个wiki区,让所有人共同编辑一个最佳答案。于是,就有了下面这篇文章,一共总结出六个方面共计62条“网站开发须知”。

我发现,这种概述性的问题,最适合这种集合群智、头脑风暴式的回答方式了。这也是我第一次觉得,Stack Overflow做到了Wikipedia做不到的事。(难怪它最近挤进了全美前400大网站。)

在我的印象中,关于网站开发,这样全面的概述性文章非常少见,因此也就非常有用。大家不妨看看,62件事情中你做到了多少?

一、界面和用户体验(Interface and User Experience)

1.1、知道各大浏览器执行Web标准的情况,保证你的站点在主要浏览器上都能正常运行。你至少要测试以下引擎:Gecko(用于 Firefox)、Webkit(用于Safari、Chrome和一些手机浏览器)、IE(你可以利用微软发布的Application Compatibility VPC Images进行测试)和Opera。同时,不同的操作系统,可能也会影响浏览器如何呈现你的网站。

1.2、除了浏览器,网站还有其他使用方式:手机、屏幕朗读器、搜索引擎等等。你应该知道在这些情况下,你的网站的运行状况。MobiForge提供了手机网站开发的一些相关知识。

1.3、知道如何在基本不影响用户使用的情况下升级网站。通常来说,你必须有版本控制系统(CVS、Subversion、Git等等)和数据备份机制(backup)。

1.4、不要让用户看到那些不友好的出错提示。 Continue reading »