您的位置: 首页 » 翻越奥义 » 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,072

该脚本在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. lumanz lumanz

    博主,半瓦工之前用着挺好 怎么突然就不能用了.显示连接成功但就是上不了网,重装系统和oc也这样
    debug看到user logged in然后马上就是user disconnected.
    dpd已经改到很小了

    1. Will Will

      是的,我这搬瓦工也是如此,dubug 也一样,换了不同版本的deibian和ubuntu系统重装后还是一样。

    2. debug看到disconnected,是ocserv本身验证机制的问题,正常情况下也会如此一番。

  2. heihei heihei

    你好,这个脚本很好用,非常感谢辛苦制作。
    但是 iphone (ios9.1)链接上以后,在详细信息里显示
    协议DTLS
    密码 RSA_AES_128_SHA1
    为什么不是AES256呢?

    1. dtls(udp协议)Anyconnect就支持这个。
      只用tcp能够aes256

  3. tsuki tsuki

    同一台服务器同一个手机同一个网络,anyconnect慢成狗,ss720p无压力是什么原因……改dpd outbuffer 都试过了。

    1. Anyconnect效率本身不如ss;直接开了锐速之类情况下,速度反而会下降厉害。

      1. tsuki tsuki

        之前是vultr的东京机房,现在换了个日本本地服务商的服务器,同样的ping但anyconnect勉强可用,配置相同不知道还能怎么优化,华为渣手机不支持SS伤不起。

        1. 华为手机肯定支持ss的。先弄上谷歌play商店,然后挂Anyconnect用下fqrouter2即可。

  4. whyou whyou

    conf文件直接加入 no-route @国内IP,可以实现分拆排除,但是总感觉跑的不够流畅,求大侠继续优化conf文件。

    1. xin xin

      确实不够流畅,但是有总比没有好

  5. wang wang

    问下现在能支持证书登录吗?

  6. afage afage

    p12证书怎么签名?导入到iphone显示未签名

  7. xin xin

    奇怪了...我安装没问题没有,ios和windows上面可以用,安卓和MAC上面连接不上了,安卓是在搜狗应用市场下载的 版本号4.0.01381,亲。。。。咋回事啊

    1. 安装使用openconnect试试。

  8. 感谢~ Ubuntu15.04运行成功~

    1. 博主,我想问一下你的iptables备份文件保存在哪里,我有一些自己的规则想增加,可是重启就没了

      1. 文件在/etc/ocserv/ocserv-up.sh。ocserv开启时,运行脚本,添加iptables规则。ocserv关闭时运行ocserv-down。自动清空相关iptables。

  9. Feng Feng

    您好,非常感谢您的脚本,我安装成功,但是使用时发现一些问题,我是新手,只懂一些Linux的基本命令,所以请教下,希望能得到您的回复,问题如下:
    使用时,有时候正常,网速也很好,但是有时候能连接上,但是却不能上网(该情况非常多),但是我使用Shadowsocks确实正常的,请问有解决方法吗?谢谢了!

    1. Feng Feng

      改小dpd、mobile-dpd数值貌似有点效果。

  10. jenkins jenkins

    不能自启是什么原因?每次重启vps服务无法连接,执行/etc/init.d/ocserv restart后就好了

    1. 您的系统是啥?
      没有使用systemd系统用的是insserv管理开机自起的
      可以试试
      insserv ocserv
      来开机自起。

      1. jenkins jenkins

        执行update-rc.d ocserv defaults命令后可以了

      2. jenkins jenkins

        不大理解你的意思,能说的明白点么?新手

      3. jenkins jenkins

        debian 7的系统,貌似就是不能自启,需要手动执行/etc/init.d/ocserv start等命令后,客户端才能连上

        1. 把你这句话添加到:/etc/rc.local 就能开机自启了

  11. rex rex

    我使用脚本在deibian 7。03上出现如下错误:checking whether build environment is sane... Fail...,貌似编译环境有问题,因为本人小白求楼主指导

    1. ocinstall.log 里面有详细的错误日志。

      1. rex rex

        清空又用GITHUB上脚本装,然后卡在
        autogen guile-1.8-libs libgmp10 libltdl7 libopts25 libopts25-dev
        半个小时了还没动,挂了SS全局重新来过还不行

        1. 服务器上挂ss?请问您想把ocserv服务器放在大陆以内么?

          1. rex rex

            不是啊,一直装不上,我怕是不是源文件在国外下载不下来,就挂了SS,想想应该不是这个问题

      2. rex rex

        在前日志都显示OK,没有错误提示,直到98%出现这个提示,就FAIL了,前一句checking for a BSD-compatible install... /usr/bin/install -c 有问题吗?

        1. lsb_release -r
          看看你的版本号是不是到了7.9。
          还有您要安装的ocserv是哪个版本?0.10.9么?

          1. rex rex

            版本号为7.9无误

          2. rex rex

            能装上就好,我看现在下载的是0.10.8,然而装不上

            1. 嗯 请把您的错误日志ocinstall去掉敏感信息后发我的gmail,我详细看看吧。

              1. liyangyijie Gmail 就是这个邮箱。

              2. rex rex

                没有找到你的mail地址,呜呜

  12. 路人 路人

    求问怎么支持ipv6连接,教育网用户

    1. 建议使用0.10.9版本,修复了一个ipv6的错误。服务器ipv6需要提供/64段。
      配置文件ocserv.conf,修改ipv6-network到自己的。
      ocserv-up.sh,取消注释net.ipv6.conf.all.forwarding。

      1. 路人 路人

        ping值很高,有500+ms,要改什么呢?

  13. Matthew Matthew

    搬瓦工成功。。2分钟~

  14. AVC AVC

    单网卡,HostWithLinux的机器,ubuntu 14.04 x64
    另有双网卡均公网IP,另eth0:0的方式绑定了3个ip也判断失败。
    Chain POSTROUTING

    0 0 MASQUERADE all -- * * 192.168.10.0/24 !192.168.10.0/24
    1. 这个是探测主ip的,想用其他附属ip自己填写即可。

      1. AVC AVC

        主要是这个感叹号是怎么来的?

        1. 允许内网用户交流。

  15. O2 O2

    博主的每次ocserv跟新内容都是哪里看的呢?
    顺便能不能问一下怎么设置长时间连上不用,取消自动切断vpn呢?

    1. 官网看更新内容,不过最近官网挂了。
      可以去gitlab直接看看
      https://gitlab.com/ocserv/ocserv/blob/master/NEWS

      1. O2 O2

        官网好了,能否给个网址呢?

        1. 这个就是官网的更新日志。它开发环境迁移到了gitlab了。

  16. feifeibe33 feifeibe33

    这个真是太棒了!!!在虚拟机Ubuntu15.04上安装成功,使用cisco的客户端连接成功。试问下有没有centos的一键脚本?

    1. 谷歌一下centos就有的。。

  17. 小白 小白

    Connecting to ftp.infradead.org (ftp.infradead.org)|2001:770:15f::2|:21... failed: Connection timed out.

    请问怎么解决??

    1. 小白 小白

      请问如何跳过这个执行下一个命令你?

      1. 额源码包都提取不到,没办法下一步吧。。
        还是更新脚本吧。

    2. ocserv的官网挂了,重新下载脚本吧。
      新脚本会判断如果无法连接到官网,会从github上下载0.10.8版本。
      https://github.com/fanyueciyuan/ocserv-backup

  18. 在下载这个包的时候出错了 这个下载地址是不是不对 我改成0.10.6也不行
    --2015-09-25 03:06:10-- ftp://ftp.infradead.org/pub/ocserv/ocserv-0.10.7.tar.xz
    (ftp.infradead.org)|85.118.1.10|:21... failed: Connection timed out.

    1. 我在这下载到0.10.7的包 也部署好了 不知道有没有人有原版的帮我校验一下文件 osdir.com/ml/scm-fedora-commits/2015-08/msg03719.html

      1. git.infradead.org/ocserv.git/tags能找到相应版本镜像包。
        解压包后需要额外执行autoreconf -fvi。

        1. 没找到下载链接 我用git clone 也无法下载 请问所谓的镜像包在哪里下载?

          1. 每个版本后面有个commit,点进去里面都有snapshot,快照就是下载地址。

            1. 看到了 之前有点着急没看到后面的 谢啦

  19. Sedny Sedny

    www.infradead.org/ocserv/的官网挂了,一直在重试,我从gitlab.com/ocserv/ocserv这里有源码build了一个,博主需要更新下脚本........
    .........评论内容中包含敏感词汇.......这个。。。。

    1. mike mike

      sendy有更新好的脚本么,小白还是喜欢有更新好的脚本哈哈

    2. 别带http头,会被视为广告的。那个gitlab是开发版的,还是应该采取发行版好点。挂的时间有点久-_-||

      1. mike mike

        可以临时改一下脚本 我觉得部署起来好一点 哈哈

  20. xthc xthc

    infradead.org不能加载,安装不能完成,请问怎么办,谢谢

添加新评论

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