openvpn 与 easy-rsa-2.0 配置生效

安装阶段展开目录

1. 添加源展开目录
[root@openvpn ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 
[root@openvpn ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@openvpn ~]# mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
[root@openvpn ~]# mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup 
[root@openvpn ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2. 安装 openvpn展开目录
[root@openvpn ~]# yum -y install openvpn easy-rsa

20171225103806.png

生成 openvpn 必备文件展开目录

如果你安装的 easy-rsa-3.0 的版本,生成证书步骤请参考这里,2.2 的请继续向下走,判断安装的 easy-rsa 版本看下图。

1. 生成证书展开目录
[root@openvpn ~]# cp -r /usr/share/easy-rsa/ /etc/openvpn/
[root@openvpn ~]# cd /etc/openvpn/easy-rsa/2.0/
[root@openvpn /etc/openvpn/easy-rsa/2.0]# source vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys
[root@openvpn /etc/openvpn/easy-rsa/2.0]# ./clean-all
[root@openvpn /etc/openvpn/easy-rsa/2.0]# ./build-ca

一路回车 y 即可

2. 生成服务器端证书和秘钥展开目录
[root@openvpn /etc/openvpn/easy-rsa/2.0]# ./build-key-server server

一路回车 Y 即可。

20171225104227.png

3. 生成客户端证书和密钥展开目录
[root@openvpn /etc/openvpn/easy-rsa/2.0]# ./build-key client

一路回车 Y

20171225104403.png

4. 生成 Diffie Hellman 参数展开目录

20171225104457.png

该生成的都生成了,下面开始编写配置文件

配置 OpenVPN 服务器端文件展开目录

编辑 / etc/openvpn/server.conf 文件,没有就手动创建,我的配置文件如下。如果是云服务器,尽量不要使用 upd 协议和 1194 端口,因为在国内很多接入商都不允许,导致 1194 端被封不能用。当然你也可以试一下,如果被封了就换一下。

local 192.168.1.168   #服务器IP
port 1194             #占用端口
proto udp             #使用udp协议
dev tun               #使用tun模式,也可以使用tap

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt    
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem        #指定证书位置

ifconfig-pool-persist /etc/openvpn/ipp.txt          #存放每个人使用的IP

server 17.166.221.0 255.255.255.0                   #客户端DHCP
push "route 192.168.1.0 255.255.255.0"              #VPN访问网段,我的内网是192.168.1.0网段
push "redirect-gateway def1 bypass-dhcp"            #所有流量都走VPN,如果不需要将下三行去掉
push "dhcp-option DNS 223.5.5.5"                    #DNS1
push "dhcp-option DNS 223.6.6.6"                    #DNS2
client-to-client                                    #允许客户端之间互通
   
keepalive 20 120                                    #保持连接时间 
comp-lzo                                            #开启vpn压缩
#duplicate-cn                                       #允许多人使用同一个证书连接VPN,不建议使用,注释状态

user openvpn                                        #运行用户
group openvpn                                       #运行组

persist-key                                         
persist-tun
status openvpn-status.log    
log-append  openvpn.log     
verb 1                                              #日志级别0-9,等级越高,记录越多
mute 20

20171225111020.png

启动 openvpn,看状态。展开目录
[root@openvpn ~]# systemctl start openvpn@server
[root@openvpn ~]# systemctl enable openvpn@server
Created symlink from /etc/systemd/system/multi-user.target.wants/openvpn@server.service to /usr/lib/systemd/system/openvpn@.service.

20171225112216.png

正常启动了,下面开始配置 iptables 及转发。

配置 iptables 及转发展开目录

关闭 firewall展开目录
[root@openvpn ~]# systemctl stop firewalld.service    //停止服务
[root@openvpn ~]# systemctl disable firewalld.service //禁止开启动  
[root@openvpn ~]# firewall-cmd --state                //查看状态
安装 iptables,写入策略,开启 1194 及 22 端口展开目录
[root@openvpn ~]# yum -y install iptables iptables-services
[root@openvpn ~]# cat >>/etc/sysconfig/iptables<<OEF# Generated by iptables-save v1.4.7 on Fri Jul  7 17:16:42 2017
> *filter
> :INPUT ACCEPT [0:0]
> :FORWARD ACCEPT [0:0]
> :OUTPUT ACCEPT [90:10238]
> -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
> -A INPUT -p icmp -j ACCEPT
> -A INPUT -i lo -j ACCEPT
> -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
> -A INPUT -p udp -m state --state NEW -m udp --dport 1194 -j ACCEPT
> -A INPUT -j REJECT --reject-with icmp-host-prohibited
> -A FORWARD -j REJECT --reject-with icmp-host-prohibited
> COMMIT
> *nat
> :PREROUTING ACCEPT [37:5449]
> :POSTROUTING ACCEPT [0:0]
> :OUTPUT ACCEPT [0:0]
> COMMIT
> # Completed on Fri Jul  7 17:16:42 2017
> OEF
[root@openvpn ~]# systemctl restart iptables.service
[root@openvpn ~]# iptables -t nat -A POSTROUTING -s 17.166.221.0/24 -o ens192 -j MASQUERADE   #NAT

20171225113612.png

开启转发展开目录
[root@openvpn ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@openvpn ~]# sysctl -p

服务端到此配置结束,生成证书开始连接。

客户端配置展开目录

1. 添加 openvpn 用户展开目录

使用 easy-rsa-3.0 的忽略这里撒,直接从编辑 client.ovpn 文件开始。

[root@openvpn ~]# cd /etc/openvpn/easy-rsa/2.0/
[root@openvpn /etc/openvpn/easy-rsa/2.0]# source vars 
[root@openvpn /etc/openvpn/easy-rsa/2.0]# ./build-key dalin
[root@openvpn /etc/openvpn/easy-rsa/2.0]# sz keys/dalin.*  #下载用户证书文件
[root@openvpn /etc/openvpn/easy-rsa/2.0]# sz keys/ca.*     #下载CA
2. 编辑 client.ovpn 文件展开目录
client
proto udp
dev tun
remote 36.0.0.0 1194

ca ca.crt
cert dalin.crt
key dalin.key

resolv-retry infinite
nobind
mute-replay-warnings

keepalive 20 120
comp-lzo
user openvpn
group openvpn

persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 3
mute 20

测试展开目录

emmmm,貌似没有可用的的测试服务器,用云服务器吧,试了一个 windows 的云服务器,死活连接不上,貌似是有限制,只好上 linux 了,但是遇到了点问题,连接是能连接上,ping 内网服务器不通,显示 Destination Host Prohibited,症状如下。

20171225125130.png

解决办法

修改 iptables 配置文件,这行去掉,重启 iptables 即可,修改之前记得保存一下 iptables 配置,上面貌似 NAT 那条木有保存。

#-A FORWARD -j REJECT --reject-with icmp-host-prohibited

我是直接复制 Centos6 的默认规则贴近来的,所以会有上面那条,如果你没有上面那条,配置没问题就可以正常使用了,不通的原因是因为 FORWARD 链中没有规则,所以 FORWORD 的数据包都被扔掉了,而且要添加我也不知道要怎么写,所以直接就注释了吧,哈哈,如果你的 vpn 服务器只是装 vpn,没有什么限制端口访问控制之类的东西直接将 iptables 的默认规则全清了把 NAT 贴进去就行了,最后的结果。

20171225130411.png

最后看看外网 IP,是不是公司的,telnet 了一下一个 2008 系统,可以通过,酱紫就可以了。

QQ截图20171225131627.png

发表评论