Categories
木有技术

Ubuntu14 搭建openVPN服务器翻GREATWALL啦! iOS也可以用哦~

本文的参考文献:
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服务

  1. 安装openVPN及RSA工具
    sudo apt-get install openvpn easy-rsa
  2. 配置公钥:
    mkdir /etc/openvpn/easy-rsa/
    cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

    这步操作将默认的配置文件复制到openvpn的配置目录下

  3. (可选)修改公司…之类的联系方式:

    nano /etc/openvpn/easy-rsa/vars
  4. 建立数字证书(CA)
    cd /etc/openvpn/easy-rsa/
    source vars
    ./clean-all
    ./build-ca

     

  5. 建立服务器端的私钥,注意有两个问yes/no的确认,都打y确认
    ./build-key-server myservername

     

  6. 建立Diffie Hellman变量文件,这个过程可能持续2分钟或更久:
    ./build-dh

    至此服务器端需要的证书及密钥文件都会在keys/目录下
    将他们拷贝至openVPN的目录

    cd keys/
    cp myservername.crt myservername.key ca.crt dh2048.pem /etc/openvpn/

     

  7. 客户端也需要密钥文件来登录(当然也可以配置成使用用户名/密码登录,本人还没学到这里…).使用下面的方法 创建这些文件
    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

  8. 上面三个文件找个办法从服务器拷贝到本机吧,因为登录要用哦

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,会在屏幕右下角的系统托盘区,会显示openvpn_tray 右击该图标,会在菜单中出现我们添加的服务器,点击Connect,OpenVPN客户端就会开通链接OpenVPN服务器,过一会儿,OpenVPN图标变成绿色就是链接成功了。


 

Part iv 使用iOS系统作客户端连接

刚发现某个教程写的不错,试了下确实可用,就不赘述啦
参考:http://jingyan.baidu.com/article/f0e83a25da438222e5910193.html
请把上文中提到的ca.crt client1.crt client1.key以及client.ovpn都拖到iTunes的openVPN的应用程序共享文件中就行。
 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.