docker: OpenVPN DockerFile

OpenVPNとFRRを使って3拠点を接続するネットワークの構築をする。

OpenVPNとFRRはdockerのNWモード=’host’で動作させる。

OpenVPNはdocker hubにあるものを使えばよいが、今回は自作してみる。

FROM alpine:3.12.0
WORKDIR /etc/files/OVPN

Run set -x && \
/bin/sh && \
apk update && \
apk upgrade && \
apk add --no-cache bash && \
apk add --no-cache curl && \
apk add --no-cache vim && \
apk add --no-cache tzdata && \
cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
apk del tzdata && \
apk add --no-cache openvpn && \
mkdir -p /etc/files/CA && \
mkdir -p /etc/files/OVPN/ccd && \
mkdir -p /etc/files/OVPN/log && \
rm -rf /var/cache/apk/*
#
ENTRYPOINT ["/etc/files/OVPN/start.sh"]
CMD ["sleep"]

Dockerfileのbuildを行っておく。

# docker build ./ -t ovpn:alpine_3.12.0r1

docker起動時のstartupスクリプトを作成する。NWmode=’host’で動作させるのでiptables等は記載せず、必要ならホスト側で設定しておく。

# vi start.sh

#!/bin/bash

if [ $1 = "sleep" ]; then
  echo "sleep start"
        while true
        do
          sleep 100
        done
fi

mkdir -p /dev/net
if [ ! -c /dev/net/tun ]; then
        mknod /dev/net/tun c 10 200
        chmod 666 /dev/net/tun
fi

openvpn --config /etc/files/OVPN/config.conf

start.shには実行権限を付与しておく。

# chmod +x start.sh