centos7-openvpn 发表于 2018-05-15 | 评论数: | 阅读次数: 本文字数: 5.4k | 阅读时长 ≈ 5 分钟 摘要 本文内容来源于网络,个人收集整理,请勿传播 待续。。。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243环境:CentOS Linux release 7.3.1611 (Core)查看os版本命令:[root@openvpn ~]# cat /etc/redhat-release命令记录如下:123yum upgrade #更新源yum install epel-release -y #安装epel库yum install easy-rsa openssh-server lzo openssl openssl-devel openvpn NetworkManager-openvpn openvpn-auth-ldap -y #安装一系列相关软件、 拷贝配置文件:1cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn #拷贝server.conf到/etc/openvpn目录下 编辑openvpn配置文件1vim /etc/openvpn/server.conf 我的配置如下(有些注释掉了,但留着备用):12345678910111213141516171819202122232425262728port 1194proto tcp #指定TCP协议(使用TCP协议如果连接上VPN后网络很慢,可以更改成使用UDP协议)dev tun #采用路由隧道模式ca ca.crtcert server.crtkey server.key # This file should be kept secret 服务器密钥dh dh2048.pem #密钥交换协议文件topology subnetserver 10.8.0.0 255.255.255.0 #给客户端分配地址池,注意:不能和VPN服务器内网网段相同ifconfig-pool-persist ipp.txtpush "route 0.0.0.0 0.0.0.0" #定义网关push "route 192.168.0.0 255.255.255.0" #推送vpn服务器内网网段给客户端push "redirect-gateway def1 bypass-dhcp"push "dhcp-option DNS 223.5.5.5"push "dhcp-option DNS 114.114.114.114";client-to-client #这里为了安全起见,我禁止了客户端间的互访;duplicate-cn #正式环境下建议注释掉,因为会有安全隐患keepalive 10 120 #存活时间,10秒ping一次,120 如未收到响应则视为断线tls-auth ta.key 0 # 第二个参数在服务器端应该为'0',在客户端应该为'1'。cipher AES-256-CBC # 选择一个密码加密算法。comp-lzo #传输数据压缩max-clients 50 #最多允许 50 客户端连接persist-keypersist-tunstatus openvpn-status.log # OpenVPN的状态日志log-append openvpn.log # OpenVPN的运行日志(追加)verb 3mute 20 # 相同类别的信息只有前20条会输出到日志文件中 更多配置参考请访问:http://www.softown.cn/post/137.html准备配置证书文件123mkdir -p /etc/openvpn/easy-rsa/keyscp -a /usr/share/easy-rsa/2.0/* /etc/openvpn/easy-rsa/vi /etc/openvpn/easy-rsa/vars 修改vars配置的内容, 自定义设置各项值就可以。复制代码export KEY_COUNTRY="CN"export KEY_PROVINCE="ZJ"export KEY_CITY="HZ"export KEY_ORG="xihu" #定义所在的组织export KEY_EMAIL="airoot@hz.com"export KEY_OU="westlake" #定义所在的单位export KEY_NAME="openvpn" #定义openvpn服务器的名称export KEY_CN="APEC" #这行配置,需要将前边的“#”号注释去掉。复制代码 开始制作证书12345cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnfcd /etc/openvpn/easy-rsa #切换工作目录source ./vars #让配置文件生效./clean-all./build-ca #之前已配置好相关参数,故执行命令后,按回车键,一直到结束即可。 创建服务端证书1./build-key-server server #创建通用名(common name)为"server"的证书文件 #按回车键进行,在提示输入密码的地方,设置一个密码如qaz123,在An optional company name处输入CNABB,最后输入两次“y”确认 生成防攻击的key文件1openvpn --genkey --secret keys/ta.key # 生成ta.key文件(防DDos攻击、UDP淹没等恶意攻击) 创建客户端证书1234567./build-dh #创建秘钥文件,耗时1分钟左右ls /etc/openvpn/easy-rsa/keys/ #可以看到,有一个db2048.pem的文件产生。cd /etc/openvpn/easy-rsa/keyscp dh2048.pem ca.crt server.crt server.key ta.key /etc/openvpncd /etc/openvpn/easy-rsa ./build-key client #创建一个通用名(common name)为 client的客户端证书 #创建客户端证书文件,按回车进行,提示输入密码的地方,输入之前设置的证书密码 "qaz123",An optional company name处输入先前设置的公司名字(CNABB)。【一定要和先前输入的一样】 #另外注意:有多少个客户端就需要./build-key client 多少次,当然这里的client名字需不同。1ls /etc/openvpn/easy-rsa/keys/ #可以看到,生成了客户端的证书文件 设置iptables、路由转发12345678910yum install -y iptables-servicessystemctl enable iptablessystemctl stop firewalld #关闭firewall防火墙,我的OS没有预装防火墙,因此这条命令不用输,systemctl start iptables #启动iptablesiptables -F #清空默认的iptables规则iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE #设置iptables NAT转发规则service iptables save #保存防火墙规则echo 1 > /proc/sys/net/ipv4/ip_forward #临时开启路由转发vi /etc/sysctl.conf #编辑配置文件,修改以下配置,设置永久路由转发net.ipv4.ip_forward = 1 启动openvpn1234systemctl -f enable openvpn@server.service #设置启动文件systemctl start openvpn@server.service #启动openvpn的命令 #注意,这里如果启动报错,说明你前面的server.conf配置文件有误,需要调试配置文件openvpn客户端(电脑)连接vpn把服务器上 /etc/openvpn/easy-rsa/keys/ 目录下的三个证书文件和一个Ddos防护文件,下载到客户端:ca.crt,client.crt,client.key , ta.key安装好openvpn客户端软件后,把以上文件存放到openvpn安装目录的config文件夹下,然后从sample-config文件夹内拷贝client.ovpn 到config文件夹下,编辑client.ovpn,指定openvpn服务器的ip地址。再根据服务器端的配置做相应修改,我的client.conf配置如下:复制代码clientdev tunproto tcpremote 服务器IP 1194resolv-retry infinitenobindpersist-keypersist-tunca ca.crtcert client.crtkey client.keyremote-cert-tls servertls-auth ta.key 1cipher AES-256-CBCcomp-lzoverb 3mute 20复制代码 配置好后,点击openvpn的客户端图标,连接vpn。 openvpn的图标显示绿色后,表示已经连接上vpn了。openvpn客户端(手机)连接vpn如果要使用手机连接则需要合并这几个文件到client.conf里,格式如下:复制代码clientdev tunproto tcpremote 服务器IP 1194resolv-retry infinitenobindpersist-keypersist-tuncipher AES-256-CBCcomp-lzoverb 3删除或者注释掉以下几行内容:在这里我把它们注释掉:ca ca.crt 改为:#ca ca.crtcert client.crt 改为:#cert client.crtkey client.key 改为:#key client.keytls-auth ta.key 1 改为:#tls-auth ta.key 1在最后面添加以下内容:<ca> ca.crt文件内容</ca><cert> client.crt文件内容</cert><key> client.key文件内容</key>key-direction 1 <tls-auth> ta.key文件内容</tls-auth>复制代码