Centos7安装ocserv服务器

安装ocserv服务端

本文适用于Centos7RHEL8.
Ocserv也就是OpenConnect,即Cisco AnyConnect兼容服务端

参考地址:https://www.jesse.top/2018/07/13/Linux-Service/centos7%20搭建Anyconnect%20VPN/

https://bynss.com/codes/299985.html

源码:https://github.com/omaidb/qiaofei_notes/blob/main/shell_code/ocserv/install_ocserv.sh

# 下载脚本
https://raw.githubusercontent.com/omaidb/qiaofei_notes/main/shell_code/ocserv/install_ocserv.sh

# 执行脚本
bash install_ocserv.sh

申请公网证书(非必需)

仅适用于已绑定域名的主机


安装certbot自助签发公网ssl证书

# 安装certbot主程序
sudo dnf install certbot -y

# 检查版本号
certbot --verion

自助签发证书

前置条件:该服务器公网ip已经设置域名解析,crerboot版本要在2.0以上。

# 申请公网证书
## certonly:获取证书,但不要安装它。
## --standalone:使用独立插件获取证书,会启动certbot内置http服务器
## --preferred-challenges http:执行http-01质询以使用端口80验证域。
## --agree-tos:同意加密使用条款。
## --email:证书的电子邮件地址将用于帐户注册和恢复。
## -d:指定域名。
certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d vpn.example.com

提示是否收取邮件: N
在这里插入图片描述
在这里插入图片描述


优化内核参数

vim /etc/sysctl.d/ocserv.conf

# 关闭OOM
vm.panic_on_oom = 1

# 自动释放cache防止oom
vm.overcommit_memory = 1

# 开启内核开启数据包转发
net.ipv4.ip_forward = 1

net.ipv4.tcp_timestamps = 0

# 自动MTU
net.ipv4.tcp_mtu_probing = 1

# 启用TCP窗口缩放
net.ipv4.tcp_window_scaling = 1

# 减少数据包传输的延迟和处理时间
net.ipv4.tcp_low_latency = 1

# 开启快速tcp
net.ipv4.tcp_fastopen = 3

# 连接结束时保存TCP连接信息,能提高性能,但会导致无法进行网络分析
net.ipv4.tcp_no_metrics_save = 1

# 设置 SYN+ACK 的重试次数。推荐值为 2。
## 默认值为5
net.ipv4.tcp_synack_retries = 2

# 设置SYN的重试次数。推荐值为2
## 默认值为6
net.ipv4.tcp_syn_retries = 2

# 当TCP连接队列溢出时,启用rst复位以通知客户端
net.ipv4.tcp_abort_on_overflow = 1

# 将TCP连接空闲时发送KeepAlive消息的时间间隔设置为300秒(5分钟)
## 默认是7200秒(2小时)
net.ipv4.tcp_keepalive_time = 300

# 设置TCP keepalive探测的次数,推荐值为 5。
## 默认值为9
net.ipv4.tcp_keepalive_probes = 5

# 设置TCP keepalive探测的时间间隔。推荐值为15
## 默认值为75
net.ipv4.tcp_keepalive_intvl = 15

# 孤儿连接重试次数
## 默认值是0(8次),调整为3次
net.ipv4.tcp_orphan_retries = 3

# 在接收UDP和TCP数据包时使用L3协议信息进行过滤,可以减少不必要的数据包。
net.ipv4.udp_l3mdev_accept = 1
net.ipv4.tcp_l3mdev_accept = 1

# 减少重传
net.ipv4.tcp_sack = 1

# 对sack的改进,能够检测不必要的重传
net.ipv4.tcp_dsack = 1

# 指定Fair Queuing 公平队列调度器
net.core.default_qdisc = fq

# 启用BBR
net.ipv4.tcp_congestion_control = bbr

# 禁用反向路径过滤(Reverse Path Filtering)以允许数据包通过不同网络接口进行转发
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.ens3.rp_filter = 0

# 禁止发送 ICMP 重定向消息,防止路由器发送重定向消息给主机
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# 禁止接收 ICMP 重定向消息,防止主机接收到来自路由器的重定向消息
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

使用iptables配置转发–可选

# 向 FORWARD 链添加一条规则,以允许从 IP 地址为 10.89.64.0/24 的源主机发起的流量进行转发
## -A FORWARD:将规则添加到 FORWARD 链的末尾。-A 表示添加规则,FORWARD 表示规则将被添加到 FORWARD 链上;
## -s 10.89.64.0/24:匹配源 IP 地址为 10.89.64.0/24 的流量。-s 参数用于指定匹配的源 IP 地址;
## -j ACCEPT:将匹配的流量接受并允许通过。-j 参数用于指定对匹配的流量执行的操作,此处为 ACCEPT,即接受并允许通过。
iptables -A FORWARD -s 10.89.64.0/24 -j ACCEPT

# 向NAT表的POSTROUTING链添加规则,将源地址10.89.64.0/24流量进行NAT转换,并使用出口IP地址作为源地址进行转发。
## -t nat:指定操作 NAT 表。
## -A POSTROUTING:将规则添加到 POSTROUTING 链的末尾。
## -s 10.89.64.0/24:匹配源 IP 地址为 10.89.64.0/24 的流量。
## -j MASQUERADE:将匹配的流量进行 NAT 转换,并使用出口网卡 eth0 的 IP 地址作为源地址进行转发。
iptables -t nat -A POSTROUTING -s 10.89.64.0/24 -o eth0 -j MASQUERADE

在这里插入图片描述

# 查看iptables的filter表配置
iptables -nL

在这里插入图片描述

# 查看nat表的配置
iptables -t nat -nL

在这里插入图片描述


配置DSCP(可选)

# 将src为192.168.1.100的所有出站流量的DSCP值更改为46
iptables -t mangle -A OUTPUT -p tcp -s 10.89.64.0/24 -j DSCP --set-dscp 46

# 将src为192.168.1.100的所有出站流量的DSCP值更改为46
iptables -t mangle -A OUTPUT -p udp -s 10.89.64.0/24 -j DSCP --set-dscp 46

# 保存配置
service iptabels save

编辑配置文件

# 先备份配置文件
mv /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.bak && touch /etc/ocserv/ocserv.conf

# 编辑空的配置文件
vim /etc/ocserv/ocserv.conf

账号密码登录配置内容

将下列内容复制粘贴到/etc/ocserv/ocserv.conf文件中,注意修改default-domain的值为你的服务器地址或域名

https://wwww.lvmoo.com/1084.love/

# 设置独立认证
auth = "plain[passwd=/etc/ocserv/ocpasswd]"

cert-user-oid = 0.9.2342.19200300.100.1.1

# 仅使用TLS1.2以上版本
#tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1"

## NORMAL:表示将使用默认的密码套件,这些密码套件被认为是安全的且被广泛支持。
## %SERVER_PRECEDENCE:指定服务器密码套件的偏好将优先于客户端的偏好。
## %COMPAT:包括提供与旧系统兼容性的密码套件。
## +SECURE256:包括使用 256 位密钥进行加密的密码套件。
## -VERS-ALL:默认禁用所有 TLS 版本。
## +VERS-TLS1.2: 启用 TLS 版本 1.2
## +VERS-TLS1.3:启用 TLS 版本 1.3。
## +VERS-DTLS1.2:启用数据报传输层安全协议(DTLS)版本 1.2。
## +COMP-DEFLATE:启用使用 Deflate 算法的压缩。
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:+SECURE256:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3:+VERS-DTLS1.2:+COMP-DEFLATE"

# 设置服务器监听端口
tcp-port = 443
udp-port = 443

# 程序以哪个用户和组运行
run-as-user = ocserv
run-as-group = ocserv

# socket文件
socket-file = ocserv.sock
chroot-dir = /var/lib/ocserv

# 默认证书配置
server-cert = /etc/pki/ocserv/public/server.crt
server-key = /etc/pki/ocserv/private/server.key

# 开启lz4压缩
compression = true
# 小于多少的流量不压缩
no-compress-limit = 256

# 隔离工作,默认不动
isolate-workers = true

# 最大客户端数量,0表示无限数量
max-clients = 16

# 同一用户可以同时登陆的客户端数量
max-same-clients = 5

# 限速毫秒?默认不动
rate-limit-ms = 100
# 服务器统计重置时间,不动
server-stats-reset-time = 604800

# 保活心跳,掉线检测,默认32400s(9小时)
## 增大耗电,减少掉线
keepalive = 64
# 启用MTU发以优化性能
try-mtu-discovery = true
## dpd和mobile-dpd客户端活跃检测(秒),延迟高可以设小点,否则可能会断流
dpd = 90
# 设为30分钟(秒),设小了也会断流
mobile-dpd = 1800
## DTLS超时1年则由UDP模式切换至TCP模式
switch-to-tcp-timeout = 31536000
# switch-to-tcp-timeout = 25

# 空闲断开时间,如果想无限期连接,注释这两行
# idle-timeout=1200
# mobile-idle-timeout=2400

# 认证超时时间
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
# 设置协议定义的优先级(SO_PRIORITY)的数据包发送。从0到6,其中0是最低,6最高
net-priority = 6

device = NFSC
# 生成的IP是否可以预测,IP保持,尽可能为同一用户使用相同的ip
predictable-ips = true

# 在从IP池中租用任何IP之前先ping以验证其没有被占用
ping-leases = true

# 默认域名,修改为你的域名或ip地址
# default-domain = www.mydoamin.com

# 配置自定义私有IP地址范围,注释默认的两行
ipv4-network = 10.70.25.0
ipv4-netmask = 255.255.255.0

# 以VPN隧道传输所有DNS查询
tunnel-all-dns = true

# 更改DNS服务器(国内服务器就填写国内dns)
dns = 1.0.0.1
dns = 8.8.4.4

# 是否支持低于7.08版本以下的cisco的VPN客户端
cisco-client-compat = true

证书登录配置内容

# 开启证书和密码均可认证
## 开启首选验证机制为证书认证
auth = "certificate"
## 开启备用认证"enable-auth"为密码认证
enable-auth = "plain[passwd=/etc/ocserv/ocpasswd]"

# 开启密码和证书均可认证
### 开启首选验证机制为密码认证
#auth = "plain[passwd=/etc/ocserv/ocpasswd]"
### 开启证书备用认证"enable-auth"
#enable-auth = "certificate"

# 设置服务器监听端口
tcp-port = 443
# udp端口可以自定义,tcp只用于拨通vpn,拨通后会使用指定的udp端口
udp-port = 443

# 程序以哪个用户和组运行
# 图省事也可以使用nobody用户和daemon组
run-as-user = ocserv
run-as-group = ocserv

# socket文件
socket-file = ocserv.sock
# ocserv工作目录
chroot-dir = /var/lib/ocserv
# 证书认证不支持这个选项,注释掉这行
#listen-clear-file = /var/run/ocserv-conn.socket

# ocserv服务端证书配置
## 服务端证书
server-cert = /etc/ocserv/server_ssl/ocserv_server-cert.pem
## 服务端私钥
server-key = /etc/ocserv/server_ssl/ocserv_server-key.pem

# CA证书路径,如果是证书验证则需要开启这个参数,如果是密码认证,则注释掉
ca-cert = /etc/ocserv/root_ssl/ca-cert.pem

# Diffie-Hellman parameters,增强非对称加密算法在协商对称加密算法密码时的安全性
dh-params = /etc/ocserv/server_ssl/dh.pem
# 吊销证书路径
#crl = /etc/ocserv/revoked_ssl/crl.pem

# 开启lz4压缩
compression = true
# 小于多少的流量不压缩
no-compress-limit = 256

# 隔离工作,默认不动
isolate-workers = true

# 最大客户端数量,0表示无限数量
max-clients = 16

# 同一用户可以同时登陆的客户端数量,0表示无限数量
max-same-clients = 5

# 限速毫秒?默认不动
rate-limit-ms = 100
# 服务器统计重置时间,不动
server-stats-reset-time = 604800

# 当服务器接收到来自代理的连接时,比如 haproxy--高可用
## 支持代理协议,设置此项以获得正确的客户地址。然后将预期代理协议在
## TCP 或 UNIX 套接字(不是 UDP 套接字)。虽然两个 v1和v2版本的代理协议都支持,推荐v2版本,因为它在解析中更有效。
#listen-proxy-proto = true

# 保活心跳,掉线检测,默认32400s(9小时)
## 增大耗电,减少掉线
keepalive = 64

# 启用MTU发以优化性能(DPD 必须启用)
try-mtu-discovery = true

## dpd和mobile-dpd客户端活跃检测(秒),延迟高可以设小点,否则可能会断流
dpd = 90
# 设为30分钟(秒),设小了也会断流
mobile-dpd = 1800

# 强制DTLS
# https://www.v2ex.com/t/460243
# https://www.v2ex.com/t/158768?p=3
## 使用最新的ocserv版本,最近几个更新都对DTLS连接有优化
## DTLS超时1年则由UDP模式切换至TCP模式
switch-to-tcp-timeout = 31536000

# 缓冲区大小,小值延时低,大值带宽高
output-buffer = 2

# 空闲断开时间,如果想无限期连接,注释这两行
## 无流量断开超时(秒),超过这个时间无流量则断开. Unset to disable.
# idle-timeout=1200
## 移动端无流量断开超时(秒),超过这个时间无流量则断开. Unset to disable.
# mobile-idle-timeout=2400

#默认注释,客户端将在持续连接此时间后断开连接,其cookie将失效(即,将需要重新认证)。
#session-timeout = 86400

# 手机熄屏后自动重连
persistent-cookies = true

# cert-user-oid = 0.9.2342.19200300.100.1.1
# 确保服务器正确读取用户证书(后面会用到用户证书)
cert-user-oid = 2.5.4.3

# 执行完全向前保密,更多配置在
# https://zhuanlan.zhihu.com/p/515265589
# http://gnutls.org/manual/html_node/Priority-Strings.html

## %SERVER_PRECEDENCE:指定服务器密码套件的偏好将优先于客户端的偏好
## +SECURE256:包括使用 256 位密钥进行加密的密码套件。
## -VERS-ALL:默认禁用所有 TLS 版本。
## +VERS-TLS1.3:启用 TLS 版本 1.3。
## +VERS-DTLS1.2:启用数据报传输层安全协议(DTLS)版本 1.2。
## +CHACHA20-POLY1305: 表示启用ChaCha20-Poly1305加密算法
## +COMP-DEFLATE:启用使用 Deflate 算法的压缩。
tls-priorities = "%SERVER_PRECEDENCE:+SECURE256:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3:+VERS-DTLS1.2:+CHACHA20-POLY1305:+COMP-DEFLATE"

# 认证超时时间
auth-timeout = 240

# 最小重新认证时间
min-reauth-time = 300
max-ban-score = 80
ban-reset-time = 1200

# 此 cookie 在用户连接期间保持有效,并且在用户断开连接后,在该配置设置的时间内保持有效状态。
## 该设置用于允许在不同网络之间漫游,1小时(秒)内有效
cookie-timeout = 36000
# 是否拒绝漫游,如果为true则cookie仅限于单个 IP 地址,不能从不同的 IP 重复使用。
## false为允许漫游
deny-roaming = false

# ReKey time (in seconds)
# ocserv 将要求客户端在经过此秒数后定期刷新密钥。 设置为零以禁用
## (请注意,如果禁用 rekey,某些客户端会连接失败)。28800秒=8小时
rekey-time = 28800

# ReKey 方式
# Valid options: ssl, new-tunnel
# ssl: 将在通道上执行有效的重新握手,从而在重新生成密钥期间实现无缝连接。
# new-tunnel: 将指示客户端断开并重新建立VPN。 仅当连接的客户端对 ssl 选项有问题时才使用此选项.
rekey-method = ssl
# 是否启用对 occtl 工具的支持 (i.e., either through D-BUS, or via a unix socket).
use-occtl = true

# 设置协议定义的优先级(SO_PRIORITY)的数据包发送。从0到6,其中0是最低,6最高
net-priority = 6

# 虚拟网卡名称
device = NFSC
# vpn欢迎语--登录时会提示,建议注释掉
# banner = "Welcome"

# 使用监听主机来限制特定IP地址或一所提供的IP地址
listen-host = 0.0.0.0
# 被通告的默认域名,修改为你的域名或ip地址
# default-domain = www.mydoamin.com

# 配置自定义私有IP地址范围,注释默认的两行
ipv4-network = 10.89.64.0
ipv4-netmask = 255.255.255.0

# 以VPN隧道传输所有DNS查询
tunnel-all-dns = true

# 更改DNS服务器(国内服务器就填写国内dns)
# 建议本机适用dnsmasq自建dns后填写vpn网关地址,加快dns响应
# dns = vpn服务器的内网ip
dns = 1.0.0.1
dns = 8.8.4.4

# 生成的IP是否可以预测,IP保持,尽可能为同一用户使用相同的ip
predictable-ips = true

# 在从IP池中租用任何IP之前先ping以验证其没有被占用
ping-leases = true

# 路由,列出地址的流量将走vpn通道
## 如果不设置或配置为default则全部流量均走vpn
#route = default

# 如果要推全局路由 建议使用如下两条记录--https://blog.ihipop.com/2014/07/4782.html
## 下面两行是所有的局域网路由和广播路由不走vpn--但是iPhone客户端会显示已暂停
# route = 0.0.0.0/128.0.0.0
# route = 128.0.0.0/128.0.0.0

# 局域网不走vpn
# route = 10.0.0.0/8
# route = 172.16.0.0/12
# route = 192.168.0.0/16
#route = fd00::/8

# 是否支持低于7.08版本以下的cisco的VPN客户端
## cisco-client-compat=true意味着禁用dtls-legacy = true
## 设置false会连不上dtls
cisco-client-compat = true

# 此选项允许运维人员禁用旧版 DTLS 协商 ,默认为开启的,fasle为禁用旧版DTLS
dtls-legacy = true

# 高级选项
## 一般不设置自定义请求头
## 常规 头名称:x-forwarded-for 头内容:8.8.8.8
# custom-header = "X-DTLS-MTU: 1420"
# custom-header = "X-CSTP-MTU: 1420"
# 防止网页被嵌入到其他网站的iframe中
custom-header = X-Frame-Options: DENY
# 跨站点脚本(XSS)保护
custom-header = X-Content-Type-Options: nosniff
# 向服务器声明前置机的IP地址
custom-header = x-forwarded-for: 1.0.0.1


# dtls和tls使用同一密码信息,必须依赖dtls-legacy = false
## 开启会导致连不上服务器---一定要注释掉
# match-tls-dtls-ciphers = true

# 这个文件必须可以从worker的chroot中访问。
# 请注意,不建议启用此选项,因为它会允许worker进程打开任意文件(当isolate-workers=true)
# profile文件路径/var/lib/ocserv/profile.xml
#user-profile = profile.xml

no-route-china

项目地址:https://github.com/CNMan/ocserv-cn-no-route

no-routeAnyConnect客户端无效

# 下载配置文件
wget -c https://raw.githubusercontent.com/CNMan/ocserv-cn-no-route/master/cn-no-route.txt

no-route-china列表

no-route = 1.160.0.0/255.224.0.0
no-route = 1.192.0.0/255.224.0.0
no-route = 5.182.60.0/255.224.0.0
no-route = 14.0.0.0/255.224.0.0
no-route = 14.96.0.0/255.224.0.0
no-route = 14.128.0.0/255.224.0.0
no-route = 14.192.0.0/255.224.0.0
no-route = 27.0.0.0/255.192.0.0
no-route = 27.96.0.0/255.224.0.0
no-route = 27.128.0.0/255.128.0.0
no-route = 36.0.0.0/255.192.0.0
no-route = 36.96.0.0/255.224.0.0
no-route = 36.128.0.0/255.128.0.0
no-route = 39.0.0.0/255.224.0.0
no-route = 39.64.0.0/255.192.0.0
no-route = 39.128.0.0/255.192.0.0
no-route = 40.64.0.0/255.192.0.0
no-route = 42.0.0.0/255.0.0.0
no-route = 43.128.0.0/255.128.0.0
no-route = 45.0.0.0/255.128.0.0
no-route = 45.128.0.0/255.224.0.0
no-route = 45.224.0.0/255.224.0.0
no-route = 47.64.0.0/255.192.0.0
no-route = 49.0.0.0/255.128.0.0
no-route = 49.128.0.0/255.224.0.0
no-route = 49.192.0.0/255.192.0.0
no-route = 52.80.0.0/255.224.0.0
no-route = 52.130.0.0/255.224.0.0
no-route = 54.222.0.0/255.224.0.0
no-route = 57.176.0.0/255.224.0.0
no-route = 58.0.0.0/255.128.0.0
no-route = 58.128.0.0/255.224.0.0
no-route = 58.192.0.0/255.192.0.0
no-route = 59.32.0.0/255.224.0.0
no-route = 59.64.0.0/255.192.0.0
no-route = 59.128.0.0/255.128.0.0
no-route = 60.0.0.0/255.192.0.0
no-route = 60.160.0.0/255.224.0.0
no-route = 60.192.0.0/255.192.0.0
no-route = 61.0.0.0/255.192.0.0
no-route = 61.64.0.0/255.224.0.0
no-route = 61.128.0.0/255.192.0.0
no-route = 61.224.0.0/255.224.0.0
no-route = 62.0.0.0/255.224.0.0
no-route = 62.234.0.0/255.224.0.0
no-route = 65.111.0.0/255.224.0.0
no-route = 68.79.0.0/255.224.0.0
no-route = 69.224.0.0/255.224.0.0
no-route = 71.128.0.0/255.224.0.0
no-route = 81.68.0.0/255.224.0.0
no-route = 82.156.0.0/255.224.0.0
no-route = 85.209.40.0/255.224.0.0
no-route = 91.224.0.0/255.224.0.0
no-route = 94.191.0.0/255.224.0.0
no-route = 101.0.0.0/255.128.0.0
no-route = 101.128.0.0/255.224.0.0
no-route = 101.192.0.0/255.192.0.0
no-route = 103.0.0.0/255.0.0.0
no-route = 104.160.0.0/255.224.0.0
no-route = 104.192.0.0/255.224.0.0
no-route = 106.0.0.0/255.128.0.0
no-route = 106.224.0.0/255.224.0.0
no-route = 109.224.0.0/255.224.0.0
no-route = 110.0.0.0/254.0.0.0
no-route = 112.0.0.0/255.128.0.0
no-route = 112.128.0.0/255.224.0.0
no-route = 112.192.0.0/255.192.0.0
no-route = 113.0.0.0/255.128.0.0
no-route = 113.128.0.0/255.224.0.0
no-route = 113.192.0.0/255.192.0.0
no-route = 114.0.0.0/255.128.0.0
no-route = 114.128.0.0/255.224.0.0
no-route = 114.192.0.0/255.192.0.0
no-route = 115.0.0.0/255.0.0.0
no-route = 116.0.0.0/255.0.0.0
no-route = 117.0.0.0/255.128.0.0
no-route = 117.128.0.0/255.192.0.0
no-route = 118.0.0.0/255.224.0.0
no-route = 118.64.0.0/255.192.0.0
no-route = 118.128.0.0/255.128.0.0
no-route = 119.0.0.0/255.128.0.0
no-route = 119.128.0.0/255.192.0.0
no-route = 119.224.0.0/255.224.0.0
no-route = 120.0.0.0/255.192.0.0
no-route = 120.64.0.0/255.224.0.0
no-route = 120.128.0.0/255.224.0.0
no-route = 120.192.0.0/255.192.0.0
no-route = 121.0.0.0/255.128.0.0
no-route = 121.192.0.0/255.192.0.0
no-route = 122.0.0.0/254.0.0.0
no-route = 124.0.0.0/255.0.0.0
no-route = 125.0.0.0/255.128.0.0
no-route = 125.160.0.0/255.224.0.0
no-route = 125.192.0.0/255.192.0.0
no-route = 128.108.0.0/255.224.0.0
no-route = 129.28.0.0/255.224.0.0
no-route = 129.192.0.0/255.224.0.0
no-route = 132.232.0.0/255.224.0.0
no-route = 134.175.0.0/255.224.0.0
no-route = 137.32.0.0/255.224.0.0
no-route = 139.0.0.0/255.224.0.0
no-route = 139.128.0.0/255.128.0.0
no-route = 140.75.0.0/255.224.0.0
no-route = 140.128.0.0/255.128.0.0
no-route = 142.64.0.0/255.224.0.0
no-route = 143.64.0.0/255.224.0.0
no-route = 144.0.0.0/255.192.0.0
no-route = 144.123.0.0/255.224.0.0
no-route = 144.255.0.0/255.224.0.0
no-route = 146.0.0.0/255.192.0.0
no-route = 146.192.0.0/255.224.0.0
no-route = 148.70.0.0/255.224.0.0
no-route = 149.41.0.0/255.224.0.0
no-route = 150.0.0.0/255.224.0.0
no-route = 150.96.0.0/255.224.0.0
no-route = 150.128.0.0/255.224.0.0
no-route = 150.192.0.0/255.192.0.0
no-route = 152.96.0.0/255.224.0.0
no-route = 152.128.0.0/255.224.0.0
no-route = 153.0.0.0/255.192.0.0
no-route = 153.96.0.0/255.224.0.0
no-route = 154.8.128.0/255.224.0.0
no-route = 157.0.0.0/255.192.0.0
no-route = 157.96.0.0/255.224.0.0
no-route = 157.128.0.0/255.224.0.0
no-route = 157.255.0.0/255.224.0.0
no-route = 158.32.0.0/255.224.0.0
no-route = 158.64.0.0/255.224.0.0
no-route = 159.27.0.0/255.224.0.0
no-route = 159.75.0.0/255.224.0.0
no-route = 159.224.0.0/255.224.0.0
no-route = 160.0.0.0/255.224.0.0
no-route = 160.192.0.0/255.192.0.0
no-route = 161.120.0.0/255.224.0.0
no-route = 161.160.0.0/255.224.0.0
no-route = 161.192.0.0/255.224.0.0
no-route = 162.14.0.0/255.224.0.0
no-route = 162.105.0.0/255.224.0.0
no-route = 163.0.0.0/255.192.0.0
no-route = 163.96.0.0/255.224.0.0
no-route = 163.128.0.0/255.128.0.0
no-route = 164.52.0.0/255.224.0.0
no-route = 166.111.0.0/255.224.0.0
no-route = 167.128.0.0/255.192.0.0
no-route = 167.192.0.0/255.224.0.0
no-route = 168.160.0.0/255.224.0.0
no-route = 170.179.0.0/255.224.0.0
no-route = 171.0.0.0/255.128.0.0
no-route = 171.208.0.0/255.224.0.0
no-route = 172.81.192.0/255.224.0.0
no-route = 175.0.0.0/255.128.0.0
no-route = 175.128.0.0/255.192.0.0
no-route = 176.116.4.0/255.224.0.0
no-route = 178.236.224.0/255.224.0.0
no-route = 180.64.0.0/255.192.0.0
no-route = 180.128.0.0/255.128.0.0
no-route = 182.0.0.0/255.0.0.0
no-route = 183.0.0.0/255.192.0.0
no-route = 183.64.0.0/255.224.0.0
no-route = 183.128.0.0/255.128.0.0
no-route = 185.2.48.0/255.224.0.0
no-route = 185.145.244.0/255.224.0.0
no-route = 185.192.0.0/255.224.0.0
no-route = 188.131.128.0/255.224.0.0
no-route = 192.32.0.0/255.224.0.0
no-route = 192.96.0.0/255.224.0.0
no-route = 192.128.0.0/255.224.0.0
no-route = 192.197.113.0/255.224.0.0
no-route = 193.112.0.0/255.224.0.0
no-route = 194.96.0.0/255.224.0.0
no-route = 194.246.40.0/255.224.0.0
no-route = 198.175.100.0/255.224.0.0
no-route = 199.212.57.0/255.224.0.0
no-route = 202.0.0.0/255.128.0.0
no-route = 202.128.0.0/255.192.0.0
no-route = 202.192.0.0/255.224.0.0
no-route = 203.0.0.0/255.255.192.0
no-route = 203.0.64.0/255.255.224.0
no-route = 203.0.96.0/255.255.240.0
no-route = 203.0.112.0/255.255.255.0
no-route = 203.0.114.0/255.255.254.0
no-route = 203.0.116.0/255.255.252.0
no-route = 203.0.120.0/255.255.248.0
no-route = 203.0.128.0/255.255.128.0
no-route = 203.1.0.0/255.255.0.0
no-route = 203.2.0.0/255.254.0.0
no-route = 203.4.0.0/255.252.0.0
no-route = 203.8.0.0/255.248.0.0
no-route = 203.16.0.0/255.240.0.0
no-route = 203.32.0.0/255.224.0.0
no-route = 203.64.0.0/255.192.0.0
no-route = 203.128.0.0/255.192.0.0
no-route = 203.192.0.0/255.224.0.0
no-route = 204.52.191.0/255.224.0.0
no-route = 210.0.0.0/255.192.0.0
no-route = 210.64.0.0/255.224.0.0
no-route = 210.160.0.0/255.224.0.0
no-route = 210.192.0.0/255.224.0.0
no-route = 211.64.0.0/255.192.0.0
no-route = 211.128.0.0/255.192.0.0
no-route = 212.64.0.0/255.224.0.0
no-route = 212.129.128.0/255.224.0.0
no-route = 213.139.232.0/255.224.0.0
no-route = 217.114.35.0/255.224.0.0
no-route = 218.0.0.0/255.128.0.0
no-route = 218.160.0.0/255.224.0.0
no-route = 218.192.0.0/255.192.0.0
no-route = 219.64.0.0/255.224.0.0
no-route = 219.128.0.0/255.224.0.0
no-route = 219.192.0.0/255.192.0.0
no-route = 220.96.0.0/255.224.0.0
no-route = 220.128.0.0/255.128.0.0
no-route = 221.0.0.0/255.224.0.0
no-route = 221.96.0.0/255.224.0.0
no-route = 221.128.0.0/255.128.0.0
no-route = 222.0.0.0/255.0.0.0
no-route = 223.0.0.0/255.224.0.0
no-route = 223.64.0.0/255.192.0.0
no-route = 223.128.0.0/255.128.0.0

保存配置,重启服务

# 重启ocserv服务
systemctl restart ocserv

配置优化

内核参数优化参考:
内核版本:5.15
在这里插入图片描述

# 关闭OOM
vm.panic_on_oom = 1

# 自动释放cache防止oom
vm.overcommit_memory = 1

# 关闭IPV6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

# 开启内核开启数据包转发
net.ipv4.ip_forward = 1

# 开启tcp快速open
net.ipv4.tcp_fastopen = 3

net.ipv4.tcp_timestamps = 0

# 自动MTU
net.ipv4.tcp_mtu_probing = 1

# 启用TCP窗口缩放
net.ipv4.tcp_window_scaling = 1

# 低延迟模式
net.ipv4.tcp_low_latency = 1
# 连接结束时保存TCP连接信息,能提高性能,但会导致无法进行网络分析
net.ipv4.tcp_no_metrics_save = 1

# 设置 SYN+ACK 的重试次数。推荐值为 2。
## 默认值为5
net.ipv4.tcp_synack_retries = 2

# 设置SYN的重试次数。推荐值为2
## 默认值为6
net.ipv4.tcp_syn_retries = 2

# 将TCP连接空闲时发送KeepAlive消息的时间间隔设置为300秒(5分钟)
## 默认是7200秒(2小时)
net.ipv4.tcp_keepalive_time = 300

# 设置TCP keepalive探测的次数,推荐值为 5。
## 默认值为9
net.ipv4.tcp_keepalive_probes = 5

# 设置TCP keepalive探测的时间间隔。推荐值为15
## 默认值为75
net.ipv4.tcp_keepalive_intvl = 15

# 在接收UDP和TCP数据包时使用L3协议信息进行过滤,可以减少不必要的数据包。
net.ipv4.udp_l3mdev_accept = 1
net.ipv4.tcp_l3mdev_accept = 1

# 减少重传
net.ipv4.tcp_sack = 1

# 对sack的改进,能够检测不必要的重传
net.ipv4.tcp_dsack = 1

# 指定Fair Queuing 公平队列调度器
net.core.default_qdisc = fq

# 启用BBR
net.ipv4.tcp_congestion_control = bbr

在ocserv中禁用TLS 1.0和TLS 1.1

PCI理事会将于2018年6月30日停用TLS 1.0,主流Web浏览器将在2020年禁用TLS 1.0TLS 1.1

# 安装gnutls-cli
dnf install gnutls-utils -y

# 查看系统中已经安装的加密算法和协议版本
gnutls-cli -l

在这里插入图片描述
方案0

# 基本方案--兼容性强
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-TLS1.2:-VERS-DTLS0.9:-VERS-DTLS1.0"

方案1

# 执行完全向前保密,更多配置在
# https://zhuanlan.zhihu.com/p/515265589
# http://gnutls.org/manual/html_node/Priority-Strings.html

## NORMAL:表示使用默认的TLS配置
## %SERVER_PRECEDENCE:服务器密码套件的偏好将优先于客户端的偏好
## %COMPAT:表示在兼容性模式下运行,以支持较旧的TLS配置
## -RSA : 禁用RSA算法
## +SECURE192:包括使用 192 位密钥进行加密的密码套件
## +SECURE256:包括使用 256 位密钥进行加密的密码套件
## -VERS-ALL:默认禁用所有 TLS 版本
## +VERS-TLS1.2:启用 TLS 版本 1.2
## +VERS-TLS1.3:启用 TLS 版本 1.3
## +VERS-DTLS1.2:启用数据报传输层安全协议(DTLS)版本 1.2
## +COMP-DEFLATE:启用使用 Deflate 算法的压缩

tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-ARCFOUR-128:+SECURE192:+SECURE256:-VERS-ALL:+VERS-TLS1.3:+VERS-DTLS1.2:+COMP-DEFLATE"

方案2

## PFS:完全前向保密加密套件
## %LATEST_RECORD_VERSION:在client hello中使用最新的TLS版本记录版本
## %FORCE_ETM:仅当连接双方都支持encrypt-then-mac TLS扩展 (RFC7366) 时,才协商 CBC 密码套件
## -VERS-ALL:禁用所有TLS协议版本
## +VERS-TLS1.2:启用TLS 1.2协议版本
## +VERS-TLS1.3:启用TLS 1.3协议版本
## +VERS-DTLS1.2:启用DTLS 1.2协议版本
## +COMP-NULL:启用无压缩的数据传输
tls-priorities = "PFS:%LATEST_RECORD_VERSION:%FORCE_ETM:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3:+VERS-DTLS1.2:+COMP-NULL"

检查OpenConnect VPN服务器是否支持TLS 1.1

-ssl2 # 检查 SSL 2.0 协议支持
-ssl3 # 检查 SSL 3.0 协议支持
-tls1 # 检查 TLS 1.0 协议支持
-tls1_1 # 检查 TLS 1.1 协议支持
-tls1_2 # 检查 TLS 1.2 协议支持
-tls1_3 # 检查 TLS 1.3 协议支持

# 检查TSL 1.0
openssl s_client -connect vpn.your-domain.com:443 -tls1

# 检查TLS 1.1
openssl s_client -connect vpn.your-domain.com:443 -tls1_1

如果在输出中看到以下消息,则表示不支持TLS版本。

New, (NONE), Cipher is (NONE) 
Secure Renegotiation IS NOT supported

在这里插入图片描述


强制DTLS

https://www.v2ex.com/t/460243
https://www.v2ex.com/t/158768?p=3


dpdmobile-dpd 改小一点。另外就是用最新ocserv版本。最近几个更新都对DTLS连接有优化。

# dpd和mobile-dpd客户端活跃检测(秒),
## 延迟高可以设小点,否则可能会断流
dpd = 90
# 默认为30分钟(秒),可根据断流情况调小
mobile-dpd = 1800

# DTLS超时1年才由UDP模式切换至TCP模式
## 基本上等同于强制DTLS
switch-to-tcp-timeout = 31536000

配置流量优先级

# 缓冲区默认值10,值小延时低,值大带宽高
output-buffer = 2

# 设置协议定义的优先级(SO_PRIORITY)的数据包发送。从0到6,其中0是最低,6最高
net-priority = 6

客户端配置推送

profile文件路径/var/lib/ocserv/profile.xml

# 在ocserv.conf中启用user-profile
user-profile = profile.xml

# 备份profile.xml
cp /var/lib/ocserv/profile.xml{,.bak}

# 编辑profile.xml如下:
vim /var/lib/ocserv/profile.xml

profile.xml多服务器配置

https://gist.github.com/bao3/b917bf978d7f50ed8738

  • HostAddress为你的服务器IP地址
  • Hostname为你的域名

配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<AnyConnectProfile xmlns="http://schemas.xmlsoap.org/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/encoding/ AnyConnectProfile.xsd">

	<ClientInitialization>
		<UseStartBeforeLogon UserControllable="false">false</UseStartBeforeLogon>
		<StrictCertificateTrust>false</StrictCertificateTrust>
		<RestrictPreferenceCaching>false</RestrictPreferenceCaching>
		<RestrictTunnelProtocols>IPSec</RestrictTunnelProtocols>
		<BypassDownloader>true</BypassDownloader>
		<WindowsVPNEstablishment>AllowRemoteUsers</WindowsVPNEstablishment>
		<CertEnrollmentPin>pinAllowed</CertEnrollmentPin>
		<CertificateMatch>
			<KeyUsage>
				<MatchKey>Digital_Signature</MatchKey>
			</KeyUsage>
			<ExtendedKeyUsage>
				<ExtendedMatchKey>ClientAuth</ExtendedMatchKey>
			</ExtendedKeyUsage>
		</CertificateMatch>
<!-- BackupServerList 是备用服务器,一般写服务器的IP,防止解析失败  -->
		<BackupServerList>
	            <HostAddress>158.101.157.167</HostAddress>
		</BackupServerList>

		<!-- 自动选择低延迟的服务器。 -->
		<!-- 如下的例子是,当一个vpn中断了1小时后就启动检测机制,在多台服务器里挑选延低20%的那台。 -->
		<!-- <EnableAutomaticServerSelection UserControllable="true">false
			<AutoServerSelectionImprovement>20</AutoServerSelectionImprovement>
			<AutoServerSelectionSuspendTime>1</AutoServerSelectionSuspendTime>
		</EnableAutomaticServerSelection> -->


	</ClientInitialization>
<!-- 修改HostAddress为你的服务器IP地址,Hostname为你的域名 -->
	<ServerList>
		<HostEntry>
	            <HostName>vip</HostName>
	            <HostAddress>roadstar.vip</HostAddress>
                <!-- 多台服务器就在下面添加即可 -->
                <!-- <HostName>mobi</HostName>
	            <HostAddress>roadstar.mobi</HostAddress>
	            <HostName>work</HostName>
	            <HostAddress>roadstar.work</HostAddress> -->
		</HostEntry>
	</ServerList>
</AnyConnectProfile>

管理业务账号

# 配置/etc/ocserv/ocpasswd文件权限
chmod 644 /etc/ocserv/ocpasswd

# 创建用户,需要输入密码
ocpasswd -c /etc/ocserv/ocpasswd user1

# 添加用户到组:
ocpasswd -c /etc/ocserv/ocpasswd -g [组名] [用户名]

# 禁用用户
ocpasswd -c /etc/ocserv/ocpasswd -l user1

# 解锁被禁用的用户
ocpasswd -c /etc/ocserv/ocpasswd -u user1

# 删除用户
ocpasswd -c /etc/ocserv/ocpasswd -d user1

创建业务账号

# ocpasswd -c /etc/ocserv/ocpasswd 用户名
## -c 指定Password file
sudo ocpasswd -c /etc/ocserv/ocpasswd admin
## 会弹出两次输入密码

签发用户证书脚本文件–免密登录

生成p12证书脚本,以实现用户免密登录

源码:https://github.com/omaidb/qiaofei_notes/blob/main/shell_code/ocserv/add_client_crt.sh

# 下载脚本
wget -c https://raw.githubusercontent.com/omaidb/qiaofei_notes/main/shell_code/ocserv/add_client_crt.sh

# 执行脚本,生成p12证书脚本
bash add_client_crt.sh
# 按照提示输入证书名即可

导出用户证书到设备中

https://www.catpaws2011.com/docs/?p=248


导入user证书移动设备

iOSp12下载到手机上,共享给any connect;
iOS系统第一次要求输入锁屏密码,第二次输入证书密码
p12证书下载到安卓手机后,必需从本地导入到设备才能被发现证书.


导入user证书Windows客户端

Windows,开始—>运行.输入 mmc(Microsoft 管理控制台);
文件---->添加/删除管理单元---->添加证书单元;
计算机账户---->本地计算机,确定。
在左边的控制台根节点下选择—>证书个人,然后选右边的“更多操作”—>-“所有任务”---->“导入”打开证书导入窗口。
选择刚才生成的 client.cert.p12 文件,下一步输入私钥密码。下一步证书存储个人;


导入成功后,把导入的 CA 证书剪切到“受信任的根证书颁发机构”的证书文件夹里面,打开剩下的那个私人证书,看一下有没有显示“您有一个与该证书对应的私钥”,以及“证书路径”下面是不是显示“该证书没有问题”然后关闭 mmc,提示“将控制台设置存入控制台1吗”,选“”即可.
至此,证书导入完成。


证书链问题

https://juejin.cn/post/7164349167798583326


使用客户端连接

可以使用AnyConnect客户端进行链接。
Cisco AnyConnect客户端配置文件路径:

# Windows:
%ProgramData%\Cisco\Cisco AnyConnect Secure Mobility Client\Profile

# 实测目录
C:\ProgramData\Cisco\Cisco Secure Client\VPN\Profile

# Mac OS X:
/opt/cisco/anyconnect/profile

# Linux:
/opt/cisco/anyconnect/profile

Windows客户端anyconnect

anyconnect-latest.msi:

anyconnect-latest.msi :web3下载点

anyconnect-latest.msi :ipfs下载点

cisco-secure-client-win-5.0.01242-core-vpn-predeploy-k9.msi:

cisco-secure-client-win-5.0.01242-core-vpn-predeploy-k9.msi :web3下载点1

cisco-secure-client-win-5.0.01242-core-vpn-predeploy-k9.msi :ipfs下载点2


macOS客户端anyconnect

anyconnect-macosx-3.1.05160-web-deploy-k9.dmg :web3下载点1

anyconnect-macosx-3.1.05160-web-deploy-k9.dmg :ipfs下载点

在这里插入图片描述

openconnect-gui开源客户端下载地址: https://github.com/openconnect/openconnect-gui/releases


Ubuntu客户端

https://qastack.cn/ubuntu/815145/ubuntu-16-04-openconnect-cisco-vpn-failed-to-obtain-webvpn-cookie


iOS和安卓客户端

应用商店搜索AnyConnect


1.添加服务器

首页点击连接,点击添加VPN连接,输入你的服务器地址,如果你的服务器地址是443端口,可以不需要加端口号,如果不是443端口号,需要输入ip:端口号。


2.取消不信任的服务器提示

在这里插入图片描述


3.连接服务器

首页点击AnyConnect VPN,输入你的用户名和密码即可连接。


查看终端状态

https://www.boer.xyz/2020/05/10/oc-vpn-connect/


查看在线用户

# 查看当前状态:
## 查看当前服务运行状态:
occtl -n show status

## 查看当前在线用户详情:
occtl -n show users

image.png


踢掉当前在线用户

# 踢掉当前在线用户:
## 通过用户名:
occtl disconnect user 用户名

## 通过id:
occtl disconnect id id号

AnyConnect自动登录-PC版

https://stackoverflow.com/questions/21682121/cisco-vpn-client-automatic-login

命令行自动登录方式


保存登陆信息

# cd到vpncli目录
cd "C:\Program Files (x86)\Cisco\Cisco Secure Client"

# 新建登录信息
touch response.txt

正常登陆服务器登陆信息,保存到response.txt

connect your.server.url
usernanme  
password
\n    ( # 这里`必须`加一行`空行`作为回车--) 

登陆不受信任的服务器,保存到response.txt


## anyway 登陆不受信任的服务器
connect anyway 服务器地址
y
usernanme  
password
    (这里`必须`加一行`空行`) 

命令行执行登陆

Windows执行登陆命令

# cd到vpncli目录
cd "C:\Program Files (x86)\Cisco\Cisco Secure Client"

# 执行登陆
vpncli.exe -s < "C:\Program Files (x86)\Cisco\Cisco Secure Client\response.txt"

Linux执行登陆命令

# Linux执行登陆命令
/opt/cisco/anyconnect/bin/vpncli -s < "response.txt"

命令行断开连接

# cd到vpncli目录
cd "C:\Program Files (x86)\Cisco\Cisco Secure Client"

# 断开连接
vpncli.exe disconnect

Linux_server编写脚本开机自动连接

参考官方文档: https://www.infradead.org/openconnect/connecting.html
https://www.infradead.org/openconnect/vpnc-script.html

参考三方文档: http://8u.hn.cn/linuxjc/12595.html


1.安装opencontent

# 安装命令行版客户端
yum install openconnect -y

# 官方方案需要vpnc-script--不推荐
yum install vpnc-script -y

2.先生成servercert

# 服务端没配证书的,客户端要先执行一遍这个命令来获取servercert
/bin/echo -n qiaofei123 | /usr/sbin/openconnect 130.10.137.59 -u qiaofei --passwd-on-stdin

3.无交互式登录到服务器

/bin/echo -n qiaofei123 | /usr/sbin/openconnect 130.10.137.59 -b -u qiaofei --servercert pin-sha256:MRh2dOPh7UvAprr+mogqs2woerMU9OhzpHfIzyuzVzc= --passwd-on-stdin

# -b 后台
# -u 用户名
# --servercert 免除输入yes

4.将自动登录写入到service文件

写入到/usr/lib/systemd/system/openconnect.service

[Unit]
Description=OpenConnect登录连接VPN
Documentation=man:openconnect(8)
After=network-online.target
After=dbus.service
Wants=network-online.target

[Service]
Type=simple
# 注意不要加-b参数
ExecStart=/bin/bash -c '/bin/echo -n qiaofei123 | /usr/sbin/openconnect 130.10.137.59 -u qiaofei --servercert pin-sha256:MRh2dOPh7UvAprr+mogqs2woerMU9OhzpHfIzyuzVzc= --passwd-on-stdi'
ExecStop=/usr/bin/pkill openconnect
KillSignal=SIGINT
Restart=always
RestartSec=2

[Install]
WantedBy=multi-user.target

5.将vpn-client服务设为开机自启

# 重载服务
systemctl daemon-reload

# 将vpn-clinet设为开机自启动并现在启动
systemctl enable --now openconnect

常见问题

使用ocserv的常见问题。


测试ocserv配置文件

# 查看ocserv版本
ocserv --version

image.png

# 测试配置文件
## -t, --test-config
## -c 指定配置文件
ocserv -t -c /etc/ocserv/config

error表示错误的配置项
image.png


服务端启动了但是客户端连不上

https://huataihuang.gitbooks.io/cloud-atlas/content/security/vpn/openconnect/deploy_ocserv_vpn_server.html
使用debug模式分析日志进行诊断

# ocserv调试模式查下日志
ocserv -c /etc/ocserv/config -d 9 -f

能连上服务器但是上不了网

# 检查ocserv服务日志
## -u ocserv: 指定要查看的服务名称
## -e: 表示从最新的日志记录开始显示日志。
## -f: 表示持续跟踪日志文件的变化,即实时监视日志文件。
journalctl -eu ocserv -f

解决办法

# 检查防火墙服务是否开启,允许防火墙DNAT
# 检查是否开启了DNAT
firewall-cmd --query-masquerade

# 设置DNAT
firewall-cmd --add-masquerade
firewall-cmd --add-masquerade --per

Windows版Cisco AnyConnect登录报错

Cisco AnyConnect Connection attempt has failed.
image.png

修改注册表

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

新建DWORD32,命名为GlobalUserOffline,值设为0

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值