本文的主要目标为:在墙外的服务器安装openvpn来达到访问互联网的目的,前提是你应该至少有一台墙外服务器,付费或者免费均可。
以下为正文
1、安装openvpn及证书制作工具easy-rsa
sudo apt-get install openvpn easy-rsa
为了方便起见,以下在root用户下进行,使用sudo -i来切换至root用户
mkdir /etc/openvpn/easy-rsa/ cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/ cd /etc/openvpn/easy-rsa/
2、修改vars文件(减少生成key时的信息填充)
vim ./vars export KEY_COUNTRY="SP" export KEY_PROVINCE="NC" export KEY_CITY="SP" export KEY_ORG="rzx Company" export KEY_EMAIL="xxx@xxx.com" export KEY_CN=liu export KEY_NAME=liu export KEY_OU=liu export KEY_ALTNAMES="liu"
使修改在当前shell下生效
source ./vars
3、生成ca及服务端证书,以下标粗部分可自定义,若修改则需要更改server.conf相应属性
./clean-all ./build-ca ./build-key-server server ./build-dh openvpn --genkey --secret keys/ta.key cd keys/ cp server.crt server.key ca.crt dh2048.pem ta.key /etc/openvpn/
4、生成客户端证书
cd /etc/openvpn/easy-rsa/ ./build-key client1 cd keys 将client1.crt client1.key ca.crt ta.key文件复制到客户机上
5、配置server.conf文件:
openvpn 复制配置文件模板:
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ gzip -d /etc/openvpn/server.conf.gz
vim /etc/openvpn/server.conf
- push “redirect-gateway def1 bypass-dhcp”
- 解除tls-auth的注释
- 解除push “dhcp-option DNS 8.8.8.8″注释,并将dns修改为8.8.8.8
- 决定是否修改port及proto,注意若修改,则至少要保证防火墙及客户端配置一致
- 根据情况修改dh dh1024.pem为dh dh2048.pem
6、打开ip转发功能(若能连接到openvpn服务器且网络稳定,但不能通过openvpn访问互联网则检查此项)
vim /etc/sysctl.conf net.ipv4.ip_forward=1
echo 1 > /proc/sys/net/ipv4/ip_forward sysctl -p
7、修改启动脚本,配置iptables
vim /etc/rc.local iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT iptables -A FORWARD -j REJECT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT iptables -A INPUT -i tap+ -j ACCEPT iptables -A FORWARD -i tap+ -j ACCEPT
将启动脚本修改完毕后将上述内容直接在shell中运行以使内容生效(重启也可)
8、启动openvpn
service openvpn start service openvpn status #若启动不成功,请查看/var/log/syslog文件
至此服务端配置完成,下面配置客户端,只介绍windows下的配置过程:
- 下载OpenVpn GUI(注意此网站已经屏蔽,需要自己想办法进行下载)并安装
- 将之前生成的a.key client1.crt client1.key ca.crt文件复制到客户机上(在/etc/openvpn/easy-rsa/keys/目录下)
- 将/usr/share/doc/openvpn/examples/sample-config-files/目录下的client.conf文件复制到客户机上
- 将client.conf文件放入OpenVpn GUI安装目录下的confIg目录下
- 修改client.conf文件将ca cert key对应关系修改为上述相应文件,解除tls-auth的注释
- 修改client.conf的remote属性,改为你的服务器的ip或域名,端口信息视服务端情况而定
注意:
1、默认情况下一个客户端证书只能支持一个客户端连接,如果有多个客户端(手机、平板、PC等)需要再执行生成客户端证书过程。
2、如果持续的连接不上服务端,请检查防火墙配置是否正确,必要时请关闭。
3、如果连接上后过1分钟就断开,或者日志中有tls错误,不用怀疑,是GFW的功劳,目前很难解决。