OpenVPNサーバーPritunlをDockerで動かす

docker

PritunlでVPNサーバーを立てる。

Dockerfileはこんな感じ。

https://hub.docker.com/r/sambaiz/pritunl/

FROM mongo:3.4

# https://docs.pritunl.com/docs/installation
RUN echo 'deb http://repo.pritunl.com/stable/apt jessie main' > /etc/apt/sources.list.d/pritunl.list && \
    apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A && \
    apt-get --assume-yes update && \
    apt-get --assume-yes upgrade && \
    apt-get --assume-yes install pritunl iptables

EXPOSE 80 443 12345/udp

CMD mongod --fork --logpath /data/db/mongod.log && echo 'Setup Key:' `pritunl setup-key` && pritunl start
$ docker run -itd -p 80:80 -p 443:443 -p 12345:12345/udp --privileged sambaiz/pritunl
$ docker logs <id>
...
Setup Key: ***********
...

--privilegedを付けているのはStart Server時にこれで失敗しないように。

CalledProcessError: Command '['sysctl', '-w', 'net.ipv4.ip_forward=1']' returned non-zero exit status 255

httpsでアクセスして、Setup Keyを入力すると初期設定が始まり、ログイン画面になる。 初期パスワードはpritunl/pritunl

あとは、OrganizationとUser、Server(ポートはudpの12345にする)を登録し、ServerにOrganizationを紐付け、 ServerにRouteを追加して、アクセスしたいCIDRを入力したらStart Serverする。 ovpnファイルをダウンロードできる24時間有効のリンクを発行でき、これでクライアントに設定すると RouteにVPNを通してアクセスできるようになる。