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

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

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

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

已有 570 条评论

  1. oy0 oy0

    手机端挂OC VPN,过一段时间后网速就可能会变得很慢。
    用App(如FB)也是,速度很慢,同时网速也很慢。
    用YouTube App看片,总是看几分钟就没网速了。

  2. Steve Steve

    好文章。使用默认配置轻松安装了。正常使用。谢谢。

  3. AVC AVC

    debian通过testing源更新了系统到最新版本,安装提示系统太老或未通过测试...

    1. test源里面直接有ocserv的deb包了,没必要编译了。

      1. oy0 oy0

        但是在Debian把ocserv加入Stable前,直接安装ocserv deb包会很麻烦。

      2. AVC AVC

        可否做个适配,跳过编译就装软件包然后弄上启动脚本

  4. oy0 oy0

    果然,把UDP用#註釋掉後,就算用手機也快了很多!
    用戶Cert必須有UID才可以,其實如果用ossl製作cert的話也就是在openssl的設定檔案(/etc/ssl/openssl.cnf)中加入UID就可以了。

  5. SK SK

    hello,
    我在DO搭建以后,无法打开网站,ping却是正常的。
    系统的resolv.conf配置文件是正确的。
    ocserv配置文件替换其他VPS下也不行。SS正常。
    dpd、mobile-dpd、output-buffer都改了。
    单TCP协议也试过了。

    1. SK SK

      我系统是debian 7.9 X64

      1. iiEys iiEys

        我评论里有关防火墙的尝试试过了么=w=

        1. SK SK

          这个我查了一下防火墙状态,
          默认都没有启动。也没有服务。
          iptables: unrecognized service

          1. oy0 oy0

            UFW或者FIREWALLD

  6. iiEys iiEys

    博主你好,我在ubuntu14.04下,只安装了锐速和ocserv,可是anyconnect连上后无法访问网页,但是PING可以PING通。尝试了修服务端DNS、ocserv配置文件的DNS、开放对应端口都不行。然而我在另一个服务商下的VPS同样操作却一切正常。这可能是什么原因呢?

    1. oy0 oy0

      就是因為ubuntu ufw的問題。Uninstall掉UFW就好了。

    2. iiEys iiEys

      ubuntu14.04下设置了ufw allow http 网页就正常了,但是我之前在iptables全端口都开放了,真奇怪,而且有款游戏的登录器还是始终打不开,最后换DEBIAN7就都正常了。

      1. iiEys iiEys

        啊啊啊啊,我来把坑填了,前面说的都不算数!
        我把UDP端口注释掉才是真的正常了,看来我这UDP被封锁了?没注释掉前尝试各种方法都是不定时抽风+速度超慢。

  7. spring spring

    感谢楼主,一键脚本非常方便,用户名和密码可以连接 上网。

    1. spring spring

      但是配置证书登录,始终出现问题,可以的话,还请抽空告之下解决方案。错误信息和日志见链接:
      https://docs.google.com/document/d/1xAkoxsYzfZ6_B58Gjox8_3cle6o5wjdh5pqymdHXrY4/edit?usp=sharing

      1. spring spring

        又折腾了一番,看起来好了,在电脑上证书要导入到当前用户的个人证书中,手机上用同一个证书提示所有操作终止,debug只显示找不到证书,又新建一个证书导入手机,终于可以连接了。也不知道是不是正确操作,反正好用了。
        再次感谢楼主的付出!!

  8. oy0 oy0

    如何让OCSERV VPN支持网上邻居、局域网游戏类的应用?

  9. oy0 oy0

    用手机连VPN 总是刚连上时有较快的网速,但没多久网速就降到20K/s了。

  10. oy0 oy0

    电脑连上无问题,最快300K/s
    手机连上后速度很慢,只有40K/s,而且不稳定。

  11. 憐炎佳佳 憐炎佳佳

    求教為什麼安卓使用anyconnect客戶端 提示無法應用系統配置 將不會建立VPN 電腦上一切正常

    1. zb zb

      因为你没有勾选那个 我信任此链接

  12. whyou whyou

    安装之后不会自启动,如何加入自启动?请博主给一下命令,谢谢。

  13. 小白菜 小白菜

    make[2] : Leaving directory '/root/ocserv-0.10.6/tests'
    make[1] : 同上
    make[1] : Entering directory '/root/ocserv-0.10.6'
    make[1] : Notning to be done for 'clean-am'.

  14. danili danili

    请问这个脚本是包含服务器上防火墙的吗?我配置完之后能够成功连接上,但是没有网络的访问。只发送数据包并不接受数据包。然后iptables上面好像也没有将tcp 999和udp 1999列入进来。
    我在使用debug的时候发现,连上去之后直接disconnected了,不知道怎么回事。楼主能否回答我一下。

    1. lkjasdf lkjasdf

      检查一下iptables配置
      原有的条目可能会阻止流量被转发
      检查forward链里有没有REJECT相关的条目
      如果有删除再连接VPN测试
      我是这样解决的

    2. danili danili

      你好,看到tcp 999和udp 1999是已经加入到iptables的了,而且已经设置好了net.ipv4.ip_forward=1,但是不知道为毛还是能连上没有任何流量。

  15. ak ak

    这个可以弄个网站及MySQL的管理?
    如果可以教程在那?

  16. tyhunter tyhunter

    LZ,用了你的脚本,安装成功并可以连上了,但是没办法打开任何网站(DNS没法解析),在配置文件里将8.8.8.8换成了OpenDNS,还是无法打开任何网站,求解

    1. 请注释掉/etc/ocserv/ocserv.conf文件315行处的

      cookie-rekey-time = 259200
  17. Dan Dan

    bash ocservauto.sh occ

    ERROR: Ocserv has been installed.
    Root ok
    Debian-based ok
    TUN/TAP ok

    请问有卸载的命令吗?

    1. rm /usr/sbin/ocserv
      rm -r /etc/ocserv
      即可

  18. Dan Dan

    请问 可以输出Log到 /var/log吗?怎么修改?谢谢

    1. 请参考下面启动脚本 加入日志项目
      https://gist.github.com/bolasblack/9f53b048e46f538cf08d

      1. mike mike

        能否告知这段代码如何执行,小白想学习,谢谢。

        1. Dan Dan

          你对比一下 加到
          /etc/init.d/ocserv

          1. mike mike

            谢谢!折腾了一晚上,还是失败了,哈哈 不过还是很感谢

  19. 呐呐 呐呐

    [ libgnutls28-dev ] not be installed!
    出现这个应该如何解决?

    1. 您的系统发行版本什么?

      1. 呐呐 呐呐

        Jessie, 后来自己更新别的包解决了
        另外iptables规则应该如何还原呐?

        1. 执行一下在/etc/ocserv/中的ocserv-down.sh。
          stop掉ocserv后,会自动消除掉关于ocserv的iptables项目。

  20. whyou whyou

    你好博主,我又来了。升级到0.11.0版本,提示缺乏libev4,升级失败怎么办?我是菜鸟,求完整攻略。

    1. 输入命令
      apt-get update && apt-get install libev-dev liboath-dev -y

      1. whyou whyou

        DEBIAN7全新安装0.11.0失败,UG更新失败,apt-get update && apt-get install libev-dev liboath-dev -y
        安装之后重装失败。忧伤,hostus香港256mb主机,不知道什么情况了。

        1. 看了一下,debian7下,ocserv 0.11.0有无法使用它自带的protobuf-c库的bug。请使用debian8或者等下个ocserv版本。

          1. whyou whyou

            debian7升级到debian8,使用UG模式升级0.11.0失败。

            1. oy0 oy0

              Debian 32位的不可以。

            2. 跨版本升级debian真心不建议。

          2. whyou whyou

            谢谢博主热心解答。

      2. whyou whyou

        非常感谢!!!!

        1. whyou whyou

          安装插件成功,但是平滑升级0.11.0还是提示失败了。

添加新评论