静看光阴荏苒
不管不顾不问不说也不念

CentOS7使用Ocserv搭建CiscoAnyconnect服务器

最近这段时间我朝的墙是越来越猛,有点赶尽杀绝的意思,也不知道是有什么重要日子?

对于搭自用梯子的话,目前有一个比较好的方案可以非常有效的“防封”,就是今天要给大家介绍的Ocserv(OpenConnect)以下简称Ocserv。

因为Anyconnect是思科开发出来的,众所周知思科的网络设备天下第一,很多大型的企业都是用思科的设备,包括Anyconnect这种VPN解决方案,所以墙不敢随便封这种协议的梯子。

但是由于思科只允许Anyconnect运行在思科的设备上,所以就有了今天的Ocserv服务端。Ocserv诞生的主要目的就是可以让任何设备都能安装上Anyconnect而不在局限于思科。

因为最近墙实在是太鸡儿猛了,所以没办法才用Anyconnect的,一般情况下这玩意我都不想碰,毕竟搭建和配置都比较麻烦,而且也不是很好配合其他的加速软件,所以就一直没想写这方面的文章,今天就详细写一下吧。

为了教程更简便,这里我直接用EPEL源安装Ocserv,可以省去麻烦的编译过程。首先安装EPEL源:

yum -y install epel-release

然后就可以直接YUM安装Ocserv了:

yum -y install ocserv

新建一个目录,用来存放SSL证书相关文件,然后进入到这个目录内:

mkdir ssl
cd ssl

新建一个证书模板:

vi ca.tmpl

写入:

cn = "LALA"
organization = "LALA.IM"
serial = 1
expiration_days = 9999
ca
signing_key
cert_signing_key
crl_signing_key

注:LALA和LALA.IM可以根据自己的需要更改,反正都是自签证书,随便瞎鸡儿写也没关系。。。

然后生成私钥和CA证书:

certtool --generate-privkey --outfile ca-key.pem
certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem

接着来生成服务器证书,还是老样子新建一个证书模板:

vi server.tmpl

写入:

cn = "你的服务器IP"
organization = "LALA.IM"
expiration_days = 9999
signing_key
encryption_key
tls_www_server

注:cn后面的值改成你的服务器公网IP。

然后生成私钥和证书:

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

然后我们把证书文件用移动到Ocserv默认的目录下:

cp server-cert.pem /etc/pki/ocserv/public/
cp server-key.pem /etc/pki/ocserv/private/
cp ca-cert.pem /etc/pki/ocserv/cacerts/

现在编辑ocserv的配置文件(需要改动的地方很多,如果vi不好用就自己用SFTP把这个文件下载到本地用专业的编辑器编辑):

vi /etc/ocserv/ocserv.conf

让我们一起来看看需要改哪些地方:

1、auth也就是验证方式要改为:

auth = "plain[passwd=/etc/ocserv/ocpasswd]"

如图所示:

2、默认的监听端口为443,如果你的服务器上跑着HTTPS的WEB站点,那么443端口肯定是被占用了的,所以如果有需求的话,可以更改下面的值:

# TCP and UDP port number
tcp-port = 443
udp-port = 443

如图所示:

3、Anyconnect有一个设置连接欢迎信息的功能,也就是你在连接的时候会弹出一个提示框,提示框的内容就可以自行设置,如有需要可以更改下面的值:

# A banner to be displayed on clients
banner = "Welcome LALA.IM"

如图所示:

4、Anyconnect可以限制最大允许连接的设备数量,如有需要可以更改下面这两个值:

max-clients = 16
max-same-clients = 2

如图所示:

5、更改服务器证书以及私钥的路径为我们刚才移动的路径:

server-cert = /etc/pki/ocserv/public/server-cert.pem
server-key = /etc/pki/ocserv/private/server-key.pem

如图所示:

6、更改CA证书的路径为我们刚才移动的路径:

ca-cert = /etc/pki/ocserv/cacerts/ca-cert.pem

如图所示:

7、取消如下几个参数的注释(去掉#号就是去掉注释):

ipv4-network
ipv4-netmask

如图所示:

8、去掉如下参数的注释以及设置DNS服务器地址:

tunnel-all-dns = true
dns = 8.8.8.8
dns = 8.8.4.4

如图所示:

确定你已经修改好上面的内容,然后保存即可。

现在来创建一个VPN用户:

ocpasswd -c /etc/ocserv/ocpasswd lala

盲输两遍密码即可。如果不想让这个用户继续使用了,可以执行下面的命令删除指定的用户:

ocpasswd -c /etc/ocserv/ocpasswd -d lala

现在我们开启机器的IPV4转发功能:

echo 1 > /proc/sys/net/ipv4/ip_forward

然后启动CentOS7的Firewalld防火墙:

systemctl start firewalld.service

放行Anyconnect的端口(我这里之前设置的是默认的443端口,如果你修改了端口,那么这里也要对应):

firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --permanent --zone=public --add-port=443/udp

设置转发:

firewall-cmd --permanent --add-masquerade
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -o eth0 -j MASQUERADE

注:eth0是你的公网网卡名字,每个机器的名字可能都不一样,自己用ifconfig命令查一下就行了。

重加载,让新的配置生效:

firewall-cmd --reload

现在就可以尝试运行一下Ocserv了:

ocserv -f -d 1

如果一切正常,回显的内容大致如下图所示:

确定正常后按键盘组合键Ctrl+C退出运行,现在我们就可以直接用systemctl来管理Ocserv的进程。

设置Ocserv开机启动:

systemctl enable ocserv

启动Ocserv:

systemctl start ocserv

Anyconnect支持多平台客户端,Win/iOS/Android都是支持的,软件下载地址:

https://software.cisco.com/download/home/286281283/type/282364313/release/4.6.01103

iOS的话直接在商店里面搜索Anyconnect安装就行了。下面我拿iOS设备示范一下。

首先打开APP点击“设置”,把“阻止不信任的服务器”这个选项关闭,如图所示:

接着点击“连接”-“添加VPN连接”,按如下图配置:

现在就可以连接了,会提示你不信任的服务器,点“继续”:

然后就是输入用户名密码了,这里就不多说了,用户名和密码就是之前你自己在终端内创建的那个,如果用户名和密码验证正确的话,那么最后就会弹出你设置的欢迎信息:

现在就开始爱国吧。。。

写在最后:

其他客户端的配置都大同小异。因为我们是自签的证书,所以不管在哪个客户端上只要把“阻止不信任的服务器”这种类似的功能关闭就行了。

赞(3)
未经允许不得转载:荒岛 » CentOS7使用Ocserv搭建CiscoAnyconnect服务器
分享到: 更多 (0)

评论 32

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    能否使用泛域名证书呢 :smile:

    owen6年前 (2018-06-25) Safari 11.0 Safari 11.0 iPad iOS 11.4 iPad iOS 11.4回复
    • 这个我还没试过,但是按理论上来说的话,只要是个证书应该都行吧,毕竟自签都支持= =
      PS:这评论速度快的猝不及防。。。

      LALA6年前 (2018-06-25) Google Chrome 66.0.3359.181 Google Chrome 66.0.3359.181 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 这叫随时关注大佬动态 :neutral:

        owen6年前 (2018-06-25) Safari 11.0 Safari 11.0 iPad iOS 11.4 iPad iOS 11.4回复
  2. #2

    大佬来个一键脚本方便我们这些小白吧。 :cry:

    Rats6年前 (2018-06-25) WebView 4.0 WebView 4.0 Android 7.0 Android 7.0回复
    • 逗比聚集地有一键

      zaipinai6年前 (2018-06-25) Safari 11.1.1 Safari 11.1.1 Mac OS X  10.13.5 Mac OS X 10.13.5回复
    • 写不出来好脚本。。。

      LALA6年前 (2018-06-26) Google Chrome 66.0.3359.181 Google Chrome 66.0.3359.181 Windows 10 x64 Edition Windows 10 x64 Edition回复
  3. #3

    出现错误:PAM-auth pam_auth_pass: User not known to the underlying authentic ation module

    OP6年前 (2018-06-25) QQbrowser 10.1.1626.400 QQbrowser 10.1.1626.400 Windows 8.1 x64 Edition Windows 8.1 x64 Edition回复
    • 验证方式你没改,默认是pam要改成plain。

      LALA6年前 (2018-06-26) Google Chrome 66.0.3359.181 Google Chrome 66.0.3359.181 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 按照你上面更改验证方式。我是改过的,难道这也要改掉。auth = “pam” 这个也要改成plain嘛

        OP6年前 (2018-06-27) QQbrowser 10.1.1626.400 QQbrowser 10.1.1626.400 Windows 8.1 x64 Edition Windows 8.1 x64 Edition回复
        • 要注释掉auth=pam,然后去掉plain的注释。

          LALA6年前 (2018-07-02) Google Chrome 66.0.3359.181 Google Chrome 66.0.3359.181 Windows 10 x64 Edition Windows 10 x64 Edition回复
  4. #4

    这种方式爬梯速度跟酸酸乳之类的比之如何? :roll:

    啊啊啊哦哦哦6年前 (2018-06-27) Google Chrome 67.0.3396.87 Google Chrome 67.0.3396.87 Mac OS X  10.13.5 Mac OS X 10.13.5回复
    • 如果服务器本身线路够好的话速度没区别,线路渣点的话,酸酸毕竟可以配合一些其他的加速软件,而这个就不是很好配合了。

      LALA6年前 (2018-06-27) Google Chrome 66.0.3359.181 Google Chrome 66.0.3359.181 Windows 10 x64 Edition Windows 10 x64 Edition回复
  5. #5

    可以放路由条目吗? 现在的情况是所有的访问都走国外了 :neutral:

    lala6年前 (2018-06-28) Firefox 61.0 Firefox 61.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
  6. #6

    有没有easy connect的搭建教程呢,找不到 :eek: :eek: :eek:

    xxx6年前 (2018-07-02) WebView 4.0 WebView 4.0 Android 7.0 Android 7.0回复
  7. #7

    网站域名当时脑子一抽抽,转到阿里云被DNS阻断了,时断时续,部分地区打不开看看一个月以后转出去会不会恢复! 新建一个www.jiikii.com 给个友情链接呗!

    筑楼6年前 (2018-07-04) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 7 x64 Edition Windows 7 x64 Edition回复
    • 新域名还是算了,再说你这个域名只是暂时的吧,旧的肯定会恢复的。

      LALA6年前 (2018-07-10) Google Chrome 66.0.3359.181 Google Chrome 66.0.3359.181 Windows 10 x64 Edition Windows 10 x64 Edition回复
  8. #8

    照着一步一步做,anyconnect 连接成功过了,但是连接后,上不了网了。 断开anyconnect之后,上网正常。 SS和SSR也是正常工作的。。 博主知道是为什么吗。

    Terry6年前 (2018-08-07) Maxthon 5.1.5.2000 Maxthon 5.1.5.2000 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 防火墙设置了没?

      LALA6年前 (2018-08-08) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复
  9. #9

    所有搭建都正常,最后客户端连接后输完账号密码,显示完banner后,提示failed to download the AnyConnect profile.Please retry.

    kaysin6年前 (2018-08-11) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Mac OS X  10.13.6 Mac OS X 10.13.6回复
    • 这就有点玄学了,我表示不清楚。。。

      LALA6年前 (2018-08-12) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复
  10. #10

    您好,我想问一下,如果搭建客户端啊,我自己搜了搜但是一直连不上,但是windows可以连接,就是我的centos不能连接,能不能指导一下,可以是有偿的。

    billsteve6年前 (2018-09-08) QQbrowser 10.2.2265.400 QQbrowser 10.2.2265.400 Windows 10 x64 Edition Windows 10 x64 Edition回复
  11. #11

    感谢。已经按照步骤试验成功。
    有个问题,成功连接以后,访问国内网站等速度回变慢,传输文件的时候只有极慢。
    是因为都走国外了吗?

    kevin6年前 (2018-09-15) Google Chrome 65.0.3325.181 Google Chrome 65.0.3325.181 Windows 7 x64 Edition Windows 7 x64 Edition回复
    • 是的,这是全局代理。

      LALA6年前 (2018-09-15) Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 10 x64 Edition Windows 10 x64 Edition回复
  12. #12

    yum -y install ocserv
    提示No package ocserv available
    这是啥情况?

    Kevin5年前 (2018-12-02) Google Chrome 55.0.2883.87 Google Chrome 55.0.2883.87 Windows 7 x64 Edition Windows 7 x64 Edition回复
    • 你确定你的EPEL源安装成功了吗?

      LALA5年前 (2018-12-04) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 瓦工。
        安装EPEL源时提示
        Package epel-release-7-11.noarch already installed and latest version
        Nothing to do

        如果执行 yum -y install ocserv 就提示No package ocserv available

        Kevin5年前 (2018-12-09) Google Chrome 55.0.2883.87 Google Chrome 55.0.2883.87 Windows 7 x64 Edition Windows 7 x64 Edition回复
        • 那这就有点玄学了,装EPEL源竟然会提示找不到包。。

          LALA5年前 (2018-12-09) Google Chrome 70.0.3538.110 Google Chrome 70.0.3538.110 Windows 10 x64 Edition Windows 10 x64 Edition回复
  13. #13

    note: setting ‘plain’ as primary authentication method
    GnuTLS error (at tlslib.c:1132): Base64 unexpected header error.
    求解?????

    4_45年前 (2019-01-10) Firefox 64.0 Firefox 64.0 Android 8.1.0 Android 8.1.0回复
  14. #14

    这文档质量相当高!!!!大写的赞 :mrgreen: :mrgreen: :mrgreen: :mrgreen:

    大佬强悍4年前 (2020-05-18) Google Chrome 81.0.4044.138 Google Chrome 81.0.4044.138 Windows 8.1 x64 Edition Windows 8.1 x64 Edition回复
  15. #15

    请博主写个ubuntu 20和Debian 11系统下Ocserv搭建Anyconnect服务器教程,谢谢

    niCk3年前 (2021-09-21) Google Chrome 93.0.4577.82 Google Chrome 93.0.4577.82 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 客气了不用谢,我最近有点忙,有空的话就写一篇。

      LALA3年前 (2021-09-22) Google Chrome 86.0.4240.198 Google Chrome 86.0.4240.198 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿