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

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

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

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

已有 523 条评论

  1. zwisus zwisus

    用国外VPS 每次都能成功。
    用国内VPS 能脸上,但是马上显示 DTLS handshake timeout,不会显示通GNUTLS.

  2. Royce Royce

    谢谢博主的分享, 我在WIN7系统上用着还可以, 好像不会断线, 这个应该是全局代理吧 ? 相比较PPTP安全性会不会高些?

    1. PPTP的安全性不这个差远了!

  3. gky gky

    非常感谢博主的脚本。我在服务器上部署了openconnect以后,手机连接很正常,但是在电脑上连接,每次send/got dtls dpd 以后就会自动掉线,虽然软件里仍然显示是连接状态,而且网络与共享中心里也显示是有网络接入的

    1. gky gky

      写错了,是send/got CSTP DPD

  4. Hunter Hunter

    我选择使用自定义设置,并使用证书登陆,但在手机上尝试连接不上,超时。
    用自动安装能连接。但我想用证书登陆,毕竟比较无脑,不用输入密码。

  5. [...]这里有一个自动部署的脚本,应该是写的很详细的。[...]

  6. [...]原贴地址:https://www.fanyueciyuan.info/fq/ocserv-debian.html[...]

  7. SK SK

    你好!
    请问一下怎么卸载?
    之前看评论说好像rm /etc/ocserv,还差一个命令。
    我翻了半天再也没用看到那条评论了。。

    1. rm -rf /etc/ocserv
      rm -rf /usr/sbin/ocserv
      rm -rf /etc/init.d/ocserv
      rm -rf /usr/bin/occtl
      rm -rf /usr/bin/ocpasswd
      如上所示

      1. SK SK

        谢谢~po主最好添加到正文里,我看很多人也在问。
        而且最后一段加一条,“如果可以连接,打不开任何网页,可以尝试关闭锐速。”

  8. O(∩_∩)O谢谢亲测v4v6都没问题
    想请教一下,如何使得服务器出口仍支持v6呢?谢谢

  9. smounives smounives

    如何彻底卸载 ocserv?

  10. sky sky

    请教大佬,freeradius认证如何设置啊?弄了半天都不行T_T

  11. lon lon

    可以正常连接,但无网络
    iptables --list
    accept all anywhere 192.168.10.0/24 ...
    accept all 192.168.10.0/24 anywhere ...
    请问是这个问题么,要怎么改呢

  12. AVC AVC

    能否加一个自动应答文件的选项...服务器较多的时候一个个部署填写配置还容易错的..

    1. 其实是有的,脚本同文件夹下放个vars_ocservauto文件,里面写上你想自动的参数和值。
      https://raw.githubusercontent.com/fanyueciyuan/eazy-for-ss/master/ocservauto/vars_ocservauto

      bash ocservauto.sh fm

  13. PENG LI PENG LI

    楼主可以留下联系方式吗?证书不会制作,本人小白一枚

  14. PENG LI PENG LI

    谢谢楼主!

  15. 小明 小明

    分配的ip是内网ip192.10.上不了网,求解

  16. wohaoa wohaoa

    楼主你好,我想在公司server搭建一个ocserv,然后我想用anyconnect在家访问公司server这是可行的么?因为搜索网络都是搭建vps的

    1. 脚本目的是通过ocserv接同国外vps来访问国外网络。
      如果只是用来访问公司的服务器的话,修改下iptables。

      1. wohaoa wohaoa

        楼主,我按如下修改 iptables。

        # 打开 TCP 和 UDP 端口
        iptables -t filter -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
        iptables -t filter -A INPUT -p udp -m udp --dport 443 -j ACCEPT
        # 客户端隔离

        1. wohaoa wohaoa

          iptables -t filter -A FORWARD -s 192.168.69.0/24 -d 192.168.69.0/24 -j DROP
          # 允许转发 VPN 子网的包
          iptables -t filter -A FORWARD -d 192.168.69.0/24 -j ACCEPT

          1. wohaoa wohaoa

            iptables -t filter -A FORWARD -s 192.168.69.0/24 -d 192.168.69.0/24 -j DROP
            # 允许转发 VPN 子网的包
            iptables -t filter -A FORWARD -d 192.168.69.0/24 -j ACCEPT

            1. wohaoa wohaoa

              我这样配置完iptable 后用anyconnect客户端链接,显示:Could not connect to server.Please verify Internet connectivity and server address.
              我打开/etc/init.d/ocserv debug也没有任何debug信息显示。一直是下面这么多log

              1. 如果您想通过公司网络访问外部网络的话,没有必要修改iptables。
                只需要把/etc/ocserv/ocserv.conf 中的端口修改为您需要的端口即可。

              2. wohaoa wohaoa

                哈@iking-VirtualBox:~$ sudo ocserv -c /etc/ocserv/ocserv.conf -f -d 1
                Setting 'plain' as primary authentication method
                listening (TCP) on 0.0.0.0:443...
                listening (TCP) on [::]:443...

  17. Eav Eav

    谢谢大神的一键脚本,服务端我安装的是0.11.2版本,TCP和UDP都开启了。
    客户端用的是AnyConnect Secure Mobility Client,但是有时连接上去传输数据用的是TCP,速度很慢。
    手动断开几次后重新连接有时就变成UDP传输数据,这时速度很快。
    想请教一下各位大神有什么办法可以让数据传输默认用UDP而非TCP吗?需要作何修改?

    1. Eav Eav

      我这边的ISP对国际出口的TCP连接做了QoS限速,所以要用UDP速度才够快。
      我发现客户端传输数据有时用的是TCP,有时用的是UDP

      1. R R

        当udp连不上的时候anyconnect会自动选择tcp
        如果需要手动选择,换客户端

  18. neoforever neoforever

    博主好!十分感谢博主提供的一键安装脚本,方便了我这个linux菜鸟。
    现在想请教下,如果我使用startssl提供的服务器证书,该如何设置呢?
    我按照博主下方的说明改了一下,总是出错。然后服务器无法启动。能否提供详细的解答呢?感谢!

    1. 参考这个签一份服务器证书https://is.gd/oI7AEO
      对应的证书、密钥文件重命名为server-cert.pem、server-key.pem,并覆盖到/etc/ocserv/文件夹下面

      1. neoforever neoforever

        十分感谢!我昨天也是按照那个方法做的,结果oc服务器启动不了。又折腾几遍,发现了一个问题:我的startssl证书搞错了……重新弄了一下,可以用了!以前做的自签名证书还能登录。还有一个问题:我这样还可以在服务器上制作新的登录证书和注销登录证书吗?

        1. 登陆用证书只和ca-cert.pem挂钩,与服务器证书没有必然联系。

  19. os os

    安装完成后手机连接出现这个提示:

    安全网关已拒绝所尝试的连接操作,需要尝试与同一或其他安全网关建立新连接,新连接要求重新进行身份验证。

  20. 112 112

    安装成功了,但是链接不上啊

添加新评论

瓷院搜索
小院分类
留言吐槽
  • worldlink:
    PPTP的安全性不这个差远了!
  • locyoo:
    用了BBR更换内核以后,感觉比kcptun要快,满速
  • zwisus:
    用国外VPS 每次都能成功。 用国内VPS 能脸上,但是...
  • jzp820927:
    诡异的很,之前也是这样运行的,一直报类似下面这样的错误,刚...
  • jzp820927:
    不知道你运行的完整命令是什么? 证书的公钥是不是 ful...
历史追溯
热链支持