本文的参考文献:
https://help.ubuntu.com/lts/serverguide/openvpn.html
http://jingpin.org/set-up-openvpn-in-vps/
http://linji.cn/6684.html
本文实现以下功能:
- 在Ubuntu服务器上搭建openVPN服务
- 启用openVPN服务器的ipv4流量转发已实现[BI!!!!]功能
- 在Windows上创建客户端连接
- 在iOS上创建客户端连接
Part i 在Ubuntu服务器上搭建openVPN服务
- 安装openVPN及RSA工具
sudo apt-get install openvpn easy-rsa
- 配置公钥:
mkdir /etc/openvpn/easy-rsa/ cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
这步操作将默认的配置文件复制到openvpn的配置目录下
-
(可选)修改公司…之类的联系方式:
nano /etc/openvpn/easy-rsa/vars
- 建立数字证书(CA)
cd /etc/openvpn/easy-rsa/ source vars ./clean-all ./build-ca
- 建立服务器端的私钥,注意有两个问yes/no的确认,都打y确认
./build-key-server myservername
- 建立Diffie Hellman变量文件,这个过程可能持续2分钟或更久:
./build-dh
至此服务器端需要的证书及密钥文件都会在keys/目录下
将他们拷贝至openVPN的目录cd keys/ cp myservername.crt myservername.key ca.crt dh2048.pem /etc/openvpn/
- 客户端也需要密钥文件来登录(当然也可以配置成使用用户名/密码登录,本人还没学到这里…).使用下面的方法 创建这些文件
cd /etc/openvpn/easy-rsa/ source vars ./build-key client1
往后在客户端登录时,需要以下三个文件
/etc/openvpn/ca.crt
/etc/openvpn/easy-rsa/keys/client1.crt
/etc/openvpn/easy-rsa/keys/client1.key - 上面三个文件找个办法从服务器拷贝到本机吧,因为登录要用哦
Part ii 开启ipv4流量转发及配置服务器
服务器上还需开启ipv4的流量转发,不然你只能通过VPN连服务器,其他别的啥都做不来。
1.开启ip转发
输入以下命令:
nano /etc/sysctl.conf
找到 “#net.ipv4.ip_forward=1” 这一行,删除那个 “#” 号,然后输按”Ctrl+X” 退出,退出时会问你是否保存,输入y然后回车确认文件名即可。
2.使转发生效
输入以下命令:
sysctl -p
如果一切正常,你将只会看到以下结果:
net.ipv4.ip_forward=1
3.创建iptables规则
输入以下命令:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to 178.18.17.142
记得将 “178.18.17.142” 改为你 VPS 的 IP 地址!
为了避免 VPS 重启后重新设置一遍 iptables 规则,你可以输入以下命令:
vi /etc/rc.local
回车,按下 “i” 键,并将以下内容粘贴到 “exit 0” 这一行的上面:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to 178.18.17.142 openvpn /etc/openvpn/server.conf
记得将 “178.18.17.142” 替换成你 VPS 的 IP 地址。完了之后,按下 “esc” 键退出插入模式,然后输入 “:wq” 保存。
小技巧:以上的命令是针对 Xen 类型的 VPS,如果是 OpenVZ 类型的,则需要将 “eth0” 替换成 “venet0″。
4.配置服务器规则
接下来是配置openVPN的设置
输入以下命令:
vi /etc/openvpn/server.conf
将会创建openVPN配置文件
回车,按下 “i” 键,然后粘贴以下内容:
port 1194 proto udp dev tun ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/myservername.crt key /etc/openvpn/easy-rsa/keys/myservername.key dh /etc/openvpn/easy-rsa/keys/dh2048.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 8.8.4.4" client-to-client duplicate-cn keepalive 10 120 comp-lzo user nobody group nogroup persist-key persist-tun status openvpn-status.log log /var/log/openvpn.log verb 3
按下 “esc” 键退出插入模式,输入 “:wq” 保存文件。
5.启动openVPN
输入以下命令:
/etc/init.d/openvpn start
回车。
Part iii 使用Windows系统作客户端连接
打开http://openvpn.net/download.html,点击Windows Installer后的链接,下载OpenVPN Windows客户端。
下载完成后,安装,安装中的选项全部按默认即可。
找个记事本,创建配置文件client.ovpn:
client dev tun proto udp remote 178.18.17.142 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key comp-lzo verb 3 redirect-gateway script-security 2
里面的178.18.17.142改成你服务器的IP地址。
把他丢到C:Program FilesOpenVPNconfig 目录下
另外,之前的三个文件:ca.crt client1.crt client1.key也都放在同一个目录
运行OpenVPN GUI,会在屏幕右下角的系统托盘区,会显示 右击该图标,会在菜单中出现我们添加的服务器,点击Connect,OpenVPN客户端就会开通链接OpenVPN服务器,过一会儿,OpenVPN图标变成绿色就是链接成功了。
Part iv 使用iOS系统作客户端连接
刚发现某个教程写的不错,试了下确实可用,就不赘述啦
参考:http://jingyan.baidu.com/article/f0e83a25da438222e5910193.html
请把上文中提到的ca.crt client1.crt client1.key以及client.ovpn都拖到iTunes的openVPN的应用程序共享文件中就行。