AnyConnect为思科推出的VPN客户端,目前已有Windows、Android、iOS、OS X、Ubuntu、WebOS等操作系统的客户端。AnyConnect主要作用是方便员工在任何设备上安全地办公,也有部分中国大陆用户利用AnyConnect翻墙。
环境安装为centos7下
安装软件,直接使用yum安装
yum install epel-release
yum install ocserv
#查看ocserv的配置文件(其中认证证书,直接使用过去文章里写的)
$grep -Ev '^#|^$' /etc/ocserv/ocserv.conf
#ocserv支持多种认证方式,这是自带的密码认证,使用ocpasswd创建密码文件
#ocserv还支持证书认证,可以通过Pluggable Authentication Modules (PAM)使用radius等认证方式
auth = "plain[/etc/ocserv/users]"
#tcp和udp端口
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 = 160
#同一个用户最多同时登陆数
max-same-clients = 2
keepalive = 32400
dpd = 90
mobile-dpd = 1800
switch-to-tcp-timeout = 25
#是否优化
try-mtu-discovery = true
#证书路径(这里要自己加入证书,本文不讲解证书问题)
server-cert = /etc/ocserv/ssl/***.com.crt
server-key = /etc/ocserv/ssl/***.com.key
#从证书中提取用户名的方式,这里提取的是证书中的 CN 字段作为用户名
cert-user-oid = 2.5.4.3
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 = vpn_back.***.com
#分配给VPN客户端的IP段
ipv4-network = 172.200.0.1
ipv4-netmask = 255.255.255.0
ping-leases = false
#IP内网网段
route = 10.0.0.0/255.0.0.0
cisco-client-compat = true
dtls-legacy = true
##重启ocserv
sudo systemctl enable ocserv
sudo systemctl start ocserv
##查看是否启动成功(debug权重为1,最高可以为10)
sudo ocserv -c /etc/ocserv/ocserv.conf -f -d 1
##添加用户
ocpasswd -c /etc/ocserv/users 【用户名】
##添加用户至某个分组
ocpasswd -c /etc/ocserv/users -g 【分组名称】 【用户名】
##锁定用户
ocpasswd -c /etc/ocserv/users -l 【用户名】
##解锁用户
ocpasswd -c /etc/ocserv/users -u 【用户名】
##删除用户
ocpasswd -c /etc/ocserv/users -d 【用户名】
##查看当前服务运行状态:
occtl -n show status
##查看当前在线用户详情:
occtl -n show users
##踢掉当前在线用户:
通过用户名:
occtl disconnect user 【用户名】
通过id:
occtl disconnect id 【id号】
# 转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
#通过nat将ocserv设置的虚拟网段172.200.0.1与线上网络打通
iptables -A FORWARD -s 172.17.200.1/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.17.200.1/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -o vpns+ -j ACCEPT
iptables -A FORWARD -i vpns+ -j ACCEPT
service iptables save
service iptables restart
##创建一个账号
ocpasswd -c /etc/ocserv/users kitty
##4.1 软件下载地址:https://softs.loan/?dir=%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91/PC/AnyConnect
连接cisco anyconnect 的设备,输入登录地址
测试内网域名
ping test.010sec.cn
PING test.010sec.cn (10.67.71.8) 56(84) bytes of data.
64 bytes from 10.67.71.8 (10.67.71.8): icmp_seq=1 ttl=250 time=3.98 ms
##4.2 使用第三方软件
#4.2.1 下载与使用方式
#4.2.1.1.Lunix
安装方式:sudo apt install -y network-manager-openconnect-gnome
使用为界面化模式
#4.2.1.2 mac
安装方式 :brew install openconnect
使用方式:sudo openconnect vpn_back.***.com
#输入账号密码即可
#4.2.1.3 window
下载地址:https://github.com/openconnect/openconnect-gui/releases/latest
使用为界面化模式
##4.3 两款软件比较
我测试中,使用是yum安装,而且直接使用Cisco anyconnect的路由进行转发,但是这里存在一个问题,就是Cisco anyconnect 最大支持的路由只要64个,所以很多人都会采用iptables进行转发。另外一个注意点,就是服务器必须开启ipv4转发
sysctl -w net.ipv4.ip_forward=1
https://ipbgp.com/2017/08/29/cisco-anyconnect/
https://zh.wikipedia.org/wiki/AnyConnect
https://softs.loan/?dir=%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91/PC/AnyConnect
https://www.logcg.com/archives/994
http://carlislebear.blogspot.com/2016/05/linode-centos-7-cisco-anyconnect-vpn-server.html