用于初始化 ocserv 的 Dockfile 脚本
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 1 commit ahead, 49 commits behind wppurking:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin
certs
ocserv
Dockerfile
README.md
changelog

README.md

用途

因为安装一个 Open Connect 的步骤实在太麻烦了, 特别对于新手, 所以特意参考了 jpetazzo 的 dockvpn 弄了一个 ocserv 的. 此项目的原因和一点点介绍可见 使用 ocserv-docker 享受自由网络

有啥问题可以直接 @wyatt_pan

简单部署

安装好 Docker 1.0+ 并且正常启动 Docker 后:

  • cd ~;git clone https://github.com/wppurking/ocserv-docker.git : 将当前 repo 下载, 拥有可调整的 ocserv.conf 配置文件以及 ocpasswd 用户密码文件
  • docker run -d --privileged -v ~/ocserv-docker/ocserv:/etc/ocserv -p 443:443/tcp wppurking/ocserv : Box 自动下载. ocserv 的一些功能需要 Docker 在 privileged 权限下处理
  • docker ps -aq | xargs docker logs : 查看运行日志, 检查是否正常运行(可重复执行).
listening (TCP) on 0.0.0.0:443...
listening (TCP) on [::]:443...
listening (UDP) on 0.0.0.0:443...
listening (UDP) on [::]:443...

使用

  • 初始化好的两个账户: wyatt:616 holly:525
  • 如果主服务器上开启了 iptables, 一定要记得将 443 端口的 tcp 与 udp 都开放
  • 已经做了其能够处理的下发路由数量 (ocserv.conf 中, 感谢: kevinzhow 的 route.ship_cook.rb )
  • 接下来 就是 AnyConnect 的客户端了. Win, Mac, Linux Link1 (Cisco 官方需要注册...), iOS, Android
  • 因为我们自己生成的 CA 证书是没有权威组织认证的, 所以 AnyConnect 需要接受这些 "不信任的 VPN" :P

自定义证书, 密钥

因为是构建一个独立的 box 进行分发, 方便快速部署一个 ocserv, 所以将证书, 密钥, 用户都集成在里面了, 此刻方便使用. 如果对于有担心的, 可以 docker run -t -i wppurking/ocserv bash 进入到 box 中使用 certtool 重新进行处理, 具体操作步骤参考 [原创]linode vps debian7.5安装配置ocserv(OpenConnect server)

证书是在 Docker Build 的过程中自动生成的, 其生成的目的地为 /opt/certs 成功更换 certs 的例子

用户名

为了使新手能够最快的使用上 AnyConnect (也方便我自己同一设备能方便的链接多个不同地域的 VPS) 我预先设置了两个初始化的账号密码, 但同时将用于提供账号密码的 ocserv/ocpasswd 文件放在 Box 外面, 运行 Container 时使用 Volume 挂在进去, 这样方便熟悉 Docker 的用户能够方便的 使用 ocpasswd 命令修改或者重新生成自己的用户密码.

提供一个非常简单的更换密码操作, 复制命令就好了(建立在按照上面的操作基础上哈):

新添加用户

$> docker exec -it $(docker ps -a | grep vpn_run | awk '{print $1}') ocpasswd yourname
$> Enter password:
$> Re-enter password:

这个的原理是借用 docker 运行中的 container , 在其里面运行 ocpasswd 改变 Volumn 进去的 ./ocserv/ocpasswd 文件内容, 所以当你运行完这行命令, 本机(非 container 中)的 ./ocserv/ocpasswd 的文件内容会真实发生变化

清理掉预设的两个用户名

直接打开 ./ocserv/ocpasswd 删掉 wyatt/holly 开头的两行就好了.

信息

  • Box Size: 164 MB (原来是 380+ MB, 基础镜像缩减)
  • 基础 Box: ubuntu:trusty
  • 测试过的环境:
    • [Linode 1G Ubuntu 14.04 LTS]
    • [Vultr 768MB Ubuntu 14.04 LTS]
    • [DigitalOcean 512MB Docker 1.2.0 on Ubuntu 14.04]

Refs

问题

  • 大家最近连接上 ocserv 就断开, 我猜测因为有比较多的人使用同一个 Docker Image 使得太多人使用同一个证书, 然后我做了处理, 至少我的几台服务器已经正常, 不会断开了. 请大家 docker rmi wppurking/ocserv 然后再执行运行的命令下载最新的 image, 如果有条件自己 build 以下或者使用自己的证书即可.