docker: OpenVPN Client
OpenVPNのクライアント側を設定する。
サーバ同様にdocker-compose.yamlで証明書やOpenVPNのconfigをコンテナに配置する。
version: '2.3'
services:
ovpnclientb:
image: ovpn:alpine_3.12.0_r1
container_name: ovpnclientb
init: true
cap_add:
- NET_ADMIN
cap_drop:
- chown
- dac_override
- fowner
- sys_chroot
- audit_write
- setfcap
- fsetid
working_dir: /etc/files/OVPN
network_mode: "host"
command: RUN
restart: unless-stopped
volumes:
- "./files/clientb/ca.crt:/etc/files/OVPN/ca.crt"
- "./files/clientb/clientB.crt:/etc/files/OVPN/client.crt"
- "./files/clientb/clientB.key:/etc/files/OVPN/client.key"
- "./files/clientb/ta.key:/etc/files/OVPN/ta.key"
- "./files/clientb/clientB.conf:/etc/files/OVPN/config.conf"
- "./files/clientb/log:/etc/files/OVPN/log"
- "./files/clientb/start.sh:/etc/files/OVPN/start.sh"
OpenVPNのconfigサンプルは次。fragment含め、諸所の設定はサーバに合わせる。サーバ側はIPv4とIPv6のどちらを使っても接続可能にしているので、今回はv6アドレスで指定しておく。
# cat clientB.conf
status /etc/files/OVPN/log/status.txt 5
status-version 2
log /etc/files/OVPN/log/openvpn.log
verb 3
proto udp6
remote aaaa:bbbb:cccc:dddd:eeee:ffff:1111:2222 1194
client
dev tun11
float
cipher AES-256-GCM
ncp-ciphers AES-256-GCM
auth SHA256
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
ca /etc/files/OVPN/ca.crt
cert /etc/files/OVPN/client.crt
key /etc/files/OVPN/client.key
tls-crypt /etc/files/OVPN/ta.key
ecdh-curve secp521r1
keepalive 5 30
fragment 1432
mssfix
サーバ側も同じであるが、logファイルが残るようになっているので適宜ホスト側でクリーンアップやローテートを行うと良い。