架构师_程序员

查看: 96|回复: 1

在CentOS 7 上搭建 ocserv vpn 代理

[复制链接]
发表于 2020-10-7 11:54:56 | 显示全部楼层
Cisco AnyConnect 为思科推出的 VPN 客户端,当前已有 Windows、Android、iOS、OS X、Ubuntu、WebOS 等操作系统的客户端。AnyConnect 主要作用是方便员工在任何设备上安全地办公。

AnyConnect 作为 Cisco 专有技术,其服务端只能运行在Cisco设备上,即如果没有购买Cisco相关设备,将无法使用AnyConnect服务端。而OpenConnect(ocserv)的出现解决了这一个问题,OpenConnect是一个开源项目,其目标是在相对廉价的linux设备上运行与AnyConnect协议兼容的服务端,以此来使用该协议而不需要购买Cisco专有设备。

Openconnect VPN Server 官网:http://ocserv.gitlab.io/www/index.html

需求:服务器服务只对某些ip开放了端口访问权限,也就是白名单机制,所以,只能通过vpn连接到白名单内的服务器,再去访问其他服务器。

服务器环境:

entOS Linux release 7.7.1908 (Core)

QQ截图20201007112002.jpg

安装 ocserv

  1. yum install ocserv
复制代码

查看版本

[root@VM_0_9_centos ~]# ocserv -v
ocserv 1.1.0

Compiled with: seccomp, tcp-wrappers, oath, radius, gssapi, PAM, PKCS#11, AnyConnect
GnuTLS version: 3.3.29


配置 ocserv

配置文件/etc/ocserv/ocserv.conf,主要配置如下:

  1. # 配置密码认证
  2. auth = "plain[passwd=/etc/ocserv/ocpasswd]"
  3. # 单IP最大连接数,默认是2
  4. max-same-clients = 10
  5. # 最大连接数,默认是16
  6. max-clients = 1024
  7. # tcp udp 端口
  8. tcp-port = 443

  9. udp-port = 443
  10. # 分配给vpn客户端的网段
  11. ipv4-network = 172.19.255.0

  12. ipv4-netmask = 255.255.255.0
  13. # 设置压缩,提高效率
  14. compression = true
  15. no-compress-limit = 256
  16. # dns 解析服务器
  17. dns = 119.29.29.29
  18. # 注释掉route的字段(或者设置default),这样表示所有流量都通过 VPN
  19. # route配置表示这个网段会经过vpn
  20. route = default
复制代码
(注意:开始我未配置dns,可以正常使用 QQ、微信聊天,但是无法上网)

测试配置文件

  1. ocserv -t
复制代码

开启内核转发

修改 /etc/sysctl.conf 文件,配置如下:

  1. net.ipv4.ip_forward = 1
复制代码
重新加载配置
  1. sysctl -p /etc/sysctl.conf
复制代码

配置防火墙规则

  1. iptables -I INPUT -p tcp --dport 443 -j ACCEPT
  2. iptables -I INPUT -p udp --dport 443 -j ACCEPT
  3. iptables -I FORWARD -s 172.19.255.0/24 -j ACCEPT
  4. iptables -I FORWARD -d 172.19.255.0/24 -j ACCEPT
  5. iptables -t nat -A POSTROUTING -s 172.19.255.0/24 -o eth0 -j MASQUERADE
  6. service iptables save
复制代码

创建用户

  1. ocpasswd -c /etc/ocserv/ocpasswd itsvse
  2. Enter password:
  3. Re-enter password:
复制代码
QQ截图20201007113323.jpg

服务启动

  1. --启动服务
  2. systemctl start ocserv
  3. --停止服务
  4. systemctl stop ocserv
  5. --重启服务
  6. systemctl restart ocserv
复制代码

查看服务状态

  1. systemctl status ocserv
复制代码
QQ截图20201007113551.jpg

iPhone 手机连接

在应用商店下载 AnyConnect 应用,添加 VPN 连接信息,如下图:

QQ图片20201007115254.jpg

QQ截图20201007115328.jpg

常用命令

添加用户

  1. ocpasswd -c /etc/ocserv/ocpasswd 【用户名】
复制代码
添加用户至某个分组

  1. ocpasswd -c /etc/ocserv/ocpasswd -g 【分组名称】 【用户名】
复制代码
锁定用户

  1. ocpasswd -c /etc/ocserv/ocpasswd -l 【用户名】
复制代码
解锁用户

  1. ocpasswd -c /etc/ocserv/ocpasswd -u 【用户名】
复制代码
删除用户

  1. ocpasswd -c /etc/ocserv/ocpasswd -d 【用户名】
复制代码
查看当前服务运行状态

  1. occtl -n show status
复制代码
查看当前在线用户详情

  1. occtl -n show users
复制代码
QQ截图20201007114908.jpg

踢掉当前在线用户(通过用户名)

  1. occtl disconnect user 【用户名】
复制代码
踢掉当前在线用户(通过id)

  1. occtl disconnect id 【id号】
复制代码


另外,可以参考自动化的 shell 脚本:https://github.com/travislee8964/ocserv-auto/blob/master/ocserv-auto.sh

ocserv-auto-master.zip (6.71 KB, 下载次数: 0, 售价: 2 粒MB)




上一篇:使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错
下一篇:【实战】使用 VS 2019 将项目发布到远程 IIS 服务器
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2020-10-7 12:04:14 | 显示全部楼层
其他 ikev2 ipsec l2tp WireGuard v2ray
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2020-10-28 14:23

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表