DockerでSoftetherを動かす
SoftetherVPNはOSSのVPNソフトウェアだ。
WindowsやLinuxにインストールして使うが、Dockerで動かす例が少なかった。
SoftetherはL2VPNを提供するアプリケーションであるが、Dockerは動作ホスト内で仮想ネットワークを形成する。
このため、Dockerコンテナでの動作と相性が良くない。
しかし、Dockerのネットワークドライバをhostsにすることで動いたので手順をまとめる。
Softetherが動作するdocker-compose.yml
SoftetherをDockerで動作させるために必要なこと
SoftetherでVPNサーバ機能を使うためには基本的にはローカルブリッジ機能が必要になる。
Dockerで標準状態でSoftetherコンテナを動作させるとDockerホストが持つIP帯ではなく、内部仮想ネットワークの172.17.0.0/24
等がコンテナに割り当たるはずだ。
このLANをL2VPNの接続先として公開することはできるが、やりたいのはDockerホストのNICが所属するLANだ。
このためDockerホストのNICが所属するLANにコンテナが接続できる必要があり、Dockerのネットワークドライバのhostを利用する。
これにより、コンテナはDockerホストのNICを介してネットワーク接続が可能だ。
以下のdocker-compose.ymlを動作されればとりあえずSoftetherが動作する。
version: "3" services: app: image: siomiz/softethervpn #environment: #- USERS=user1:password1;user2:password2 #- PSK=test #- HPW=test volumes: - ./vpn_server.config:/usr/vpnserver/vpn_server.config:z cap_add: - NET_ADMIN network_mode: "host" privileged: true ports: - 500:500/udp - 4500:4500/udp - 1701:1701/tcp - 1194:1194/udp - 5555:5555/tcp
ports
で各softetherのポートを指定しているが、host
ネットワークに割り当てているので、不要かもしれない。
この設定で起動したSoftetherコンテナはDockerホストのローカルブリッジが動作する。