您的位置: 首页 » 翻越奥义 » OpenConnect server(ocserv) 一键脚本 for deibian 7+

OpenConnect server(ocserv) 一键脚本 for deibian 7+

作者:liyangyijie / 时间:January 21, 2015 /分类:翻越奥义 / 标签:ocserv, debian, ubuntu, anyconnect, jessie, user-friendly script /阅览次数:504,050

该脚本在deibian 7+/ubuntu 14.04-15.10(2015-10-31)上进行过测试,默认使用密码方式登录,思科anyconnect客户端可连可用。

AnyConnect是思科的安全远程接入解决方案,之前只有思科的设备才支持。

ocserv(OpenConnect server)是一个OpenConnect SSL 协议服务端,0.3.0版后兼容使用AnyConnect SSL 协议的终端。

官方主页:http://www.infradead.org/ocserv/

2015年7月6日 
更新和提示:
1,默认使用ocserv的0.10.6版本,由于移除了服务端路由规则数量限制,脚本不再询问路由规则限制数。
2,自签证书全部使用sha256签名算法,且完善证书链。
3,增加支持ubuntu 14.10、15.04。(但不建议使用非LTS版本ubuntu)
4,证书登录方式增加支持自定义客户端证书的CN名。
5,添加了更加完整的安装日志。
6,更新启动管理脚本,增加debug模式,下文说明。
7,支持用户名密码登录和证书登录同时开启,下文说明。
8,增加了相同客户端证书可以登录多个服务器的方案,下文说明。
9,修复一些其他小问题。
2015年5月1日 
更新和提示:
1,编译安装freeradius-client-1.1.7,便于freeradius认证。(/etc/radiusclient/radiusclient.conf) 
2,编译安装lz4。(/usr/local)
3,随机字符串获取剔除容易识别错误的字符例如0和O等等。
4,增加DH parameters。
5,关于GSSAPI认证,开启支持下文说明。
6,兼容debian 8 (jessie)。
7,在没有卸载依赖的情况下,支持平滑升级降级,升降级之后原来用户数据保留;也可以选择强制重装,抹掉原来数据。 
2015年4月8日
更新和提示:
1,允许自定义客户端证书的到期日期。
2,默认从github编译安装依赖包lz4,避免某些情况下会破坏系统,但仍然可以选择强制从debian Jessie更新liblz4-dev。
3,增加对ubuntu 14.04的支持 。 
2015年3月25日 
更新与提示:
1,增加了ocserv最新版本检测,默认推荐使用0.10.1版本 。
2,如果为了稳定使用,这里并不推荐使用最新版本,有些最新发行版由于存在严重bug很快被更新的版本替代。  
3,增加支持证书登录以及吊销证书。
4,默认开启lz4压缩,据说能极大提升速度。
5,默认是tcp和udp同时开启,若速度不佳,可在安装时选Only use tcp-port,或在配置文件里面注释掉udp端口。
6,曾经使用过该脚本安装的朋友,可以通过下面提到的命令升级重装。
2015-01-27 
更新:依然使用0.8.9版本进行编译安装,增加了一些自定义选项,但不支持证书登录。 

由于各种依赖较新,debian 7以下不支持。openvz需要支持打开tun/tap服务。

关于这个一键脚本的github放置点

https://github.com/fanyueciyuan/eazy-for-ss/tree/master/ocservauto

编译安装总结(jessie)



一,安装步骤:

1,安装与调试

如果这是纯净新系统的话,请先更新一下系统。

apt-get update && apt-get upgrade -y

首次安装,终端输入以下命令

wget git.io/p9r8 --no-check-certificate -O ocservauto.sh&&bash ocservauto.sh

如果您以前使用了该脚本进行安装,只需要输入下面命令更新(只更新相关脚本,服务器不会更新)

wget git.io/ocservauto -O- --no-check-certificate|bash -

如果使用自动安装,默认是使用用户名和密码登录,只需要输入初始用户名和密码,回车即可自动安装完成。

如果使用自定义安装,请输入自己的要求来完成安装。

下面是进入脚本之后一些选项说明解释。

如果安装顺利,最后给出您的相应信息,例如

如果安装失败可以查阅安装日志,即脚本所在文件夹的ocinstall.log文件,可以使用下面命令逐步阅读

more ocinstall.log

空格键,向下滚动一屏;Ctrl+b,返回上一屏;q,退出。

一般情况下安装成功之后,服务器就在启动状态了。

这里可以简单使用本地浏览器查看服务器信息,在本地浏览器输入https://IP或域名:(英文冒号)端口

如果您仍然无法连到服务器或者出现其他问题,那么请使用debug模式。

如果您以前使用了该脚本进行安装,这里请先通过前面所说的,更新一下脚本。

首先关闭服务器,然后开启调试模式

/etc/init.d/ocserv stop
/etc/init.d/ocserv debug

此时不要关闭终端,使用客户端登录服务器,在终端屏幕下就会显示即时日志,以供调试改错。

2,简单用户管理

a,用户名密码验证方式

若要新建可用用户,输入以下命令

sudo ocpasswd -c /etc/ocserv/ocpasswd 999

这里的 “999”是新建的用户名。接着输入两次同样的密码,完成新建用户。

b,证书登录方式

所有用户的p12证书文件可以在放置脚本的目录下找到,导入证书时请输入自己设定的密码。

新建客户证书用以下命令

bash ocservauto.sh gc



吊销客户证书请使用下面命令

bash ocservauto.sh rc


3,脚本其他参数说明

a,平滑升级ocserv

请输入以下命令,原来的用户数据都会保留

bash ocservauto.sh ug

b,强制重装ocserv

请输入以下命令,注意这会使您的用户数据和配置丢失

bash ocservauto.sh ri

c,同时开启证书登录和用户名密码登录

请务必首先选择任意一种登录方式来完成安装,接着再使用下面命令

bash ocservauto.sh pc

d,关于相同客户端证书可以登录多个服务器的方案

假定我们有三台服务器ABC。

在A服务器上,通过本脚本安装ocserv并选择使用证书登录方式。

于/etc/ocserv目录下可以找到ca-cert.pem文件。这里复制备用,ca-cert.pem不用保密,可以直接挂在公网上。

在BC服务器上下载本脚本,并且请在同文件夹下放置A服务器上的ca-cert.pem,然后执行

bash ocservauto.sh occ

这里ABC服务器共用了A服务器的验证证书。

想要获取新证书,请在A服务器上执行

bash ocservauto.sh gc

也可以使用该客户端证书登录BC服务器。

如想要吊销证书,请在A服务器上执行

bash ocservauto.sh rc

吊销所有想要吊销的证书。

由于不支持在线吊销证书列表,所以必须还要把A服务器上的/etc/ocserv/crl.pem文件同时复制到BC服务器相同位置,且把ocserv的配置文件中的

#crl = /etc/ocserv/crl.pem

去掉注释,最后重启BC服务器的ocserv。


二,使用步骤

这里以安卓为例,由于是自签证书,需要关掉客户端设置中的“阻止不信任的服务器”。


服务器需要填写的是自己服务器的地址加端口,例如9.9.9.9:999,必须要填写自己的端口

关于客户端的获取,安卓、IOS、WindowsPhone在官方市场可以获取,特殊说明的是WindowsPhone是BETA版,如下

http://www.fanyueciyuan.info/jsxj/wp-anyconnect.html

三,附加说明

1,所有配置文件统一放到了/etc/ocserv/文件夹下,管理脚本为/etc/init.d/ocserv 。自行修改配置后,可以使用下面命令重启服务。

/etc/init.d/ocserv restart

2,该脚本下ocserv的证书逻辑。

a,用户名密码登录

自签CA(证书授权中心),取得ca-cert.pem(不需要保密,类比公钥)和ca-key.pem(需要保密,类比私钥)。

CA签发信任服务器证书,取得server-cert.pem(不需要保密,类比公钥)、server-key.pem(需要保密,类比私钥)。

该模式下,密码库是/etc/ocserv/ocpasswd文件。

如果想使用购买的服务器证书,请参考Nginx服务器证书配置,只需将对应的crt、key 文件重命名为server-cert.pem、server-key.pem,并覆盖到/etc/ocserv/文件夹下面。

b,证书登录

自签CA(证书授权中心),取得ca-cert.pem(不需要保密,类比公钥)和ca-key.pem(需要保密,类比私钥)。

CA签发信任服务器证书,取得server-cert.pem(不需要保密,类比公钥)、server-key.pem(需要保密,类比私钥)。

CA签发信任客户端证书,最终取得username.p12。

这里证书授权中心的ca-cert.pem既当作服务器证书的根证书,也当作客户端证书的验证证书。

由于CA证书当作验证证书,签发客户端证书就需要这个ca-key.pem,可以比同为密码库。

如果想使用购买的服务器证书,请参考Nginx服务器证书配置,只需将对应的crt、key 文件重命名为server-cert.pem、server-key.pem,并覆盖到/etc/ocserv/文件夹下面。

3,改善优化

修改的参数都在/etc/ocserv/ocserv.conf文件中。

a,对于某些移动宽带、长城带宽等,往往经过了很多重NAT,容易出现连接成功但是无法打开网页情况,请改小dpd、mobile-dpd数值。

b,如果vps对于本地延迟甚高,取消注释output-buffer项。

上一篇 : nginx反代 下一篇 : DMM RSS

已有 562 条评论

  1. Mirr0Ch Mirr0Ch

    您好,使用您的一键脚本安装到了0.10.10版本,现在想设置路由表,参考了github上的ocserv-cn-no-route,但是发现要更改src/vpn.h配置文件,但是现在死活找不到文件根目录……所以请问您的一键脚本,把ocserv安装到哪里了……我是小白……

    1. 0.10.6以及之后服务端不再对路由推送有限制。

      1. 支持大于200条IP了吗?

        1. 虽然服务端没有限制了,但是客户端还是200条限制。

          1. Toby Toby

            Android OpenConnect 客户端是不是不支持no-route,我用这里https://github.com/CNMan/ocserv-cn-no-route 的配置文件好像客户端没有生效,变成了全局。最后只好改用暴力40行的route方式https://github.com/rankjie/anyconnect-gfw-list/blob/master/gfwiplist.txt

  2. R R

    博主您好,我们这边的破校园网如果开启udp的话总是连不上连接中断,如果只使用tcp可以正常使用,请问这样有什么影响吗?比如说性能之类,小弟谢过了

  3. lost lost

    博主你好,按照你的方法配置成功了,在手机数据流量下可以连接,且能上网。但是很诡异的是在WiFi下能连接但是不能上网,打不开网站,我们学校是要用drcom来认证上网的,如果用了vpn的话就会和校园网的认证服务器断开,请问有什么办法解决么?能具体解释就好了。。还有,vps上的证书怎么下载到本地电脑上啊。。。。

    1. 请使用onlytcp模式,注释掉udp端口,貌似校园网封锁了udp。
      drcom认证的话,应该有路由客户端。这样电脑上使用vpn的话,就不会冲突了。
      证书的话,简单就是部署个nginx服务器,直接拖回手机。

      1. lost lost

        可是即使不在学校的网络环境下,只要WiFi连接都打不开任何网站(包括国内网站也不行),一直是载入中的状态,但是能连接服务器,只有走移动数据流量才不会出现这种情况。。。我vps的节点应该没有问题,ss是能用的

        1. 服务器降级到0.10.6试试。

  4. Chinos Chinos

    五分钟就弄好了,没有任何问题,非常感谢制作一键包!!

  5. SpiritRain SpiritRain

    我装的默认的0.10.8
    Custom_config_ocserv='y'
    ca_login='y'
    self_signed_ca='y'
    oc_version='0.10.8'
    only_tcp_port='n'
    安卓使用没问题,iOS连不上
    后来降级到0.10.6其他配置不变,iOS就能用了
    请问是iOS对新版本不支持么?以后能升级到更高版本么

    1. SpiritRain SpiritRain

      又装了一次0.10.8版本,iOS使用没问题,好莫名

  6. 怎么更新版本现在是0.10.9,去替换脚本里面的url吗?
    用官方的安装方式覆盖可以吗?

    1. 有平滑升级降级的。
      bash ocservauto.sh ug
      然后会有提示,想到哪个版本输入即可。

  7. mjj mjj

    https://www.stunnel.info/

    这里有centos7 的,可是提示/ocserv-install-script-for-centos7.sh:行4: 未预期的符号 `newline' 附近有语法错误
    ./ocserv-install-script-for-centos7.sh:行4: `'

    1. 嗯,请查阅stunnel博客回复。

  8. mjj mjj

    求centos7脚本

  9. 橙子哥 橙子哥

    Getting info from net... 不动了

    1. 嗯,如果网络情况不是很好的话,需要等时间久一点。

  10. siam siam
    1. 保证一些常用的网站(谷歌等)的访问走代理,其他走国内。

      1. siam siam

        博主 在一键 脚本最后 我选择了 开机自启动 可是重启后还是无法实现自启动 这是哪里出问题了呢?

        1. insserv ocserv
          这个应该可以实现开机自起

  11. AVC AVC

    目前一键搭建起来还是很容易方便。不过有个小问题,能够实现RADIUS认证+证书登录不?自己尝试了一下要么是纯RADIUS认证账号密码,但是每次都要输入账号密码太麻烦;用证书登录又难以控制单用户登陆。有什么好的解决方案?

    1. genius genius

      config可以配置一个用户的登陆数量。
      另外,这货没法商业化的。

    2. 嗯,没用过RADIUS来管理证书登录。不过既然证书登录能够使用证书cn或者uid来确定用户名,应该能够控制用户。

  12. new new

    在自已的VPS上架了,非常好用非常快,就是没找到WINDOWs的客户端。

  13. HShi HShi

    请问 这个和之前装的 vpn兼容吗? vps上之前配过其他的vpn server 需要先卸载吗

    1. 端口 、分配网段不冲突的话,一般没问题。

      1. HShi HShi

        今天测试了手机,发现手机在wifi 状态下连不上。但是用运营商网络可以连,这个是运营商在搞鬼吗

        1. HShi HShi

          看了下log,感觉是 MTU造成的,有修改MTU地方的吗?

          1. 配置文件里面就有这个强制选项。
            ocserv.conf 文件398行

            mtu = 1420

            自己设定。

  14. haffner haffner

    IPv6能获取到地址,能ping6通服务器但不能上网,看起来是服务器没有转发,是不是除了取消注释还要设置ip6tables啊?具体怎么写?

    1. haffner haffner

      知道原因了,思科官网技术文档里面有,iOS和Android版不支持IPv6 public transport。

      1. spacer spacer

        哎,本来还期待着iphone能够访问ipv6地址的,看来是没希望了

    2. haffner haffner

      我设置了ip6tables,发现在Windows下访问v6网站没有问题,但在Android和iOS下依然访问不了,何解?都能正确获取IPv6地址。

  15. chestnut chestnut

    大神,请教一个事情,我自己加了一些 no-route,主要是来过滤内网网段,然后还有5000多条国内网段的路由想加上,但是太多了,怕连接慢,搜了一下好像没有找到anyconnect能像pptp那样,类似/etc/ppp/ip-up的hook,不知道是不是存在这样的hook功能呢?还是说只能让服务端下发no-route了

    1. chestnut chestnut

      试了一下加一部分进conf,好像超过2000条就连接失败了,client端能解决还是最好的

      1. anyconnect客户端顶多200条。多了也不支持。

        1. chestnut chestnut

          好吧,折腾了好一会发现hook需要装ASAM,没找到可信度比较高的,官网又没授权

  16. chao chao

    您好,能否帮忙确认一下问题所在。
    使用您的脚本安装过程很顺利。但是现在问题是anyconnect可以连接,却不能访问其他网站。
    DigitalOcean VPS,San Francisco节点,SS正常,有开锐速。
    已经折腾好几天了都搞不定,不知道问题出在哪里。
    求助。

    1. 嗯,关掉锐速你试试。
      还有,您的锐速额外设置请贴一下。

      1. 找到解決了,打開ocserv後要把銳速重啟一次
        以後要先開ocserv再開銳速

  17. fnlCtrl fnlCtrl

    在Linode上配好了,超顺利,感激不尽!

  18. 蚂蚁 蚂蚁

    您好 博主 除了openvz可用。。XEN KVM都可以用么 谢谢

    1. 前几分钟刚测试,DO上可用

  19. 牛

    我是全文盲.按照这个脚本装在一个VPS上就成了.谢谢.我另外有一个NAT IPv4的VPS(分享IPv4但有IPv6 subnet),不知应该作哪些改变?先谢谢.
    如果我把此教程搬到lowendtalk上,你同意吗?

    1. nat-ipv4话,把端口(tcp和udp)开到你的私有端口上就行,和ss差不多。
      ipv6的话至少/64段才能分配ipv6地址。
      另外,没有独立公网ip的vps很容易封的。
      教程可以随意转载。

  20. AVC AVC

    在Server.xin的机器上安装正常,可以连接,可以ping通外网,dns查询正常,但是无法打开任何网页。同服务器ss正常,这是何故?

    1. 开锐速了么?

      1. akw28888 akw28888

        我測試了一下把NAT網段改成10.10.0.0/24就通了
        原因不明..

      2. akw28888 akw28888

        我現在在ipfog家的VPS也域到這個問題...
        iptables都沒問題但是同樣情況

添加新评论

瓷院搜索
小院分类
留言吐槽
  • wxb:
    在ubuntu上安装就可以!可能是系统问题!
  • wxb:
    安装不了!make: * No rule to make ...
  • 红领巾:
    给你加了个星星
  • 联盟少侠:
    大佬我修改了你得脚本,项目地址在!https://gith...
  • 小白:
    in `/root/ocserv-0.10.8':conf...
历史追溯
热链支持