linux下openvpn服务部署

发表于 2019-06-15  6.45k 次阅读


部署环境:

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正常)

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

43

scanz个人博客