OpenVPN配置参数详解

OpenVPN 配置参数详解:

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141

# #号和;号开头的都是注释
# 设置监听 IP,默认是监听所有 IP
#local 116.6.45.23
#Openvpn 服务器监听端口
port 2194
# 设置用 TCP 还是 UDP 协议?
;proto tcp
proto udp
# 设置创建 tun 的路由 IP 通道,还是创建 tap 的以太网通道
# 路由 IP 容易控制,所以推荐使用它;但如果如 IPX 等必须
# 使用第二层才能通过的通讯,则可以用 tap 方式,tap 也
# 就是以太网桥接
dev tun
# 配置 VPN 使用的网段,OpenVPN 会自动提供基于该网段的 DHCP
# 服务,但不能和任何一方的局域网段重复,保证唯一
# server 端 ip 默认会设为.1 的地址。
server 10.9.0.0 255.255.255.0
# 为客户端创建对应的路由,以另其通达公司网内部服务器
# 但记住,公司网内部服务器也需要有可用路由返回到客户端
push "route 172.18.2.0 255.255.255.0"
# 维持一个客户端和 virtual IP 的对应表,以方便客户端重新
# 连接可以获得同样的 IP
ifconfig-pool-persist /usr/local/etc/ipp.txt
# 用 OpenVPN 的 DHCP 功能为客户端提供指定的 DNS、WINS 等
push "dhcp-option DNS 172.18.2.23"
push "dhcp-option DNS 202.96.128.86"
# 这里是重点,必须指定 SSL/TLS root certificate (ca),
# certificate(cert), and private key (key)
# ca 文件是服务端和客户端都必须使用的,但不需要 ca.key
# 服务端和客户端指定各自的.crt 和.key
# 请注意路径,可以使用以配置文件开始为根的相对路径,
# 也可以使用绝对路径
# 请小心存放.key 密钥文件
ca /usr/local/etc/keys/ca.crt
cert /usr/local/etc/keys/server.crt
key /usr/local/etc/keys/server.key
# 指定 Diffie hellman parameters.
dh /usr/local/etc/keys/dh1024.pem
#用于吊销客户证书
crl-verify /usr/local/etc/keys/vpncrl.pem
#增强安全性
# Generate with:
# openvpn --genkey --secret ta.key
#
# The server and each client must have
# a copy of this key.
# The second parameter should be 0
# on the server and 1 on the clients.
tls-auth /usr/local/etc/keys/ta.key 0
# 设置服务端检测的间隔和超时时间 每 10 秒 ping 一次,如果 120 秒没有回应则认为对方已经 down
keepalive 10 120
# 使用 lzo 压缩的通讯,服务端和客户端都必须配置
comp-lzo
# 输出短日志,每分钟刷新一次,以显示当前的客户端
status /var/log/openvpn-status.log
#设置日志要记录的级别。
#0 只记录错误信息。
#4 能记录普通的信息。
#5 和 6 在连接出现问题时能帮助调试
#9 是极端的,所有信息都会显示,甚至连包头等信息都显示(像 tcpdump)
verb 4
#相同信息的数量,如果连续出现 20 条相同的信息,将不记录到日志中。
mute 20
# 让 OpenVPN 以 nobody 用户和组来运行(安全)
user nobody
group nobody
# The persist options will try to avoid
# accessing certain resources on restart
# that may no longer be accessible because
# of the privilege downgrade.
# 重启时仍保留一些状态
persist-key
persist-tun
###################其他参数 ######################################

# 为特定的客户端指定 IP 或指定路由,该路由通常是客户端后面的
# 内网网段,而不是服务端连接的网段
# ccd 是/etc/openvpn 下的目录,其中建有希望限制的客户端 Common
# Name 为文件名的文件,并通过下面的命令写入固定 IP 地址
# 例如 Common Name 为 client1,则在/etc/openvpn/ccd/client1 写有:
# ifconfig-push 10.9.0.1 10.9.0.2
client-config-dir /usr/local/etc/ccd
# 若客户端希望所有的流量都通过 VPN 传输,则可以使用该语句
# 其会自动改变客户端的网关为 VPN 服务器,推荐关闭
# 一旦设置,请小心服务端的 DHCP 设置问题
;push "redirect-gateway"
# 如果您希望有相同 Common Name 的客户端都可以登陆
# 也可以注释下面的语句,推荐每个客户端都使用不用的 Common Name
# 常用于测试
;duplicate-cn
# 设置最大用户数
#max-clients 3
# 打开管理界面,可以定义监控的 IP 和端口
management localhost 7505
# 缺省日志会记录在系统日志中,但也可以导向到其他地方
# 建议调试的使用先不要设置,调试完成后再定义
;log /var/log/openvpn/openvpn.log
;log-append /var/log/openvpn/openvpn.log
# 配置为以太网桥模式,但需要使用系统的桥接功能
# 这里不需要使用
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
#记录日志,每次重新启动 openvpn 后删除原有的 log 信息
log /var/log/openvpn.log
#和 log 一致,每次重新启动 openvpn 后保留原有的 log 信息,新信息追加到文件最后
;log-append openvpn.log
#定义运行 openvpn 的用户
user nobody
group nobody
#Run script or shell command cmd to validate client
#virtual addresses or routes. 具体查看 manual
;learn-address ./script
#其它的一些需要 PUSH 给 Client
#用于记录某个 Client 获得的 IP 地址,类似于 dhcpd.lease 文件,
#防止 openvpn 重新启动后“忘记”Client 曾经使用过的 IP 地址
ifconfig-pool-persist ipp.txt
#Bridge 状态下类似 DHCPD 的配置,为客户分配地址,由于这里工作在路由模式,所以不使用
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
# 随机选择一个 Server 连接,否则按照顺序从上到下依次连接
;remote-random
# 始终重新解析 Server 的 IP 地址(如果 remote 后面跟的是域名) ,
# 保证 Server IP 地址是动态的使用 DDNS 动态更新 DNS 后,Client 在自动重新连接时重新解析 Server 的
IP 地址
# 这样无需人为重新启动,即可重新接入 VPN
resolv-retry infinite
# 在本机不邦定任何端口监听 incoming 数据,Client 无需此操作,除非一对一的 VPN 有必要
nobind
# 如果你使用 HTTP 代理连接 VPN Server,把 Proxy 的 IP 地址和端口写到下面
# 如果代理需要验证,使用 http-proxy server port [authfile] [auth-method]
# 其中 authfile 是一个 2 行的文本文件,用户名和密码各占一行,auth-method 可以省略,详
细信息查看 Manual
;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]
# Server 使用 build-key-server 脚本什成的,在 x509 v3 扩展中加入了 ns-cert-type 选项
# 防止 VPN client 使用他们的 keys + DNS hack 欺骗 vpn client 连接他们假冒的 VPN Server
# 因为他们的 CA 里没有这个扩展
ns-cert-type server
a.定义 tun 为使用路由方式的 VPN
b.小心处理证书的路径,.key 文件要保存好,特别是 ca.key。
(ca.key 不需要在 OpenVPN 中用到,可以另外保存)
注意,每个虚拟 tun 网卡都是成对的,只有 inet addr 标识的才是用于 VPN 通讯。并且必须在/30 网段
-------------本文结束感谢您的阅读-------------

本文标题:OpenVPN配置参数详解

文章作者:OperationMAN

发布时间:2020年03月12日 - 13:03

最后更新:2022年06月05日 - 21:06

原始链接:https://kxinter.gitee.io/2020/03/12/OpenVPN配置参数详解/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!