本文的参考文献:
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的应用程序共享文件中就行。