服务端:

ocserver安装:

yum install ocserv -y

配置:主要修改以下几项。

vim /etc/ocserv/ocserv.conf

# 登陆方式,账号密码方式
auth = "plain[/etc/ocserv/ocpasswd]"

# 监听地址
listen-host = 0.0.0.0

# vpn的网段,不要跟连接的网段冲突,如:10.2.0.0/16
ipv4-network = 192.168.2.0/24

设置用户名密码:

ocpasswd -c /etc/ocserv/ocpasswd user123

开启路由转发:

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

sysctl -p

添加iptables规则:网段是vpn网段。

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

开机自动添加iptables:

chmod +x /etc/rc.d/rc.local
echo "iptables-restore < /root/iptables" >> /etc/rc.d/rc.local

启动服务:

systemctl enable --now ocserv.service


常见配置项:一般不用设置

# 登陆方式,目前先用密码登录
auth = "plain[/etc/ocserv/ocpasswd]"
 
# 允许同时连接的客户端数量
max-clients = 400
 
# 限制同一客户端的并行登陆数量
max-same-clients = 0
 
# 服务监听的IP(服务器IP,可不设置)
listen-host = 1.2.3.4
 
# 服务监听的TCP/UDP端口(选择你喜欢的数字)
tcp-port = 443
udp-port = 443
 
# 自动优化VPN的网络性能
try-mtu-discovery = true
 
# 确保服务器正确读取用户证书(后面会用到用户证书)
cert-user-oid = 2.5.4.3
 
# 服务器证书与密钥存放位置
server-cert = /etc/ssl/selfsigned/certs/server-cert.pem
server-key = /etc/ssl/selfsigned/private/server-key.pem
 
# 客户端连上后使用的dns
dns = 8.8.8.8
dns = 8.8.4.4
 
# 这里的路由不路由指的是服务端的网段,并非控制客户端的流量,
# 因为客户端所有的流量都走ocserv,除非在客户端配置路由。
# route = 192.168.1.0/255.255.255.0
# no-route = 192.168.5.0/255.255.255.0
 
# 启用cisco客户端兼容性支持
cisco-client-compat = true


管理命令:

查看服务状态:

occtl -n show status

查看在线用户:

occtl -n show users

剔除当前用户:

occtl disconnect user username
occtl disconnect id userid


用户管理:

创建用户:

ocpasswd -c /etc/ocserv/ocpasswd username

添加用户到组:

ocpasswd -c /etc/ocserv/ocpasswd -g groupname username

锁定用户:

ocpasswd -c /etc/ocserv/ocpasswd -l username

解锁用户:

ocpasswd -c /etc/ocserv/ocpasswd -u username

删除用户:

ocpasswd -c /etc/ocserv/ocpasswd -d username


更多命令:

occtl --help

occtl disconnect user [NAME]断开指定用户

occtl disconnect id [ID]断开指定ID的用户

occtl unban ip [IP]解禁IP

occtl reload重载配置

occtl show status显示服务器状态

occtl show users显示在线用户

occtl show ip bans显示禁用IP

occtl show ip ban pointsPrints all the known IP addresses which have points

occtl show iroutes显示路由信息

occtl show sessions all显示sessions信息

occtl show sessions valid显示重连的会话信息

occtl show session [SID]Prints information on the specified session

occtl show user [NAME]显示指定用户信息

occtl show id [ID]显示指定用户ID的信息

occtl show events显示关联用户信息

occtl stop now停止服务



windows客户端:

AnyConnect下载地址:这是ocserver的windows客户端

https://www.catpaws2011.com/download/anyconnect/anyconnect-win-4.10.03104.zip
https://olemiss.edu/helpdesk/vpn/_files/anyconnect-win-4.10.00093-core-vpn-predeploy-k9.msi

客户端设置中 设置图标->Preferences->Block connections to untrusted servers(去掉勾选)。

连接时因为证书不受信任直接点"Connect Anyway"。


Linux客户端:

yum install openconnect -y
openconnect <vpn_server_address>


非必要配置:

记录用户连接和断开的日志信息:

vim /etc/ocserv/ocserv.conf
# 修改下面的配置
connect-script = /etc/ocserv/connect-script
disconnect-script = /etc/ocserv/connect-script
cert-user-oid = 2.5.4.3
cert-group-oid = 2.5.4.1

记录日志脚本:

创建脚本:

touch /etc/ocserv/connect-script

内容如下:

#!/bin/bash

export LOGFILE=/etc/ocserv/login.log

#echo $USERNAME : $REASON : $DEVICE
case "$REASON" in
  connect)
echo `date` $USERNAME "connected" >> $LOGFILE
echo `date` $REASON $USERNAME $DEVICE $IP_LOCAL $IP_REMOTE $IP_REAL >> $LOGFILE
    ;;
  disconnect)
echo `date` $USERNAME "disconnected" >> $LOGFILE
    ;;
esac
exit 0

添加权限:

chmod +x /etc/ocserv/connect-script


参考地址:

https://beyondkmp.com/post/centos7-ocser-config/