标题:搭建OpenVPN@VPS@OpenVZ 出处:Felix021 时间:Sun, 20 Nov 2011 01:35:52 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?2057 内容:   上次说了,OpenVZ解决方案的VPS内核没有ppp模块, 不能搞PPTP;不过还好,很多服务商都提供tun(有些需要找客服发ticket,有些在管理后台就可以开,比如BurstNet的就在管理后台开),可以搞OpenVPN。据说OpenVPN效率比PPTP要高,不过PPTP的好处是各种OS直接集成(Windows7,iOS,Android……),而OpenVPN就相对折腾一点。   闲话不说了,进入正题。 ==== 首先坑的总结,下面特别注意下 ==== 1. iptables规则执行完要输入完然后check一下是否规则已经添加 2. 21端口不靠谱 3. tcp协议不靠谱 4. 配置Server的时候不要一路按回车!有些是问[y/n]需要输入 y 的! ==== 服务器端的配置 ==== 1. 开通tun,BurstNet的在“Info & Security”里面可以点“Enable Tun/Tap”,然后重启VPS即可。反正就是要确保 /dev/net/tun 存在。 2. 安装openvpn服务器程序 sudo apt-get install openvpn 3. 拷贝openvpn的配置脚本(下面全部用root执行吧 比较省事) cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn 4. 配置Server,其中大部分提问都是默认回车就行,不过有一些(主要是后面3个)会问y/n,都要写y cd /etc/openvpn/easy-rsa/2.0 source vars ./clean-all ./build-ca ./build-key-server server ./build-key username ./build-dh 5. 在rc.local中增加iptables规则,以实现转发(其实可以用iptables-save restore之类的,不过没折腾过) vi /etc/rc.local #在exit 0前面加入 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE 这样在每次重启的时候会自动执行 6. 执行上面列出的iptables命令,然后 iptables -L -t nat 看看POSTROUTING里面是不是有了 target prot opt source destination MASQUERADE all -- 10.8.0.0/24 anywhere 7. 增加/etc/openvpn/openvpn.conf,内容如下引用 dev tun proto udp port 8080 ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt cert /etc/openvpn/easy-rsa/2.0/keys/server.crt key /etc/openvpn/easy-rsa/2.0/keys/server.key dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem user nobody group nogroup server 10.8.0.0 255.255.255.0 persist-key persist-tun client-to-client push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" comp-lzo status openvpn-status.log verb 3 可以自行修改端口、协议类型,但是 a) 发现tcp比udp慢、不靠谱 b) 发现tcp + 端口21 每次访问网页的时候会被reset(GFW真神奇!) 8. 启动Server /etc/init.d/openvpn start ==== Windows客户端的设置 ==== 1. 在这里下载最新版本的 openvpn 安装程序并安装 http://openvpn.net/index.php/open-source/downloads.html 2. 建立目录 username ,将服务器上的这三个文件拷贝进去: /etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/easy-rsa/2.0/keys/username.crt /etc/openvpn/easy-rsa/2.0/keys/username.key 3. 在这个目录下创建一个 username.ovpn 文件,内容为 引用 client dev tun proto udp # 记得修改下面的域名和端口,跟服务器保持一致 remote vpn.example.com 8080 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert username.crt key username.key comp-lzo verb 3 4. 右键点击 username.ovpn ,选择“Start OpenVPN on this config file” 当出现“Initialization Sequence Completed”字样的时候说明连接成功了。 Enjoy~ ==== 添加其他帐号 ==== cd /etc/openvpn/easy-rsa/2.0 source ./vars ./build-key another_user 以前一直以为会挺麻烦(的确挺麻烦的),但是自己动手试了一下,就好多了。 只要我们的铁骑继续前进,这些螳臂当车的困难怎么能够阻挡得了呢! p.s. 本文参考并修改自 http://blog.stevenwang.name/vps-openvpn-124001.html ,多谢czyhd同学的协助。 Generated by Bo-blog 2.1.0