共通鍵モード


前提


共通鍵モード(static key mode)


共通鍵の作成

openvpn --generate --secret ファイル名

鍵の例

#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
8eba4ec3779817e593b923ed84a5ccc4
(中略)
7325f92de75a5430f9ad94b07f64063e
-----END OpenVPN Static key V1-----

ファイアウォールとIPフォワード

# ファイアウォール
firewall-cmd --permanent --add-service openvpn
firewall-cmd --add-masquerade --permanent

# IPフォワード
sysctl --write net.ipv4.ip_forward=1

サーバ起動

指定オプション

主なデフォルト

dockerのオプション

image=my-openvpn
container=openvpn-server

docker run -dit --name $container --restart=unless-stopped \
  --network host --cap-add=NET_ADMIN --device=/dev/net/tun \
  --mount type=bind,src="$PWD/conf",dst=/etc/openvpn/conf,ro=true \
  --mount type=volume,src=vpn,dst=/var/log/vpn \
  $image \
  openvpn --dev tun --ifconfig 10.1.0.1 10.1.0.2 \
    --secret conf/static.key --cipher AES-256-CBC \
    --user nobody --group nobody \
    --log-append /var/log/vpn/static-office.log --verb 3

ログ

(中略)
Outgoing Static Key Encryption: Cipher 'AES-256-CBC' initialized with 256 bit key

TUN/TAP device tun0 opened

/sbin/ip link set dev tun0 up mtu 1500
/sbin/ip addr add dev tun0 local 10.1.0.1 peer 10.1.0.2

# クライアントから接続されると
Peer Connection Initiated with [AF_INET]クライアントグローバルIP:ポート
Initialization Sequence Completed

起動後のサーバネットワーク変化

ip address show type tun

95: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.1.0.1 peer 10.1.0.2/32 scope global tun0

ip route show

# 中略
10.1.0.2 dev tun0 proto kernel scope link src 10.1.0.1

クライアント起動

指定オプション (サーバと異なる点)

image=my-openvpn
container=openvpn-client
server=example.com

docker run --rm -it --name $container \
  --network host --cap-add=NET_ADMIN --device=/dev/net/tun \
  --mount type=bind,src="$PWD/conf",dst=/etc/openvpn/conf,relabel=shared,ro=true \
  $image \
  openvpn --dev tun --remote $server \
    --ifconfig 10.1.0.2 10.1.0.1 --redirect-gateway def1 \
    --secret conf/static.key --cipher AES-256-CBC --verb 3

起動後のクライアントネットワーク変化

ip address show type tun

21: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none
    inet 10.1.0.2 peer 10.1.0.1/32 scope global tun0

ip route show

0.0.0.0/1 via 10.1.0.1 dev tun0
default via 物理ルータIP dev eno1 proto static metric 100
10.1.0.1 dev tun0 proto kernel scope link src 10.1.0.2
128.0.0.0/1 via 10.1.0.1 dev tun0
サーバグローバルIP via 物理ルータIP dev 物理デバイス
# 中略