Ubuntu
Container
VPN 鯖が逝った
10 年以上稼働していた WindowsServer 2012 R2 がハードウェア障害でおなくなりになったので、ちょうどいいし Linux で構築してみるか〜、で調べているが全然うまくいかない。
まず VPN なんて存在を VM でやろうとするな、とお叱りを受けそうな環境で作っているのが問題かもしれないが、Windows だと GUI が強力なのでなんか動く所まで持っていけるんだよなあ。
Linux (macOS) だと Manager が ARM 向けに用意されていなかったり、インストールは CLI だけど仮想デバイス作成は GUI (前述の Manager) でやれ、みたいな設計だったり、 HTML5 形式の管理ツールが未整備、という所もあって色々試している。
ルーターが RTX1200 なのでそこでやったらええやん、という感じだったんだけど、法人向けの NURO を使っているのでなんかコンフィグが動かない、という感じで Copilot に聞いても無効なコンフィグ出してくるしでどうしようもない、という所になっている。
は〜まったく。
追記: 2025/08/19
色々あってうまく行かなかったがローカルでは動いた、というトコまで記載する。
あとはルーターのポートを開放すれば動くと思われるが、その作業が必要なら僕は Wireguard と Wg-Web-Gen を使います……。
前置き
vpncmd 内部でのテストには合格するので RockyLinux9 に Docker でインストールしたるか! とがんばっていた。 結果として、ローカル同士での接続なら成功するが、グローバルから接続しようとするとルーター部分で防がれて失敗する。
nmap -Pn -p 443,992,5555 ${グローバル IP アドレス} のようにするといずれのポートも閉じているので、ルーターのポート開放が必要か〜、となり、そういうことがしたくないというのが Softether を選択 (運用) しているモチベーションなので、ポート開放頑張るとか開放した後の監視とかセキュリティ、などを考えると、 Wireguard とかもっとほかの選択肢、となるので積極的に採用する必要はないな、となってしまった。
一応後続のために手順などを残しておく。
nmap
ローカルネットワーク同士で nmap
これは通る、対象の SoftetherVPN サーバーが適切に設定できている。
❯ nmap -Pn -p 443,992,5555 192.0.2.1 Starting Nmap 7.97 ( https://nmap.org ) at 2025-08-19 15:10 +0900 Nmap scan report for 192.0.2.1 Host is up (0.0031s latency). PORT STATE SERVICE 443/tcp open https 992/tcp open telnets 5555/tcp open freeciv Nmap done: 1 IP address (1 host up) scanned in 0.53 seconds
グローバル経由での nmap
これが通らない。 ネットワーク先頭に YAMAHA ルーター (クソ古く、 IP 電話を兼ねているので設定変更してくれるな、と言われている) が存在しており、その箇所で破棄されている。
❯ nmap -Pn -p 443,992,5555 example.com Starting Nmap 7.97 ( https://nmap.org ) at 2025-08-19 15:14 +0900 Nmap scan report for example.com (203.0.113.1) Host is up (0.00077s latency). PORT STATE SERVICE 443/tcp closed https 992/tcp closed telnets 5555/tcp closed freeciv Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds
作業手順
公式だと Ubuntu を推奨しているが、インストール後に vpncmd > 3 (を選択) > check と投げてすべて pass していれば別にどんなディストリでも構わないはず。 公式で Ubuntu を推奨しているのは LTS が明確に設定されているディストリなのと、 apt インストールするパッケージ名を固定で書くため、程度だと思われる。
- SELinux は事前に permissive にしておく
- cockpit 上で作成した VM でやる場合、 vCPU 1, RAM 2GB くらいでも大丈夫
- RAM 4GB くらいあった方が現代では安心だけど、アクティブに使うわけではなければめっちゃ大量に swap 積めば誤魔化せそう
- L2TP over IPsec 想定
mkdir softether;cd $_ vi docker-compose.vpnclient.yaml sudo firewall-cmd --add-port=443/tcp --zone=public --permanent sudo firewall-cmd --add-port=992/tcp --zone=public --permanent sudo firewall-cmd --add-port=1194/tcp --zone=public --permanent sudo firewall-cmd --add-port=5555/tcp --zone=public --permanent sudo firewall-cmd --add-port=500/udp --zone=public --permanent sudo firewall-cmd --add-port=4500/udp --zone=public --permanent sudo firewall-cmd --add-port=1701/udp --zone=public --permanent sudo systemctl start docker sudo systemctl enable docker sudo docker compose -f docker-compose.vpnclient.yaml up [+] Running 7/7 ✔ softether Pulled 5.3s ✔ 9824c27679d3 Pull complete 0.9s ✔ cf7724c41822 Pull complete 1.0s ✔ 4f4fb700ef54 Pull complete 1.0s ✔ d73516013432 Pull complete 1.3s ✔ 3201cf751cfe Pull complete 1.9s ✔ 017391f62713 Pull complete 2.4s [+] Running 2/2 ✔ Network softether_default Created 0.1s ✔ Container softether-softether-1 Created 0.7s Attaching to softether-1 softether-1 | error registering mldsa44 with no hash softether-1 | dmesg: klogctl: Operation not permitted
docker-compose.vpnclient.yaml
services: softether: image: softethervpn/vpnserver:latest cap_add: - NET_ADMIN restart: always ports: #- 53:53 #DNS tunneling - 443:443 #Management and HTTPS tunneling - 992:992 #HTTPS tunneling - 1194:1194/udp #OpenVPN - 5555:5555 #HTTPS tunneling - 500:500/udp #IPsec/L2TP - 4500:4500/udp #IPsec/L2TP - 1701:1701/udp #IPsec/L2TP volumes: - "/etc/localtime:/etc/localtime:ro" - "/etc/timezone:/etc/timezone:ro" - "./softether_data:/var/lib/softether" - "./softether_log:/var/log/softether" # - "./adminip.txt:/var/lib/softether/adminip.txt:ro"
注意点
最後の compose 起動時、 sudo docker compose -f docker-compose.vpnclient.yaml up としているがこれは起動確認のため。
実際に運用する場合は、 -d を付与して daemon 化してください。 (あとは systemctl などで自動起動してやってください)