Why 我家里用的是一家三线的便宜小区宽带,标称有几个M的带宽,虽说有些资源确实能达到这个速度,但发现直连VPN的速度从来都没上去过,大概30k/s,不难猜测到,ISP在链路上做了手脚,即所谓的Layer 7 Priority QoS。因为入线是100M进宅然后PPPoE,不像ADSL那样直接物理链路就限制了连接速度,在链路层做QoS也很合理。平时HTTP打开网页、下载到合适链路的话很容易达到满速,而OpenVPN的TCP/UDP包估计就被当成P2P流量被限制了,所以网速一点都不给力。 用OpenVPN科学上网是最稳定最灵活的方式了,它基于udp/tcp的协议,比pptp、l2tp等直接跑IP包的开销虽说大一点,但好处就是容易把数据流重新封装,避开链路的关卡。显然它也支持HTTP代理,所以把OpenVPN变成HTTP协议,就可以在家里跑上满速的VPN。 How OpenVPN要过HTTP代理,只能用TCP协议,这个需要服务端和客户端都要稍作修改。 Polipo as Tunnel Proxy 首先在VPS上安装一个http proxy,我选择polipo,比较轻量级。 apt-get install polipo 配置也是很简单的,编辑/etc/polipo/config,原来的配置文件基本全都是注释,直接在文件底部加上: proxyAddress = "0.0.0.0" proxyPort = 8128 authCredentials = "user:password3.141592654" tunnelAllowedPorts = 1194 polipo默认只监听本地的127.0.0.1,要拿来做服务就要监听外网 polipo默认监听8123,为了不让扫代理的盯上,自己随便写个端口 加上http basic验证,这个密码不要紧,后面让openvpn自动应答 允许管道模式连接openvpn的1194端口 OpenVPN Server 服务端倒是不需要很多配置,确定是tcp模式监听连接(我是多开一个openvpn server,子网错开,个人喜欢吧) Client 客户端就要指定使用代理的方式: remote 127.0.0.1 1194 http-proxy YOUR.VPS.IP.HERE.com 8128 pw.txt http-proxy-retry 这个pw.txt是上述的HTTP的认证信息,用户名密码各一行。 现在连接OpenVPN,可以看到连接过程的Log有这么几句,基本就确定OpenVPN over HTTP成功了! Sun Mar [...]
paste.ubuntu.org.cn是国内很多linuxer喜爱的“在线剪贴板”,在跟网友交流时把代码、截图等发在这里,然后把网址发送给对方即可,而且对多种常见代码支持语法高亮,功能简单贴心。(不用像某网友在这个博客上篇帖子里面那样,在留言里面贴一大堆乱哄哄的代码……=。=) 虽说方便,但平时要发送文件时候还是要打开浏览器,再贴代码或者选择文件,多少有点繁琐,所以打算用python写个上传脚本,跟nautilous结合的话,上传截图就方便多了。 首先问球猫要了个ubpaste的perl的脚本,虽然我不懂perl,但发现上传部分只有10来行代码嘛……看来挺简单的,可能用urllib随便弄一下就可以了……结果发现,不行!paste.ubuntu.org.cn用的是mutipart/form协议方式的上传,而python标准库里面没有直接支持这种协议(perl却有……而且自动支持……所以几行代码搞定=。=)…… 查了一下资料后自己写了个class来实现mutipart的boundary,才知道用http来发送文件,特别是上传大文件是这么麻烦的事情……不过还好,不算很复杂,但是整个脚本下来居然有150行代码了……=。= 现在还不能直接拿来当nautilous script用,因为第一个参数是读入文字而不是文件,还在犹豫用bash来重新封装(使用curl一行就搞定上面所说的上传了)……[懒ing]
Page optimized by WP Minify WordPress Plugin