通过与一个OpenVPN服务器建立连接,我们基本上在我们的设备和远端运行OpenVPN的主机之间建立了一个安全的通信通道。尽管在两个端点之间的通信可能被截获,但是信息是经过高强度加密的所以实际上它对于攻击者没什么用。OpenVPN除了扮演加密通信通道的调解人,我们也可以通过设置使服务器扮演互联网网关的角色。通过这种方式,我们可以连接任何不安全的Wifi,然后迅速的链接到远程的OpenVPN服务器,然后在不需要考虑偷窥的人或者无聊的管理员的情况下运行需要上网的程序。(注意:OpenVPN服务器旁还是需要信任的管理员的。)
目的: openvpn服务搭建,并可以正常运行(这里没有对iptables设置)
首先我们关闭
SELINUX=disabled
再yum安装依赖项和软件
yum install -y openssl openssl-devel lzo lzo-devel pam pam-devel automake pkgconfig openvpn
这里最新版的centos6.9安装出来的是openvpn-2.4.6
拷贝配置文件
cp /usr/share/doc/ openvpn-2.4.6 /sample/sample-config-files/server.conf /etc/openvpn/
安装easy-rsa,建议不要用yum安装的,少了好些东西需要自己找配置,这里我们拉取github上的资源
wget -c https://github.com/OpenVPN/easy-rsa/archive/master.zip unzip master.zip mv easy-rsa-master easy-rsa cp -rf easy-rsa /etc/openvpn #easy-rsa根据github上的文档来操作 cd /etc/openvpn/easy-rsa/easyrsa3 cp vars.example vars #一般情况下,默认的配置可以满足需求,也可以根据需要修改 ./easyrsa init-pki #建立一个空的pki结构,生成一系列的文件和目录 ./easyrsa build-ca #创建ca 密码 和 cn那么需要记住 ./easyrsa gen-req server nopass #创建服务端证书 common name 最好不要跟前面的cn那么一样 ./easyrsa sign server server #签约服务端证书 ./easyrsa gen-dh #创建Diffie-Hellman #下面是客户端的证书 #首先创建一个工作的目录 cd /home/ mkdir client cd client cp -R /root/easy-rsa ./ #这是解压过的easy-rsa 而不是生成了服务端证书的easy-rsa cd easy-rsa/easyrsa3/ cp vars.example vars #开始生成 ./easyrsa init-pki ./easyrsa gen-req orangleliu #用自己的名字,需要创建一个密码 和 cn name,自己用的 需要记住 #现在客户端的证书要跟服务端的交互,也就是签约,这样这个用户才能使用此vpn #切换到server证书目录下 cd /etc/openvpn/easy-rsa/easyrsa3/ ./easyrsa import-req /home/client/easy-rsa/easyrsa3/pki/reqs/orangleliu.req orangleliu #导入req ./easyrsa sign client orangleliu #用户签约,根据提示输入服务端的ca密码
看看 /etc/openvpn/easy-rsa/easyrsa3 生成的东西
再看看客户端 /home/client/easy-rsa/easyrsa3
把这些文件放到对应的一些目录下
服务端证书(放到配置文件一个目录,便于配置和查找)
cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /etc/openvpn/ cp /etc/openvpn/easy-rsa/easyrsa3/pki/private/server.key /etc/openvpn/ cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/server.crt /etc/openvpn/ cp /etc/openvpn/easy-rsa/easyrsa3/pki/dh.pem /etc/openvpn/
client证书(只是集中到一个文件夹下,给vpn用户使用)
mkdir /home/myclient cp /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt /home/myclient/ cp /etc/openvpn/easy-rsa/easyrsa3/pki/issued/orangleliu.crt /home/myclient/ cp /home/client/easy-rsa/easyrsa3/pki/private/orangleliu.key /home/myclient/
最后就是配置文件
vi /etc/openvpn/server.conf local 192.168.37.129 port 1194 proto udp dev tun ca /etc/openvpn/ca.crt cert /etc/openvpn/server.crt key /etc/openvpn/server.key # This file should be kept secret dh /etc/openvpn/dh.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 114.114.114.114" comp-lzo max-clients 100 keepalive 10 120 persist-key persist-tun status openvpn-status.log verb 3
最后启动服务,发现报错启动不起来,查看错误日志是这个:
Jul 1 23:01:54 iZbp1e2i7regbrx0xss9xcZ openvpn[2021]: WARNING: cannot stat file 'ta.key': No such file or directory (errno=2) Jul 1 23:01:54 iZbp1e2i7regbrx0xss9xcZ openvpn[2021]: Options error: --tls-auth fails with 'ta.key': No such file or directory (errno=2) Jul 1 23:01:54 iZbp1e2i7regbrx0xss9xcZ openvpn[2021]: Options error: Please correct these errors. Jul 1 23:01:54 iZbp1e2i7regbrx0xss9xcZ openvpn[2021]: Use --help for more information.
检查openvpn配置文件,注释:
#tls-auth ta.key 0 # This file is secret
然后再启动openvpn正常启动,最后查看网卡信息
最后我们还要设置内核转发开启和防火墙的转发规则
# 开启路由转发功能 sed -i '/net.ipv4.ip_forward/s/0/1/' /etc/sysctl.conf sysctl -p # 配置防火墙,别忘记保存 iptables -I INPUT -p tcp --dport 1194 -m comment --comment "openvpn" -j ACCEPT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE service iptables save # 启动openvpn并设置为开机启动service openvpn start chkconfig openvpn on