使用openvpn管理办公网络,可以做到:
- 以证书作为客户端认证标识,通过颁发证书管理用户接入网络的权限
- 每个证书指定固定ip,在网络上可以监控ip行为,对应到用户
- 通过对用户分配不同ip段的ip,来控制用户在网络中的权限
- 推送内网域名解析,复杂内网路由保证复杂内网连通性
服务端
主服务
配置文件样例:
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
| verb 3 # LOG等级 dev tun # 隧道设备名 port 1194
# 如果上层使用udp, vpn使用tcp, 丢包后vpn会就会重传上层的udp报文, vpn使用udp协议, 这样可以让上层应用自己决定使用tcp还是udp proto udp
topology subnet # 此模式下所有客户端在一个子网里
# keys ca /etc/openvpn/pki/ca.crt key /etc/openvpn/pki/private/vpn.mapleque.com.key cert /etc/openvpn/pki/issued/vpn.mapleque.com.crt crl-verify /etc/openvpn/pki/crl.pem dh /etc/openvpn/pki/dh.pem tls-auth /etc/openvpn/pki/ta.key
key-direction 0 keepalive 10 60
# 超时重连接时不会重载key和tun persist-key persist-tun
status /var/log/openvpn/status.log log /var/log/openvpn/log.log management localhost 7505
client-config-dir /etc/openvpn/ccd
client-to-client # 允许client之间通信
user vpn group vpn
# vpn进程启动后给本机添加该路由(不需要有客户端连接), 可以配置多条 route 172.31.0.0 255.255.0.0 192.168.232.20
# 启动server模式, 隧道使用该网段, 并占用第一个地址用作本机隧道的IP, nopool表示不将此网段用作dhcp server 192.168.224.0 255.255.240.0 nopool
# 单独配置dhcp pool ifconfig-pool 192.168.224.2 192.168.225.254 255.255.240.0
push "dhcp-option DNS 192.168.224.1"
push "route 192.168.16.0 255.255.240.0 vpn_gateway"
|
systemd启动配置样例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # This service is actually a systemd target, # but we are using a service since targets cannot be reloaded. # /lib/systemd/system/openvpn.service
[Unit] Description=OpenVPN service After=network.target
[Service] Type=forking ExecStart=/usr/sbin/openvpn --daemon ovpn --cd /etc/openvpn --config /etc/openvpn/vpn.conf ExecReload=/bin/kill -HUP $MAINPID WorkingDirectory=/etc/openvpn
[Install] WantedBy=multi-user.target
|
证书颁发
可以考虑使用easyrsa签发证书。
客户端
安装vpn客户端有风险,注意看好官方客户端版本。大部分客户端下载都需要翻墙,请自行检索解决方案。