部署环境:
centos 7
安装EPEL源:
rpm -ivh https://mirrors.ustc.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm #我的环境是7版本故使用7的epel,6版本可参考另一篇博客"Yum常用的一些配置"
安装软件包和依赖包:
yum install openvpn easy-rsa openssh-server lzo openssl openssl-devel openvpn NetworkManager-openvpn openvpn-auth-ldap -y
生成证书文件:
# mkdir -p /etc/openvpn/easy-rsa
# cp -a /usr/share/easy-rsa/安装版本(我这里是3)/* /etc/openvpn/easy-rsa
# cd /etc/openvpn/easy-rsa/
# ./easyrsa init-pki # 初始化证书目录pki
# ./easyrsa build-ca nopass # 创建根证书,提示输入Common Name,名称随意,但是不能和服务端证书或客户端证书名称相同
# ./easyrsa gen-dh # 生成Diffle Human参数,它能保证密钥在网络中安全传输
# ./easyrsa build-server-full server nopass # server是服务端证书名称,可以用其它名称
# ./easyrsa build-client-full client nopass # barry是客户端证书名称,可以用其它名称
编辑配置/etc/openvpn/server.conf文件:
# cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/server.conf
# vi /etc/openvpn/server.conf
local 192.168.1.1 填写#服务器IP
port 1194 #监听端口
proto tcp #使用tcp协议可更改udp
dev tun #虚拟接口类型
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
server 192.168.2.0 255.255.255.0 # 给客户端分配的IP段
ifconfig-pool-persist ipp.txt # 记录客户端和虚拟ip的映射关系,当客户端重新连接时依然被分配断开之前的IP地址
push "redirect-gateway def1 bypass-dhcp" # 重定向客户端网关
push "dhcp-option DNS 8.8.8.8" # 选择一个DNS,这里用Google的DNS示例
client-to-client
keepalive 10 120
compress lz4-v2
push "compress lz4-v2"
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn-status.log
log /var/log/openvpn.log
verb 3 # 日志等级
开启路由转发:
$ vi /etc/sysctl.conf
# ...
net.ipv4.ip_forward = 1
$ syscrl -p
添加防火墙转发规则:
# iptables -t nat -A POSTROUTING -s 10.2.0.0/24 -j MASQUERADE
启动服务:
systemctl start openvpn@server
客户端使用:
# cd /etc/openvpn/client
# cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/client
# cp /etc/openvpn/easy-rsa/pki/issued/client.crt /etc/openvpn/client
# cp /etc/openvpn/easy-rsa/pki/private/client.key /etc/openvpn/client
# vi client.ovpn
client #指定当前VPN是客户端
dev tun #必须与服务器端的保持一致
proto tcp #必须与服务器端的保持一致
sndbuf 0
rcvbuf 0
remote 192.168.1.1 #服务器 监听端口
#dhcp-option DNS 8.8.8.8
#ip-win32 netsh
resolv-retry infinite
#tun-mtu 65500
link-mtu 65500
persist-key
persist-tun
ca ca.crt #指定CA证书的文件路径
cert client.crt #指定当前客户端的证书文件路径
key client.key #指定当前客户端的私钥文件路径
#keepalive 20 240
cipher AES-256-CBC
#指定采用服务器校验方式
#tls-auth ta.key 1 #如果服务器设置了防御DoS等攻击的ta.key,则必须每个客
comp-lzo #启用压缩,与服务器保持一致
verb 4 #指定日志文件的记录详细级别,可选0-9,等级越高日志内容越详细
将/etc/openvpn/client打包放至客户端目录加载client.ovpn即可(测试linux、windows正常)
COMMENTS | NOTHING