VPN構築完全ガイド – SoftEther・WireGuard・Zero Trust対応

2025年版 最新VPN構築ガイド – 従来のVPNからZero Trust Network Accessまで

目次

はじめに

2020年の記事から5年が経過し、VPN技術は大きく進化しました。本記事では、最新のVPN技術動向と、より安全で効率的なネットワークアクセス方法について、初心者の方にも分かりやすく解説します。

VPNの基本概念図

🔒 VPNの基本概念

クライアント
(あなたのPC)
インターネット
危険な公衆網
🚫 盗聴リスク
VPNサーバー
(会社・自宅)
🔐 暗号化トンネル
リモートワーカー
公衆WiFi・モバイル回線
社内ネットワーク
安全な通信路
🛡️
セキュリティ強化
通信データを暗号化し、盗聴や改ざんから保護します。公衆WiFiでも安全に利用できます。
🌍
リモートアクセス
世界中どこからでも、社内ネットワークに安全にアクセスできます。
🔒
プライバシー保護
IPアドレスを隠し、オンライン活動の匿名性を保護します。
柔軟な働き方
在宅勤務やモバイルワークを安全にサポートし、生産性を向上させます。

2025年のVPN技術の現状

主要な変化点

  1. CentOS 7のサポート終了(2024年6月30日)
    • Rocky Linux、AlmaLinux、Ubuntu LTSへの移行が推奨
  2. 新しいVPNプロトコルの台頭
    • WireGuardの普及(OpenVPNの4倍の速度)
    • QUIC-based VPNの登場
  3. Zero Trust Architectureの標準化
    • 従来の境界型セキュリティからの脱却
    • 継続的な認証と最小権限の原則

SoftEther VPN最新版のインストールと設定

動作環境(2025年推奨)

  • OS: Rocky Linux 9、AlmaLinux 9、Ubuntu 24.04 LTS
  • CPU: 64ビットプロセッサ(ARM64対応)
  • メモリ: 2GB以上
  • ストレージ: 20GB以上
VPNネットワーク構成図

🏗️ VPNネットワーク構成図

🌐 インターネット
🛡️ DMZ
🏢 社内ネットワーク
💻
PC
📱
Mobile
💼
Laptop
🖥️
VPN Server
🔥
Firewall
🗄️
Server
💾
Database
📁
Files
🔌 SoftEther VPN 対応プロトコル
SoftEther (SSL-VPN)
TCP: 443, 992, 5555
L2TP/IPSec
UDP: 500, 4500, 1701
OpenVPN
UDP: 1194
MS-SSTP
TCP: 443
📋 IPアドレス設計例
社内LAN
192.168.1.0/24
VPN仮想HUB
192.168.30.0/24
VPNサーバー
192.168.30.1
DHCPプール
192.168.30.10-200
🌐 インターネット
⚡ WireGuard
🏢 プライベート
💻
Peer 1
📱
Peer 2
💼
Peer 3
🔧
WG Server
🗄️
Service A
💾
Service B
📁
Service C
⚡ WireGuard 設定例
デフォルトポート
UDP: 51820
暗号化
ChaCha20Poly1305
認証
Curve25519
ハッシュ
BLAKE2s
📋 WireGuard IPアドレス設計
WGネットワーク
10.0.0.0/24
WGサーバー
10.0.0.1/24
クライアント1
10.0.0.2/32
クライアント2
10.0.0.3/32
🌐 Any Network
🔍 Identity Proxy
🎯 Micro-segments
👤
User
📱
Mobile
🔐
Managed
🔍
Auth Proxy
🏷️
App A
🏷️
App B
🏷️
App C
🛡️ Zero Trust Components
Identity Provider
SAML, OIDC
Policy Engine
Context-Aware
Data Protection
DLP, CASB
Monitoring
UEBA, SIEM
🔐 暗号化通信
全ての通信データがAES-256またはChaCha20で暗号化され、盗聴や改ざんから保護されます。
🔍 認証・認可
多要素認証(MFA)と詳細なアクセス制御により、正当なユーザーのみがアクセス可能です。
📊 ログ・監視
全ての接続とアクセスが記録され、リアルタイムでセキュリティ監視が行われます。
🚀 高性能
最適化されたプロトコルとハードウェアアクセラレーションにより高速通信を実現します。
クライアントデバイス
VPN/認証サーバー
内部リソース
暗号化通信

Rocky Linux 9 / AlmaLinux 9での構築手順

1. システムの準備

# システムの更新
sudo dnf update -y

# 必要なパッケージのインストール
sudo dnf groupinstall "Development Tools" -y
sudo dnf install wget curl gcc make cmake git \
    openssl-devel readline-devel ncurses-devel \
    zlib-devel libsodium-devel -y

# SELinuxの一時無効化(本番環境では適切に設定)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

# Firewalldの設定
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=5555/tcp
sudo firewall-cmd --permanent --add-port=1194/udp
sudo firewall-cmd --permanent --add-service=ipsec
sudo firewall-cmd --permanent --add-port=500/udp
sudo firewall-cmd --permanent --add-port=4500/udp
sudo firewall-cmd --permanent --add-port=1701/udp
sudo firewall-cmd --reload

2. SoftEther VPN Server v4.44のインストール

# 作業ディレクトリへ移動
cd /tmp

# 最新版のダウンロード(2025年4月リリース版)
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.44-9807-rtm/softether-vpnserver-v4.44-9807-rtm-2025.04.16-linux-x64-64bit.tar.gz

# 解凍
tar xzf softether-vpnserver-v4.44-9807-rtm-2025.04.16-linux-x64-64bit.tar.gz

# ビルド
cd vpnserver
make

# インストール
cd ..
sudo mv vpnserver /usr/local/
cd /usr/local/vpnserver
sudo chmod 600 *
sudo chmod 700 vpnserver vpncmd

3. Systemdサービスの設定(改良版)

sudo cat > /etc/systemd/system/softether-vpnserver.service << 'EOF'
[Unit]
Description=SoftEther VPN Server v4.44
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=3s

# セキュリティ強化設定
PrivateTmp=yes
ProtectSystem=full
ProtectHome=yes
NoNewPrivileges=yes
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

# サービスの有効化と起動
sudo systemctl daemon-reload
sudo systemctl enable softether-vpnserver
sudo systemctl start softether-vpnserver

4. 初期設定(コマンドライン版)

# vpncmdで初期設定
sudo /usr/local/vpnserver/vpncmd

# 以下、対話形式で設定
# 1. 管理パスワードの設定
ServerPasswordSet

# 2. 仮想HUBの作成
HubCreate MyVPN /PASSWORD:YourHubPassword

# 3. ユーザーの作成
Hub MyVPN
UserCreate testuser /GROUP:none /REALNAME:none /NOTE:none
UserPasswordSet testuser /PASSWORD:UserPassword123

# 4. SecureNATの有効化
SecureNatEnable

# 5. L2TP/IPSecの設定
IPsecEnable /L2TP:yes /L2TPRAW:no /ETHERIP:no \
  /PSK:YourPreSharedKey123 /DEFAULTHUB:MyVPN

Ubuntu 24.04 LTSでの構築手順

# システムの更新
sudo apt update && sudo apt upgrade -y

# 必要なパッケージのインストール
sudo apt install -y build-essential wget curl gcc make \
    libreadline-dev libncurses-dev libssl-dev zlib1g-dev

# SoftEther VPNのダウンロードとインストール
cd /tmp
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.44-9807-rtm/softether-vpnserver-v4.44-9807-rtm-2025.04.16-linux-x64-64bit.tar.gz
tar xzf softether-vpnserver-*.tar.gz
cd vpnserver
make
cd ..
sudo mv vpnserver /usr/local/

# 権限設定
cd /usr/local/vpnserver
sudo chmod 600 *
sudo chmod +x vpnserver vpncmd

# Systemdサービスファイルの作成(Rocky Linuxと同じ内容)
# UFWファイアウォールの設定
sudo ufw allow 443/tcp
sudo ufw allow 5555/tcp
sudo ufw allow 1194/udp
sudo ufw allow 500/udp
sudo ufw allow 4500/udp
sudo ufw allow 1701/udp

WireGuard – 次世代VPNプロトコル

WireGuardの特徴

  • 超高速: OpenVPNの約4倍の速度
  • シンプル: 約4,000行のコード(OpenVPNは60万行)
  • 最新暗号化: ChaCha20、Poly1305、Curve25519、BLAKE2
  • 低遅延: カーネルレベルで動作

WireGuardのインストールと設定

Rocky Linux 9 / AlmaLinux 9

# WireGuardのインストール
sudo dnf install -y wireguard-tools

# 鍵の生成
wg genkey | sudo tee /etc/wireguard/server_private.key
sudo chmod 600 /etc/wireguard/server_private.key
sudo cat /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key

# サーバー設定ファイルの作成
sudo cat > /etc/wireguard/wg0.conf << 'EOF'
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <サーバーの秘密鍵>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# クライアント1
PublicKey = <クライアント1の公開鍵>
AllowedIPs = 10.0.0.2/32

[Peer]
# クライアント2
PublicKey = <クライアント2の公開鍵>
AllowedIPs = 10.0.0.3/32
EOF

# WireGuardの起動
sudo systemctl enable --now wg-quick@wg0

WireGuard vs OpenVPN vs SoftEther 性能比較(2025年)

プロトコルスループット(平均)レイテンシCPU使用率セットアップ難易度
WireGuard950 Mbps5ms簡単
OpenVPN250 Mbps20ms中程度
SoftEther600 Mbps15ms簡単
VPN技術比較チャート

📊 VPN技術比較チャート

項目WireGuardSoftEther VPNOpenVPN
速度950 Mbps600 Mbps250 Mbps
レイテンシ5ms15ms20ms
セットアップ難易度簡単簡単中程度
CPU使用率
プラットフォーム対応良好優秀優秀
機能豊富さシンプル豊富標準
⚡ WireGuard
950 Mbps
次世代プロトコル
🛠️ SoftEther VPN
600 Mbps
多機能・高互換
🔒 OpenVPN
250 Mbps
実績豊富・安定
WireGuard
  • 🚀超高速通信(4倍速)
  • 🎯シンプルな設定
  • 🔧カーネルレベル動作
  • 🛡️最新暗号化技術
  • 📱モバイル最適化
🛠️ SoftEther VPN
  • 🌐豊富なプロトコル対応
  • 💻GUI管理ツール
  • 🔄NAT穿越機能
  • 📊詳細な統計情報
  • 🔧L2TP/IPSec統合
🔒 OpenVPN
  • 📈豊富な実績
  • 🔐強固なセキュリティ
  • 🌍幅広いOS対応
  • 🔧細かい設定可能
  • 👥大規模コミュニティ

🎯 用途別推奨VPN技術

🏃‍♂️ 高速・シンプル重視
WireGuard – 個人利用や小規模チーム
🏢 企業・多機能重視
SoftEther VPN – 中規模企業や複雑な環境
🔒 安定・実績重視
OpenVPN – 大企業や高セキュリティ環境
📱 モバイル重視
WireGuard – バッテリー効率重視

Zero Trust Network Access (ZTNA)への移行

Zero Trust vs 従来型セキュリティ比較

🔄 Zero Trust vs 従来型セキュリティ

🏰 従来型境界防御
🖥️
🗄️
👤
🦠
🚫
境界線 – ファイアウォールで外部脅威をブロック
🏢
信頼ゾーン – 内部は全て信頼される
⚠️
内部脅威 – 一度侵入されると横移動が容易

特徴

  • ネットワーク境界で防御
  • 内部は暗黙的に信頼
  • VPNで境界を拡張
  • 一度認証すれば自由にアクセス
  • 横移動攻撃に脆弱
🛡️ Zero Trust Architecture
🔍
🔍
🔍
🖥️
🗄️
👤
🔒
マイクロセグメント – 各リソースを個別に保護
🔍
継続的検証 – 毎回認証・認可を確認
最小権限 – 必要最小限のアクセスのみ許可

特徴

  • 「決して信頼せず、常に検証」
  • 各リソースを個別に保護
  • コンテキスト情報で判断
  • 継続的な認証・認可
  • 横移動攻撃を防止
➡️
従来型の課題
❌ 内部脅威に脆弱
一度侵入されると内部を自由に移動できてしまう
❌ 境界が曖昧
クラウド・モバイル時代には境界線が明確でない
❌ 過度な信頼
内部ユーザー・デバイスを無条件に信頼
❌ 可視性の欠如
内部トラフィックの監視が不十分
Zero Trustの利点
✅ 横移動を防止
マイクロセグメンテーションで攻撃の拡散を阻止
✅ 完全な可視性
すべてのトラフィックを監視・ログ記録
✅ 適応的セキュリティ
コンテキストに基づく動的なアクセス制御
✅ クラウド対応
場所に依存しないセキュリティモデル

Zero Trustの基本原則

  1. 決して信頼せず、常に検証する
  2. 最小権限の原則
  3. 継続的な検証
  4. マイクロセグメンテーション

Tailscaleによる簡単なZTNA実装

Tailscaleは、WireGuardベースのメッシュVPNで、Zero Trust原則を簡単に実装できます。

インストールと設定

# Tailscaleのインストール(Rocky Linux 9)
curl -fsSL https://tailscale.com/install.sh | sh

# 起動と認証
sudo systemctl enable --now tailscaled
sudo tailscale up

# ACL(アクセスコントロールリスト)の設定例
# tailscale.com/admin でWeb UIから設定

Tailscale ACLポリシー例

{
  "acls": [
    {
      "action": "accept",
      "src": ["group:developers"],
      "dst": ["tag:production:*"]
    },
    {
      "action": "accept",
      "src": ["group:admins"],
      "dst": ["*:*"]
    }
  ],
  "groups": {
    "group:developers": ["user1@example.com", "user2@example.com"],
    "group:admins": ["admin@example.com"]
  },
  "tagOwners": {
    "tag:production": ["group:admins"]
  }
}

他のZTNAソリューション

  1. Cloudflare Zero Trust
    • クラウドベースのZTNA
    • WAFとの統合
    • 月額無料プラン(50ユーザーまで)
  2. Zscaler Private Access
    • エンタープライズ向け
    • 包括的なSASEプラットフォーム
  3. Pomerium
    • オープンソース
    • Identity-Aware Proxy
    • Kubernetes対応

コンテナ化によるVPN構築

Dockerを使用したSoftEther VPNの展開

Docker Composeによる構築

# docker-compose.yml
version: '3.8'

services:
  softether-vpn:
    image: softethervpn/vpnserver:stable
    container_name: softether-vpn-server
    cap_add:
      - NET_ADMIN
    restart: unless-stopped
    ports:
      - "443:443/tcp"      # HTTPS/Management
      - "992:992/tcp"      # Alternative HTTPS
      - "5555:5555/tcp"    # SoftEther Protocol
      - "1194:1194/udp"    # OpenVPN
      - "500:500/udp"      # IPSec IKE
      - "4500:4500/udp"    # IPSec NAT-T
      - "1701:1701/udp"    # L2TP
    volumes:
      - ./vpn_server.config:/usr/vpnserver/vpn_server.config
      - ./server_log:/var/log/vpnserver
    environment:
      - SPW=ServerPassword123  # サーバー管理パスワード
      - HPW=HubPassword123     # Hub管理パスワード
      - PSK=PreSharedKey123    # L2TP/IPSec事前共有鍵

起動コマンド

# Docker Composeで起動
docker-compose up -d

# ログの確認
docker-compose logs -f

# 管理コマンドの実行
docker exec -it softether-vpn-server vpncmd

Kubernetesでの展開

# softether-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: softether-vpn
  namespace: vpn
spec:
  replicas: 1
  selector:
    matchLabels:
      app: softether-vpn
  template:
    metadata:
      labels:
        app: softether-vpn
    spec:
      containers:
      - name: softether
        image: softethervpn/vpnserver:stable
        securityContext:
          capabilities:
            add:
            - NET_ADMIN
        ports:
        - containerPort: 443
          protocol: TCP
        - containerPort: 1194
          protocol: UDP
        - containerPort: 500
          protocol: UDP
        - containerPort: 4500
          protocol: UDP
        volumeMounts:
        - name: config
          mountPath: /usr/vpnserver/vpn_server.config
          subPath: vpn_server.config
        - name: logs
          mountPath: /var/log/vpnserver
      volumes:
      - name: config
        configMap:
          name: softether-config
      - name: logs
        emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: softether-vpn-service
  namespace: vpn
spec:
  type: LoadBalancer
  selector:
    app: softether-vpn
  ports:
  - name: https
    port: 443
    targetPort: 443
    protocol: TCP
  - name: openvpn
    port: 1194
    targetPort: 1194
    protocol: UDP
  - name: ipsec-ike
    port: 500
    targetPort: 500
    protocol: UDP
  - name: ipsec-nat
    port: 4500
    targetPort: 4500
    protocol: UDP

セキュリティ強化のベストプラクティス

1. 多要素認証(MFA)の実装

# RADIUS認証サーバーとの連携
# FreeRADIUSのインストール
sudo dnf install -y freeradius freeradius-utils

# Google Authenticator PAMモジュールの設定
sudo dnf install -y google-authenticator

2. 証明書ベース認証の設定

# CA証明書の作成
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

# サーバー証明書の作成
openssl genrsa -out server.key 4096
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

# クライアント証明書の作成
openssl genrsa -out client.key 4096
openssl req -new -key client.key -out client.csr
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out client.crt

3. ログ監視とアラート

# Fail2banの設定(ブルートフォース攻撃対策)
sudo dnf install -y fail2ban

# SoftEther VPN用のフィルター作成
sudo tee /etc/fail2ban/filter.d/softether.conf > /dev/null <<'EOF'
[Definition]
failregex = ^.*Connection ".*" from <HOST>:[0-9]+ failed.*$
            ^.*User authentication failed.*from <HOST>.*$
ignoreregex =
EOF

# Jail設定
sudo tee /etc/fail2ban/jail.d/softether.conf > /dev/null <<'EOF'
[softether]
enabled = true
port = 443,992,5555,1194
protocol = tcp
filter = softether
logpath = /usr/local/vpnserver/security_log/*.log
maxretry = 5
findtime = 600
bantime = 3600
EOF

# 設定後の確認
sudo systemctl enable --now fail2ban
sudo fail2ban-client reload
sudo fail2ban-client status
sudo fail2ban-client status softether
# ログに対してパターンが当たるか検証(任意)
sudo fail2ban-regex /usr/local/vpnserver/security_log/*.log /etc/fail2ban/filter.d/softether.conf -v

4. ネットワークセグメンテーション

# 仮想HUBごとのアクセス制御
# vpncmdでの設定例
Hub MyVPN
AccessAdd pass 192.168.1.0/255.255.255.0 / /PRIORITY:100
AccessAdd deny 192.168.100.0/255.255.255.0 / /PRIORITY:90

5. 定期的なセキュリティ監査

# Nmapによるポートスキャン
nmap -sV -p- your-vpn-server.com

# Lyzによる脆弱性スキャン
lynis audit system

# OpenVASによる包括的セキュリティ評価
# (別途インストールが必要)

クライアント設定ガイド(2025年版)

Windows 11での設定

  1. SoftEther VPN Client最新版のダウンロード
    • 公式サイトからv4.44 Build 9807をダウンロード
    • Windows 11対応確認済み
  2. 新機能: Windows Hello認証対応
    • 生体認証(指紋・顔認識)での接続が可能
    • 設定方法: 1. VPN接続設定を作成2. 「認証」タブで「Windows Hello」を選択3. Windows Helloの設定を完了

macOS Sonoma/Ventura での設定

# Homebrewでのインストール(推奨)
brew install softethervpn

# または、L2TP/IPSecネイティブ接続
# システム設定 > ネットワーク > VPN > 追加
# - タイプ: L2TP over IPSec
# - サーバーアドレス: your-server.com
# - アカウント名: HubName\Username
# - パスワード: YourPassword
# - 共有シークレット: PreSharedKey

iOS 17 / iPadOS 17での設定

  1. 設定アプリを開く
  2. 「一般」→「VPNとデバイス管理」→「VPN」
  3. 「VPN構成を追加」
  4. 以下を入力:
    • タイプ: L2TP
    • 説明: 任意の名前
    • サーバー: サーバーのIPまたはドメイン
    • アカウント: HubName\Username
    • パスワード: 保存する
    • シークレット: 事前共有鍵

Android 14での設定

  1. 設定 → ネットワークとインターネット → VPN
  2. 「+」をタップして新規作成
  3. 以下を設定:
    • 名前: 任意
    • タイプ: L2TP/IPSec PSK
    • サーバーアドレス: your-server.com
    • IPSec事前共有鍵: YourPSK
    • ユーザー名: HubName\Username
    • パスワード: YourPassword
    • 転送ルート: 0.0.0.0/0(全トラフィック)

トラブルシューティング

よくある問題と解決方法

1. 接続できない

# ポートの確認
sudo ss -tunlp | grep vpnserver

# ファイアウォールの確認
sudo firewall-cmd --list-all

# SELinuxの確認(Rocky Linux/AlmaLinux)
sudo ausearch -m avc -ts recent

# ログの確認
sudo tail -f /usr/local/vpnserver/security_log/$(date +%Y%m%d).log

2. 速度が遅い

# MTUサイズの最適化
sudo ip link set dev vpn_vpn mtu 1400

# TCP最適化
sudo sysctl -w net.core.rmem_max=134217728
sudo sysctl -w net.core.wmem_max=134217728
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 134217728"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 134217728"

3. DNS解決の問題

# SecureNATのDNS設定
Hub MyVPN
SecureNatHostSet /MAC:none /IP:192.168.30.1 /MASK:255.255.255.0
DhcpSet /START:192.168.30.10 /END:192.168.30.200 /MASK:255.255.255.0 /EXPIRE:7200 /GW:192.168.30.1 /DNS:8.8.8.8 /DNS2:1.1.1.1

パフォーマンスチューニング

1. カーネルパラメータの最適化

# /etc/sysctl.d/99-vpn-performance.conf
cat > /etc/sysctl.d/99-vpn-performance.conf << 'EOF'
# ネットワークバッファの拡大
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_rmem = 4096 87380 134217728
net.ipv4.tcp_wmem = 4096 65536 134217728

# TCP最適化
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq
net.ipv4.tcp_notsent_lowat = 16384

# 接続数の増加
net.ipv4.ip_local_port_range = 1024 65535
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

# セキュリティ設定
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
EOF

sudo sysctl -p /etc/sysctl.d/99-vpn-performance.conf

2. CPU親和性の設定

# 特定のCPUコアにVPNプロセスを固定
sudo taskset -cp 0-3 $(pidof vpnserver)

監視とメトリクス

Prometheusでの監視設定

# docker-compose.monitoring.yml
version: '3.8'

services:
  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    ports:
      - "9090:9090"
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin123

  node_exporter:
    image: prom/node-exporter:latest
    ports:
      - "9100:9100"
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'

volumes:
  prometheus_data:
  grafana_data:

まとめと今後の展望

2025年のVPN選択指針

  1. 小規模・個人利用
    • WireGuard: 最速・最もシンプル
    • Tailscale: Zero Trust・簡単設定
  2. 中規模企業
    • SoftEther VPN: 多機能・互換性重視
    • OpenVPN + FreeRADIUS: 標準的構成
  3. 大規模企業
    • ZTNA製品(Zscaler、Cloudflare等)
    • SASE統合ソリューション

今後の技術トレンド(2025-2027)

  1. AI駆動型セキュリティ
    • 異常検知の自動化
    • 適応型アクセス制御
  2. 量子耐性暗号への移行
    • Post-Quantum Cryptography対応
    • ハイブリッド暗号方式
  3. 5G/6Gとの統合
    • ネットワークスライシング
    • エッジコンピューティング連携

推奨される移行パス

graph LR
    A[従来VPN] --> B[WireGuard/最新VPN]
    B --> C[ZTNA導入]
    C --> D[完全Zero Trust]
    
    A2[2020-2023] --> B2[2024-2025]
    B2 --> C2[2025-2026]
    C2 --> D2[2027以降]

参考資料とリソース

公式ドキュメント

コミュニティとサポート

  • SoftEther VPN User Forum
  • r/VPN (Reddit)
  • Stack Overflow – VPN Tags

セキュリティ情報

  • CVE Database
  • JPCERT/CC
  • IPA セキュリティセンター

最後に

VPN技術は、単なるリモートアクセスツールから、包括的なセキュリティアーキテクチャの一部へと進化しています。2025年現在、従来のVPNからZero Trust Network Accessへの移行が加速しており、組織の規模や要件に応じて適切な技術を選択することが重要です。

本ガイドが、皆様の安全で効率的なネットワーク環境構築の一助となれば幸いです。

更新履歴

  • 2025年9月: 初版作成
  • SoftEther VPN v4.44対応
  • Zero Trust Architecture解説追加
  • コンテナ化手法の詳細化

著者注記: 本記事の内容は2025年9月時点の情報に基づいています。セキュリティ技術は日々進化しているため、実装時には最新の情報を確認することをお勧めします。

旧記事(2020年版)

以下は2020年当時の記事です。歴史的な参考として残しています。

ここ最近、急速にテレワークや在宅勤務などにシフトする企業が増え、いっきに環境が変化しています。
そこで、本日はパソコンにVPN環境を構築して社員がどこにいても社内のネットワークに参加できるようにします。簡単なイメージを作成したので参照してください。

詳しい説明は割愛しますが、インターネットから、どこにいても社内LANに参加できるというものです。IPアドレスをプライベートとすることにより、これを実現することが可能になります。ファイルの共有、プリンタへの印刷など便利なことを外出先からできるようになります。

今回はクラウドサービスにLinuxの仮想マシンが構築してあり、VPNの導入方法をいちから紹介したいと思います。使用するクラウドサービスはオラクルクラウドですがAWS、AZURE、GCPでも可能です。OSはCentOS7とします。

第一段階としてVPNを実現できるソフトを選びます。無料で高機能かつオープンソースであるSoftEther VPN Serverを使用いたします。
http://www.softether-download.com/ja.aspx?product=softether
にアクセスして目的にあったコンポーネント、プラットフォーム、CPUを選択します。するとダウンロードリンクが現れるので右クリックしてコピーしておきます。あとで使用します。

それではssh接続してVPN Serverに必要なソフトを事前にダウンロード、インストールしておきましょう。まずはDevelopment Tools、readlineなどをインストールします。私のマシンは32ビットだったのでそれ相応のものをインストールすることになりました。あとから説明いたします。下記のコマンドを入力します。

yum -y groupinstall "Development Tools"
yum -y install readline-devel ncurses-devel openssl-devel
yum install glibc-devel.i686 libgcc.i686 libstdc++-devel.i686 ncurses-devel.i686

最初は3行目のコマンドを入力してなかったのでVPNのインストールでエラーが発生して苦労しましたが、通常は入力する必要はないと思います。
必要なプログラムの準備が完了したらVPN Serverをダウンロードして、インストールします。

cd /tmp
wget https://jp.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/32bit_-_Intel_x86/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x86-32bit.tar.gz
tar zxvf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x86-32bit.tar.gz

tmpディレクトリに移動して、WGETでダウンロードします。WGETのあとのURLが先ほどコピーしたリンクアドレスとなります。そして解凍します。VPNSERVERというディレクトリが作成されそこにファイルが解凍されています。

cd vpnserver

vpnserverディレクトリに移動します。

make

これにより、MakeFileに基づいて、アプリのコンパイルが行われます。


その前にライセンスに同意するか問われるので1を押して次に進みましょう。その後を1を2回押しましょう。

cd ..
mv vpnserver /usr/local
cd /usr/local/vpnserver
chmod 600 *
chmod 700 vpncmd
chmod 700 vpnserver
chown root:root *

上のコマンドの説明です。
1行目:一つ上の階層であるtmpに移動する。
2行目:vpnserverディレクトリごと/usr/local直下に移動する。ここが推奨されています。
3行目:ファイルの移動先に移動。
4行目:セキュリティでroot以外アクセスできないようにする。
5,6行目:対象ファイルに実行権限を付与。
7行目:所有権をrootにする。

./vpncmd
3
check
exit

vpncmdを実行して、3番のVPN Toolsコマンドを使用します。checkと入力してコマンドが成功するか確認します。成功したのでexitにてモードを抜けます。

cd
vi /etc/systemd/system/softvpn.service

ホームに戻りsoftvpn.serviceというファイルを作成します。記述する内容は下に示します。softvpnとしましたが自分でわかりやすいものを決めてください。
仮想マシン上でVPNサーバープロセスを常駐化させるため、Systemdでサービス化します。そのためにユニットファイルを作成します。

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target

上書き保存して動作確認をします。

systemctl daemon-reload
systemctl start softvpn
systemctl enable softvpn

3行目でシステム再起動時に起動するようにします。

あともう少しです。次にSoftEther VPN Serverの使用するポート番号を確認してみましょう。実はあとでwindows版のvpnserverでもできます。こちらはGUIでわかりやすいですが、学習のためやっておきましょう。

systemctl stop softvpn
vi /usr/local/vpnserver/vpn_server.config

プログラムを停止します。何らかの理由で、ウェブサーバーがあり443はSSL(https)で使用しているならFalseにして停止しておきましょう。

systemctl start softvpn

設定が完了したので起動します。

次はOSにポート開放をします。開放するポートは5555及びスマホなどで使用するL2TP/IPsec用のポートです。UDPの500と4500となりますが、ipsecというサービス名で登録されています。

firewall-cmd --list-all
firewall-cmd --permanent --zone=public --add-port=5555/tcp
firewall-cmd --permanent --zone=public --add-service=ipsec
firewall-cmd --get-services
firewall-cmd --reload

最初にどんなルールが設定されているか確認します。順に、TCP5555、UDP500、4500を登録します。4行目は登録されているものを確認することができます。反映も忘れずにおこないます。

オラクルクラウドのイングレスルールにもこれらのポート開放の設定を忘れずにしておきます。他のクラウドでも同様の設定項目があります。自宅サーバであればルーターの設定を見直す必要もあります。

次はVPN Serverにアクセスできるユーザーを作成しますがコマンドでは困難なこともあるのでwindows版をダウンロードしてきます。
http://www.softether-download.com/ja.aspx?product=softether
にてダウンロードしてインストールします。

サーバー管理マネージャーから新しい接続設定をクリックします。

次の画面で接続設定名を任意で、ホスト名、ポート番号は5555を選択します。管理パスワードは何もいれずに「OK」ボタンをクリックします。ホスト名はオラクルクラウドのインスタンスに使用している外部IPアドレスとなります。最初に限り次の画面でパスワードと再確認の2つを入力する必要があります。管理画面では5555以外停止中ですね。先ほどのSSH接続でおこなったコマンドの内容が反映されていることがわかります。


ウィザードにそって進めていきます。リモートアクセスVPNサーバーにチェックをいれて次に進みます。仮想HUB名の入力画面がでたらわかりやすいものを入力します。


ダイナミックDNS機能の画面がでたらいったん閉じます。この時点でXXXXX.softeher.netでもアクセスができますが独自ドメインを使用したい方は無効にしておきましょう。まだまだ続きます。VPN AZUREは今回は無効としました。ユーザー作成画面がでたら作成しますが、後からでもできます。ローカルブリッジの設定では必ず一覧から選択します。


先ほどコマンドでポート開放をしたのでIPsec、L2TPは設定しましょう。「L2TPサーバー機能を有効にする」にチェックをいれます。IPsec事前共有鍵は任意で設定しておきます。スマホで接続する時に必要です。


仮想HUBの管理画面で「仮想NATおよび仮想DHCPサーバー機能」ボタンをクリックして次の画面で「SecureNAT機能を有効にする」をクリックします。詳細な振り分けIPアドレスを指定したい方は「SecureNATの設定」ボタンにておこなえます。

ここまででサーバー側の設定は完了しました。ここら辺は管理者がおこなう業務となるでしょう。
次にようやくクライアントの設定を行います。パソコンとスマホの設定を見ていきます。
http://www.softether-download.com/ja.aspx?product=softether
でクライアントを選択してダウンロードしてインストールします。最初のインストールでは仮想ネットワーク関連のドライバのインストールもする必要があるかもしれません。

それではクライアントを起動して「新しい接続設定の作成」をダブルクリックしましょう。次の画面で入力すべきところは、接続設定名、ホスト名、ポート番号の選択、およびサーバーで追加したユーザー名とパスワードになります。「OK」をクリックすれば一覧に追加されています。

追加された接続設定名をダブルクリックします。接続がうまくいけばプライベートアドレスが割り当てられネットワークに参加できます。コマンドプロンプトで確認してみましょう。プライベートアドレスが割り当てられてます。


それではインターネットにアクセスしたときどんな外部IPが使用されているのでしょう。自分のIPアドレスが調査できるサイトにアクセスして確認します。これはまさにオラクルクラウドの外部IPとなっています。

最後にスマホの設定をしていきましょう。Androidを例に設定方法を説明していきます。
設定からVPNの項目を探します。名前を任意で、タイプは「L2TP/IPSec PSK」を選択します。

サーバーアドレス、IPSec事前共有鍵を入力します。IPSec事前共有鍵はデフォルトではVPNとなってましたが変更しておきましょう。

DNS検索ドメイン、DNSサーバーは空白のままで大丈夫ですが自分で用意していればその限りではありません。転送ルートは「0.0.0.0/0」と入力します。

最後にサーバーで追加したユーザー名とパスワードを入力して接続してみましょう。

コメント

タイトルとURLをコピーしました