server

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# 设定server端虚拟出来的网段
server 10.8.0.0 255.255.255.0

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

# private key
key keys/server.key  # This file should be kept secret

# 验证客户端证书是否合法
ca keys/ca.crt

#server端使用的证书
cert keys/server.crt

dh keys/dh2048.pem
tls-auth /etc/openvpn/pki/ta.key

# 对于tls-auth可能需要再增加一个选项如下
key-direction 1 # 客户端1,服务端是0
#Nat后面使用VPN,如果长时间不通信,NAT session 可能会失效,导致vpn连接丢失。#所有keepalive提供一个类似ping的机制,每10秒通过vpn的control通道ping对方,
#如果120秒无法ping通,则认为丢失,并重启vpn,重新连接。
keepalive 10 120

#通过keepalive检测超时后,重新启动vpn,不重新读取keys,保留第一次使用的keys
persist-key
#通过keepalive检测超时后,重新启动vpn,一直保持tun或tap设备是linkup的,否则网络连接会先linkdown然后linkup
persist-tun
proto udp
port 1194
#采用路由模式,不过使用的却是tap
dev tun
# 在初始化完毕后,降低OpenVPN的权限(该指令仅限于非Windows系统中使用)
;user nobody
;group nobody

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

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

#把openvpn的状态写入日志中
status openvpn-status.log
push "block-outside-dns"         # Block access to any other DNS, is a Windows specific option

#定义客户端的DNS服务器地址
push "dhcp-options DNS 192.168.228.1"

# 允许客户端重定向穿越VPN到外网, 对应客户端配置redirect-gateway def1
push "redirect-gateway def1 bypass-dhcp"

client

1
redirect-gateway def1 #使客户端中所有流量经过VPN