由于运维需要,我个人常使用OpenVPN打通机房之间内网的互连,但是配置较多老是忘记,于是抽空整理了一下不同工作模式的配置模板。
服务器(Server)模式是单一服务器对多个客户端的模式,应用场景是出差员工通过移动设备、笔记本电脑拨入公司内网。
使用账号密码认证、服务端配置模板如下:
#通讯协议,可以选择TCP或者UDP,UDP更适合于在丢包率较大的环境使用
proto tcp
#端口号
port 1194
#使用tun或者tap设备
dev tun
#实现/24子网掩码换算,最大客户端有255个
topology subnet
#设置子网,默认是10.8.0.0/24
server 10.8.0.0 255.255.255.0
#认证算法
auth SHA256
#加密算法
cipher AES-256-CBC
#使用LZO压缩
comp-lzo adaptive
#告知客户端通讯将采用LZO压缩
push "comp-lzo adaptive"
#此处是全局路由选项,即告知客户端将所有流量通过VPN隧道发送,一般是不使用
push "redirect-gateway def1 bypass-dhcp"
#推送DNS信息,下同
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 8.8.8.8"
#服务器CA证书路径
ca /etc/openvpn/cert/ca.crt
#diffie hellman密钥路径
dh /etc/openvpn/cert/dh1024.pem
#服务器证书路径
cert /etc/openvpn/cert/server.crt
#服务器密钥路径
key /etc/openvpn/cert/server.key
#在SSL/TLS握手包的基础上增加额外的签名以提高安全性。
tls-auth /etc/openvpn/cert/ta.key
#此选项使VPN在重连时不重新读取key且不会将tun设备关闭
persist-key
persist-tun
#通过yum安装的,可将其配置为以openvpn用户和组运行,增加安全性
user openvpn
group openvpn
#openvpn账号密码认证脚本
auth-user-pass-verify /etc/openvpn/openvpn3config/checkpsw.sh via-env
#使用客户端提供的用户名作为common name
username-as-common-name
#不要求客户端提供证书
client-cert-not-required
#脚本运行级别为3,否则无法认证用户名密码
script-security 3
#客户端配置文件,可以配置客户端的IP
client-config-dir /etc/openvpn/ccd
#生成日志
log /var/log/openvpn.log
log-append /var/log/openvpn.log
#将最大客户端设置为255
max-clients 255
#该选项允许客户端直接通讯而在路由上不经过网关
client-to-client
#10秒钟ping一次对端以确定对方是否在线,60秒未响应则断开连接,适合客户端在NAT后使用
keepalive 10 60
nice 3
#日志级别设置
verb 4
mute 10
客户端模板如下
#声明为客户端
client
#使用tun/tap设备,必须与服务端一直
dev tun
#连接协议,必须与服务端一直
proto tcp
#远程服务器的地址和端口号,可以是域名也可以是IP地址
remote IP or Domain name Portnum
#在服务器中断后自动连接
resolv-retry infinite
#不指定网卡
nobind
#以下同服务端说明
persist-key
persist-tun
auth SHA256
cipher AES-256-CBC
comp-lzo adaptive
nice 0
verb 3
mute 10
#认证文件,即用户名密码,下次无需再输入
auth-user-pass pass.txt
#ca证书路径,也可使用<ca></ca>的形式直接将证书粘贴于此
ca ca证书路径
#key应该与服务器一致
tls-auth ta.key
评论