Ocserv安装(账号+密码+OTP认证方式)
简单介绍
ocserv 是目前比较常用的vpn软件。这里完整记录下从零开始搭建过程。
名称 | 值 | 说明 |
---|---|---|
操作系统 | Centos 7 | 所用到的基础image |
源码安装ocserv
1 |
|
配置账号(账号+密码+OTP认证方式)
上述步骤执行完基本的ocserv 已经安装好, 其实如果不编译 直接执行 apt 安装也行
1 |
|
配置服务
修改配置文件
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# 下载个网上现成的,具体优化参考官方的 sample 也行,这里就不优化了
wget -N --no-check-certificate -P "/etc/ocserv" "https://files.zorz.cc/ocserv.conf"
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
# listen-host = [IP|HOSTNAME]
tcp-port = 443
#udp-port = 443 #最好注释掉(0)
run-as-user = nobody
run-as-group = daemon
socket-file = /var/run/ocserv-socket
server-cert = /etc/letsencrypt/live/xxx.com/fullchain.pem (1)
server-key = /etc/letsencrypt/live/xxx.com/privkey.pem (2) #刚才写的
ca-cert = /etc/ocserv/ssl/ca-cert.pem
isolate-workers = true
banner = "Hello"
max-clients = 16
max-same-clients = 2
server-stats-reset-time = 604800
keepalive = 32400
dpd = 30
mobile-dpd = 90
switch-to-tcp-timeout = 25
try-mtu-discovery = true
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0"
auth-timeout = 240
min-reauth-time = 300
max-ban-score = 80
ban-reset-time = 1200
cookie-timeout = 300
deny-roaming = false
rekey-time = 172800
rekey-method = ssl
use-occtl = true
pid-file = /var/run/ocserv.pid
device = vpns
predictable-ips = true
default-domain = xxx.com #(3)
ipv4-network = 192.168.169.0 #(4)
ipv4-netmask = 255.255.255.0
# An alternative way of specifying the network:
#ipv4-network = 192.168.1.0/24
# The IPv6 subnet that leases will be given from.
#ipv6-network = fda9:4efe:7e3b:03ea::/48
# Specify the size of the network to provide to clients. It is
# generally recommended to provide clients with a /64 network in
# IPv6, but any subnet may be specified. To provide clients only
# with a single IP use the prefix 128.
#ipv6-subnet-prefix = 128
#ipv6-subnet-prefix = 64
tunnel-all-dns = true
dns = 8.8.8.8
dns = 8.8.4.4
ping-leases = false
# route = 10.10.10.0/255.255.255.0
# route = 192.168.0.0/255.255.0.0
# route = fef4:db8:1000:1001::/64
# route = default
# no-route = 192.168.5.0/255.255.255.0
cisco-client-compat = true
dtls-legacy = true
# 需要改的我已经标注好了启动
1 |
|
- 查看日志
1 |
|
yum安装ocserv
为了教程更简便,这里我直接用EPEL源安装Ocserv,可以省去麻烦的编译过程。首先安装EPEL源:
1 |
|
然后就可以直接YUM安装Ocserv了:
1 |
|
新建一个目录,用来存放SSL证书相关文件,然后进入到这个目录内:
1 |
|
新建一个证书模板:
1 |
|
然后生成私钥和CA证书:
1 |
|
接着来生成服务器证书,还是老样子新建一个证书模板:
1 |
|
然后生成私钥和证书:
1 |
|
然后我们把证书文件用移动到Ocserv默认的目录下:
1 |
|
现在编辑ocserv的配置文件(需要改动的地方很多,如果vi不好用就自己用SFTP把这个文件下载到本地用专业的编辑器编辑):
1 |
|
让我们一起来看看需要改哪些地方:
- auth也就是验证方式要改为:
1 |
|
- 默认的监听端口为443,如果你的服务器上跑着HTTPS的WEB站点,那么443端口肯定是被占用了的,所以如果有需求的话,可以更改下面的值:
1 |
|
如图所示:
- Anyconnect有一个设置连接欢迎信息的功能,也就是你在连接的时候会弹出一个提示框,提示框的内容就可以自行设置,如有需要可以更改下面的值:
1 |
|
如图所示:
Anyconnect可以限制最大允许连接的设备数量,如有需要可以更改下面这两个值:
1
2max-clients = 16
max-same-clients = 2
如图所示:
- 更改服务器证书以及私钥的路径为我们刚才移动的路径:
1 |
|
如图所示:
- 更改CA证书的路径为我们刚才移动的路径:
1 |
|
如图所示:
取消如下几个参数的注释(去掉#号就是去掉注释):
1
2ipv4-network
ipv4-netmask
如图所示:
去掉如下参数的注释以及设置DNS服务器地址:
1
2
3tunnel-all-dns = true
dns = 8.8.8.8
dns = 8.8.4.4
如图所示:
确定你已经修改好上面的内容,然后保存即可。
现在来创建一个VPN用户:
ocpasswd -c /etc/ocserv/ocpasswd lala
盲输两遍密码即可。如果不想让这个用户继续使用了,可以执行下面的命令删除指定的用户:
ocpasswd -c /etc/ocserv/ocpasswd -d lala
现在我们开启机器的IPV4转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
然后启动CentOS7的Firewalld防火墙:
systemctl start firewalld.service
放行Anyconnect的端口(我这里之前设置的是默认的443端口,如果你修改了端口,那么这里也要对应):
1 |
|
设置转发:
1 |
|
注:eth0是你的公网网卡名字,每个机器的名字可能都不一样,自己用ifconfig命令查一下就行了。
重加载,让新的配置生效:
firewall-cmd --reload
现在就可以尝试运行一下Ocserv了:
ocserv -f -d 1
如果一切正常,回显的内容大致如下图所示:
确定正常后按键盘组合键Ctrl+C退出运行,现在我们就可以直接用systemctl来管理Ocserv的进程。
设置Ocserv开机启动:
systemctl enable ocserv
启动Ocserv:
systemctl start ocserv
配置日志
ExecStart=/bin/sh -c '/usr/sbin/ocserv --pid-file /var/run/ocserv.pid --config /etc/ocserv/ocserv.conf -f -d 5 >> /var/log/agent.log 2>&1'