📖 介绍
本文主要介绍如何在Linux服务器搭建使用ocserv服务的使用,主要用于公司内网的使用
。
在云服务器上搭建ocserv,可以方便地访问内网资源,同时保证数据传输的安全性。在本文中,我们将详细介绍在CentOS 7上搭建ocserv的步骤,以帮助您更好地利用云服务器和ocserv,提高工作效率和数据安全性。官网地址 参考地址
🧰 部署
安装非常简单,只需要一条命令即可
1
| $ sudo yum install -y epel-release && sudo yum install ocserv -y
|
配置
修改conf配置
注:ocserv可以使用tcp,udp同时提供服务,必须开启tcp端口,否则无法提供服务,而udp为了提高传输效率,根据需求配置。
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
| cat /etc/ocserv/ocserv.conf auth = "plain[passwd=/etc/ocserv/ocpasswd]" tcp-port = 443 udp-port = 443 run-as-user = ocserv run-as-group = ocserv socket-file = ocserv.sock chroot-dir = /var/lib/ocserv isolate-workers = true max-clients = 16 max-same-clients = 2 keepalive = 32400 dpd = 90 mobile-dpd = 1800 switch-to-tcp-timeout = 25 try-mtu-discovery = false server-cert = /etc/pki/ocserv/public/server.crt server-key = /etc/pki/ocserv/private/server.key ca-cert = /etc/pki/ocserv/cacerts/ca.crt cert-user-oid = 0.9.2342.19200300.100.1.1 tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0" auth-timeout = 240 min-reauth-time = 300 max-ban-score = 50 ban-reset-time = 300 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 = example.com ping-leases = false cisco-client-compat = true dtls-legacy = true user-profile = profile.xml dns = 8.8.8.8 ipv4-network = 10.10.200.0 ipv4-netmask = 255.255.255.0
route = 172.16.0.0/255.255.0.0 route = 192.168.0.0/24 route = 172.16.0.0/23
route = 192.168.0.0/24
route = 172.18.0.0/24 route = 172.16.0.0/23 route = 172.16.0.0/16
route = 172.36.250.0/25 route = 172.36.0.0/29
route = 223.2.0.0/32 route = 223.2.0.0/24 route = 223.2.84.0/27 route = 223.2.84.0/24 route = 223.2.0.0/27 route = 172.17.0.0/24 route = 172.16.0.0/24
|
注:需要在route中添加一条到内网网段的路由,否则虽然连接上了vpn服务器,但无法访问内网主机,若内网网段为172.31.0.0,那route就需要添加route = 172.31.0.0/255.255.255.0。
注:连接后为全局代理,建议在route配置项中配置多段,否则会影响网速
参数介绍说明
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
| auth:ocserv的认证方式。在这里,我们使用的是plain方式,也就是明文方式。需要注意的是,此方式下的密码需要进行hash处理。 tcp-port:ocserv监听的tcp端口号。 udp-port:ocserv监听的udp端口号。 run-as-user:指定ocserv进程运行的用户。 run-as-group:指定ocserv进程运行的组。 server-cert:指定服务器证书的路径。 server-key:指定服务器私钥的路径。 max-clients:指定最大同时连接数。 max-same-clients:指定同一个客户端的最大连接数。 keepalive:指定连接的保持时间。 dpd:指定连接的DPD(Dead Peer Detection)时间。 mobile-dpd:指定移动设备的DPD时间。 cert-user-oid:指定证书中的用户名字段。 tls-priorities:指定TLS加密方式的优先级。 auth-timeout:指定认证超时时间。 min-reauth-time:指定最小重新认证时间。 max-ban-score:指定最大禁用次数。 ban-reset-time:指定禁用重置时间。 cookie-timeout:指定Cookie的超时时间。 deny-roaming:是否允许漫游。 rekey-time:指定重新协商密钥的时间。 rekey-method:指定重新协商密钥的方式。 use-occtl:是否使用occtl。 pid-file:指定PID文件的路径。 device:指定虚拟设备的名称。 predictable-ips:是否启用可预测的IP地址。 ipv4-network:指定IPv4地址池的网段。 ipv4-netmask:指定IPv4地址池的子网掩码。 dns:指定DNS服务器的地址。 route:指定路由的网段。
|
配置证书
1、生成证书
创建一个名为 ca.tmpl 的CA证书模板
1 2 3 4 5 6 7 8 9 10
| cat > ca.tmpl << EOF cn = "ocdxbim.com" organization = "ocdxbim.com" serial = 1 expiration_days = 3650 ca signing_key cert_signing_key crl_signing_key EOF
|
2、生成服务器证书,这里注意cn项必须对应你服务器的域名或IP,模板名称是 server.tmpl
1 2 3 4 5 6 7 8
| cat > server.tmpl << EOF cn = "demo.dxbim.com" organization = "ocdxbim.com" expiration_days = 3650 signing_key encryption_key tls_www_server EOF
|
3、执行证书生成脚本
1 2 3 4 5 6 7 8 9
| [dx@openconnect certificates]$ cat generat.sh
certtool --generate-privkey --outfile ca-key.pem
certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem
certtool --generate-privkey --outfile server-key.pem
certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem
|
4、拷贝证书到服务运行目录
1 2
| mkdir -p /etc/ocserv/ssl cp -r *.pem /etc/ocserv/ssl
|
创建用户账号
在完成配置文件的修改后,需要创建一个新的用户账号为登录使用。
后续需要增加和删除用户,只需要管理这个配置文件即可
1 2 3 4 5 6 7 8 9 10
| sudo ocpasswd -c /etc/ocserv/ocpasswd hongtao.yang
VPN-使用Ciso客户端链接,刚给你创建了一个账号 地址:szvpn.daxiangyun.com:8866 账号:sudo ocpasswd -c /etc/ocserv/ocpasswd hong.he 密码:dxDXZLP@@11
systemctl start ocserv && systemctl enable --now ocserv
|
防火墙路由配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 1、开启系统数据包转发 sysctl -w net.ipv4.ip_forward=1
vim /etc/sysctl.conf net.ipv4.ip_forward=1
sysctl -p
2、设置iptables 转发策略,注意网卡写本机出口网卡 iptables -t nat -A POSTROUTING -s 10.10.200.0/24 -o ens192 -j MASQUERADE iptables -A FORWARD -i vpns+ -j ACCEPT iptables -A FORWARD -o vpns+ -j ACCEPT
eno2 iptables -t nat -A POSTROUTING -s 10.10.200.0/24 -o eno2 -j MASQUERADE
|
映射端口(可选)
防火墙映射到443端口(可选)
如果是公司内部服务器没有外网的情况下
这个时候使用防火墙的公网IP,添加Nat映射规则,映射好以后可以使用域名绑定这样链接就可以使用域名链接加端口号即可
使用anyconnect 客户端链接即可链接使用防火墙映射的IP+映射端口
开启日志功能
默认ocserv的日志是由systemd去管理的,这个时候查看日志会很不方便,为了方便查看日志可以使用rsyslog
管理ocserv日志
1 2 3 4 5 6 7 8 9 10 11 12
| vim /etc/ocserv/ocserv.conf
LogLevel = 4 SyslogFacility = daemon SyslogLevel = 4
cat /etc/rsyslog.conf
daemon.* /var/log/ocserv.log
systemctl restart rsyslog
|
下载客户端连接工具
可以在官网自行下载,不过需要登录Cisco的账号才可以下载
也可以使用我自己提前下载的好的包,下面是网盘地址
具体使用参考下图,客户端打开以后点击设置按钮取消勾选Disable Captive Portal Detection
然后输入用户名密码允许弹框允许即可