openvpn 配置参数

服务端 server.conf 配置文件:

#openvpn的默认监听端口
port 1194

#默认使用的协议
proto udp

#采用路由模式,不过使用的却是tap
dev tap

#验证客户端证书是否合法
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt

#server端使用的证书
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key  

#dh文件
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

#设定server端虚拟出来的网段
server 10.8.9.0 255.255.255.0

#防止Openvpn 重启后忘记client端曾经使用过的IP地址
ifconfig-pool-persist ipp.txt

#给客户端push一条路由
push "route 192.168.250.0 255.255.255.0"

#客户端所在的子网网段
route 10.1.1.0 255.255.255.0

#Nat后面使用VPN,如果长时间不通信,NAT session 可能会失效,导致vpn连接丢失。#所有keepalive提供一个类似ping的机制,每10秒通过vpn的control通道ping对方,
#如果120秒无法ping通,则认为丢失,并重启vpn,重新连接。
keepalive 10 120

#可以让vpn的client之间互相访问,直接通过openvpn程序转发
client-to-client

#允许多个客户端使用同一个证书连接服务端
duplicate-cn

#对数据进行压缩,注意server和client 一致
comp-lzo

#通过keepalive检测超时后,重新启动vpn,不重新读取keys,保留第一次使用的keys
persist-key

#通过keepalive检测超时后,重新启动vpn,一直保持tun或tap设备是linkup的,否则网络连接会先linkdown然后linkup
persist-tun

#把openvpn的状态写入日志中
status openvpn-status.log

#openvpn的log
log   openvpn.log

#openvpn重启后会删除log内容,log-append则是追加log内容,并不删除。
log-append  openvpn.log

#日志记录级别
verb 5

客户端配置文件:

vi /etc/openvpn/client.conf

#指定openvpn为客户端
client
dev tap
proto udp

#openvpn服务端的IP地址和端口,如果有多台服务端做负载均衡,则可以出现多个#remote
remote 10.1.1.174 1194

#始终重新解析Server的IP地址,如果remote后面跟的是域名,保证Server IP地址是动#态的使用DDNS动态更新DNS后,Client在自动重新连接时重新解析Server的IP地址,这#样无需人为重新启动,即可重新接入VPN
resolv-retry infinite

#在本机不绑定任何端口监听进入的数据
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3

针对多个客户端的OpenVPN 2.0 的客户端配置文件示例

	#############################################
# 针对多个客户端的OpenVPN 2.0 的客户端配置文件示例
#
# 该配置文件可以被多个客户端使用,当然每个客户端都应该有自己的证书和密钥文件
#
# 在Windows上此配置文件的后缀应该是".ovpn",在Linux/BSD系统中则是".conf"
##############################################

# 指定这是一个客户端,我们将从服务器获取某些配置文件指令
client

# 在大多数系统中,除非你部分禁用或者完全禁用了TUN/TAP接口的防火墙,否则VPN将不起作用。
;dev tap
dev tun

# 在Windows系统中,如果你想配置多个隧道,则需要该指令。
# 你需要用到网络连接面板中TAP-Win32适配器的名称(例如"MyTap")。
# 在XP SP2或更高版本的系统中,你可能需要禁用掉针对TAP适配器的防火墙。
;dev-node MyTap

# 指定连接的服务器是采用TCP还是UDP协议。
# 这里需要使用与服务器端相同的设置。
;proto tcp
proto udp

# 指定服务器的主机名(或IP)以及端口号。
# 如果有多个VPN服务器,为了实现负载均衡,你可以设置多个remote指令。
remote my-server-1 1194
;remote my-server-2 1194

# 如果指定了多个remote指令,启用该指令将随机连接其中的一台服务器,
# 否则,客户端将按照指定的先后顺序依次尝试连接服务器。
;remote-random

# 启用该指令,与服务器连接中断后将自动重新连接,这在网络不稳定的情况下(例如:笔记本电脑无线网络)非常有用。
resolv-retry infinite

# 大多数客户端不需要绑定本机特定的端口号
nobind

# 在初始化完毕后,降低OpenVPN的权限(该指令仅限于非Windows系统中使用)
;user nobody
;group nobody

# 持久化选项可以尽量避免访问在重启时由于用户权限降低而无法访问的某些资源。
persist-key
persist-tun

# 如果你是通过HTTP代理方式来连接到实际的VPN服务器,请在此处指定代理服务器的主机名(或IP)和端口号。
# 如果你的代理服务器需要身份认证,请参考官方手册页面。
;http-proxy-retry # 连接失败时自动重试
;http-proxy [proxy server] [proxy port #]

# 无线网络通常会产生大量的重复数据包。设置此标识将忽略掉重复数据包的警告信息。
;mute-replay-warnings

# SSL/TLS 参数配置。
# 更多描述信息请参考服务器端配置文件。
# 最好为每个客户端单独分配.crt/.key文件对。
# 单个CA证书可以供所有客户端使用。
ca ca.crt
cert client.crt
key client.key

# 指定通过检查证书的nsCertType字段是否为"server"来验证服务器端证书。
# 这是预防潜在攻击的一种重要措施。
#
# 为了使用该功能,你需要在生成服务器端证书时,将其中的nsCertType字段设为"server"
# easy-rsa文件夹中的build-key-server脚本文件可以达到该目的。
ns-cert-type server

# 如果服务器端使用了tls-auth密钥,那么每个客户端也都应该有该密钥。
;tls-auth ta.key 1

# 指定密码的加密算法。
# 如果服务器端启用了cipher指令选项,那么你必须也在这里指定它。
;cipher x

# 在VPN连接中启用压缩。
# 该指令的启用/禁用应该与服务器端保持一致。
comp-lzo

# 设置日志文件冗余级别(0~9)。
# 0 表示静默运行,只记录致命错误。
# 4 表示合理的常规用法。
# 5 和 6 可以帮助调试连接错误。
# 9 表示极度冗余,输出非常详细的日志信息。
verb 3

# 忽略过多的重复信息。
# 相同类别的信息只有前20条会输出到日志文件中。
;mute 20