コンテンツにスキップ

VPN制御設計:業務委託者ネットワーク管理

📁 docs/dev-environment/artifact/20260412_000301_VPN制御設計_業務委託ネットワーク管理.md

背景・前提状況

  • 不動産会社のシステム管理者が対象
  • 社員・業務委託者が同一アカウントで業者間ポータルサイトにアクセス
  • 規約上「大阪からのアクセス」に統一する必要がある
  • 大阪出口のVPNはすでに用意済み

確定済み環境情報

項目 内容
VPNソフト ミレンVPN(MillenVPN)
業務委託者OS Windows
MDM管理 不明
接続形態 自宅リモート(社内LAN不可)

要件整理

# 要件 優先度
1 ポータルサイトへのアクセスは必ずVPN経由(大阪IP)にしたい 必須
2 ポータルサイト以外の一般サイトはVPNを経由せず普通に使えるようにしたい できれば
3 VPN未接続のまま業者間サイトにアクセスされるのを会社側で強制的に防ぎたい 必須

スプリットトンネリングとは

普通のVPNの動き

VPNをオンにすると、PCから出るすべての通信がVPNのトンネルを通る。

PC → [全部の通信] → VPNトンネル → 大阪 → インターネット全体

スプリットトンネリングの動き

「split(分割)」という名前の通り、通信を行き先によって2つに分ける仕組み。

PC ┬─ ポータルサイト宛 → VPNトンネル → 大阪 → ポータルサイト
   └─ それ以外(YouTube等)→ 直接インターネット(VPN経由しない)

設定するのは「どのIPアドレス/サイトだけVPNを通すか」というルール1本だけ。

キルスイッチとの違い

機能 役割 要件への対応
キルスイッチ VPN切断時に全通信を遮断 要件3のみカバー
スプリットトンネリング VPN接続中の通信を宛先で振り分け 要件2のみカバー

→ 要件2と3を両立するには、2つを組み合わせる必要がある。


ミレンVPNについての前提知識

ミレンVPNはコンシューマー向けの日本製VPNサービスで、OpenVPN / WireGuard プロトコルをベースにしている。

スプリットトンネリング対応状況

要確認: ミレンVPNの公式クライアントはスプリットトンネリングの設定UIを持たない可能性が高い。 ただし、OpenVPN設定ファイル(.ovpnファイル)を直接編集することで対応できる場合がある。


対策案

対策A:スプリットトンネリングVPN(推奨の柱)

対応する要件: | 要件1:ポータルは必ずVPN経由 | 要件2:一般サイトはVPN経由しない | 要件3:VPN未接続時にポータルをブロック | |:-:|:-:|:-:| | ✅ カバー | ✅ カバー | ❌ カバーしない |

概要: VPNを常時接続させつつ、ポータルサイト向けのトラフィックだけVPN経由にし、それ以外は通常回線を使う設定。

[業務委託PCのトラフィック]
  ├─ ポータルサイト宛 → VPNトンネル → 大阪出口 → サイトアクセス ✅
  └─ その他(YouTube等) → 直接インターネット ✅

ミレンVPNでの実現方法

ミレンVPNが提供するOpenVPN設定ファイル(.ovpn)に以下を追記することでスプリットトンネリングが可能になる場合がある。

# デフォルトルートをVPN経由にしない(これがないと全通信がVPN経由になる)
route-nopull

# ポータルサイトのIPアドレスだけVPN経由にする
route <ポータルサイトのIP> 255.255.255.255 vpn_gateway

注意: ミレンVPNの公式サポートにスプリットトンネリング設定について問い合わせると、提供されるOVPNファイルの編集が許可されているか確認できる。

メリット: - 業務委託者の手間ゼロ(VPNつけっぱなしで全部自動) - 一般通信が遅くならない(VPN負荷が減る) - 要件1・2を同時に満たす

デメリット: - ミレンVPNがOVPNファイル編集に対応しているか要確認 - ポータルサイトのIPが変わった場合に設定更新が必要


対策B:Windowsファイアウォールルール(要件3を担保)

対応する要件: | 要件1:ポータルは必ずVPN経由 | 要件2:一般サイトはVPN経由しない | 要件3:VPN未接続時にポータルをブロック | |:-:|:-:|:-:| | ❌ カバーしない | ❌ カバーしない | ✅ カバー |

概要: 業務委託者のWindowsPCに「VPN未接続時はポータルサイトへの通信をブロックする」ファイアウォールルールを設定する。

ファイアウォールとは

PCに出入りする通信を監視し、条件に合わない通信を自動でブロックする仕組み。Windowsには「Windows Defender ファイアウォール」が標準で搭載されている。

[ファイアウォールのイメージ]
  インターネット ← → ファイアウォール(門番)← → PC
                    許可・ブロックのルールを設定

ポータルサイト側(at homeなど)には一切設定・依頼は不要。
ファイアウォールは業務委託者のPC上で動作するため、管理者側だけで完結できる。

誰が設定するか

設定場所 設定者 ポータルサイト側の対応
業務委託者のPC内のファイアウォール 管理者(またはIntune自動適用) 不要

管理者だけで完結できるか

方法 管理者だけで完結するか 補足
Intuneで配布 ほぼ完結 ✅ 業務委託者は初回登録のみ
リモートデスクトップで接続して設定 完結 ✅ 管理者が直接PCを操作する
PowerShellスクリプトを渡す 業務委託者の実行が必要 △ 本人が削除できるリスクあり

なぜファイアウォールが必要なのか

スプリットトンネリングだけでは「VPNがオフの時にポータルにアクセスできてしまう」問題は防げない。
VPNを切った状態でも、PCはポータルサイトへ直接つなごうとする。これを強制的に塞ぐのがファイアウォールの役割。

[VPN OFF の状態]
  PC → ポータルサイト宛通信 → ファイアウォールがブロック ❌(意図通り)
  PC → 一般サイト宛通信 → 通過 ✅

[VPN ON の状態]
  PC → ポータルサイト宛通信 → VPNトンネル経由 → 大阪 ✅
  PC → 一般サイト宛通信 → 直接通過 ✅

Windows Defender ファイアウォールでの設定手順(PowerShellスクリプト)

業務委託者のPCで以下のPowerShellスクリプトを管理者権限で実行してもらう(または社内で実行用exeにラップして配布する)。

# ポータルサイトのIPアドレスを変数で管理
$portalIP = "xxx.xxx.xxx.xxx"  # ←ポータルサイトのIPに置き換える

# ルール名
$ruleName = "Block_Portal_Without_VPN"

# 既存ルールを削除してから再作成(冪等性確保)
Remove-NetFirewallRule -DisplayName $ruleName -ErrorAction SilentlyContinue

# VPN未接続時(ローカルネットワーク経由)はポータルサイトへのアクセスをブロック
New-NetFirewallRule `
  -DisplayName $ruleName `
  -Direction Outbound `
  -RemoteAddress $portalIP `
  -Action Block `
  -Profile Any `
  -Description "VPN未接続時に業者間ポータルへの直接アクセスをブロック"

補足: VPN接続中はWindowsのルーティングテーブルが変わり、ポータルサイト宛のパケットはVPNインターフェース経由で送出されるため、上記ブロックルールの対象外になる(ブロックはVPN未接続時のみ有効)。

展開方法(MDM不明の場合)

方法 手順の複雑さ 強制力
PowerShellスクリプトをメール/Teamsで配布し、手動実行依頼 弱(本人に依存)
スクリプトをexe化して配布
タスクスケジューラでログオン時に自動実行
MDM(Intune)で強制適用 高(導入が必要)

メリット: - MDMがなくてもPowerShellスクリプト1本で設定できる - ログに残るため監査にも使いやすい

デメリット: - 業務委託者がPCの管理者権限を持つ場合、ルールを削除できてしまう - MDM不明のため強制展開の手段が限られる


対策C:ポータルサイト側でのIP制限依頼(最も確実だが交渉必要)

対応する要件: | 要件1:ポータルは必ずVPN経由 | 要件2:一般サイトはVPN経由しない | 要件3:VPN未接続時にポータルをブロック | |:-:|:-:|:-:| | ✅ カバー | ❌ カバーしない | ✅ カバー |

概要: ポータルサイト運営会社に「大阪VPNのIPアドレスからしかアクセスを受け付けないようにしてほしい」と依頼する。

メリット: - PC側の設定が不要 - 会社・業務委託者どちらに対しても完全制御できる - 最も確実な方法

デメリット: - ポータル側が対応してくれるとは限らない - VPNのIPが変わった場合に再申請が必要

対策D:キルスイッチ(VPN切断時の全通信遮断)

対応する要件: | 要件1:ポータルは必ずVPN経由 | 要件2:一般サイトはVPN経由しない | 要件3:VPN未接続時にポータルをブロック | |:-:|:-:|:-:| | ✅ カバー | ❌ カバーしない | ✅ カバー |

概要: VPN接続が切れた瞬間に、PCのすべての通信を自動でブロックする機能。ミレンVPNのクライアントに設定項目がある。

[VPN ON の状態]
  PC → 全通信 → VPNトンネル → 大阪 → インターネット

[VPN が切断された瞬間]
  PC → 全通信 → キルスイッチが遮断 ❌(ポータルも一般サイトも含めて全部ブロック)

メリット: - ミレンVPNのクライアント設定のみで完結(追加ツール不要) - VPN切断時にポータルへの意図しないアクセスを確実に防ぐ

デメリット: - VPN切断中は一般サイトも含めて全通信がブロックされる(要件2を満たさない) - スプリットトンネリングと組み合わせた場合、実装によっては一般サイトへの通信をキルスイッチが遮断しないケースがある(要確認)


対策の要件カバー一覧

対策 要件1:ポータルはVPN経由 要件2:一般サイトはVPN経由しない 要件3:VPN未接続時にポータルブロック
A:スプリットトンネリング
B:Windowsファイアウォール
C:ポータル側IP制限依頼
D:キルスイッチ
D + A(推奨)

推奨構成

前提:キルスイッチは未設定。ゼロから最適な組み合わせを選択する。

要件の優先度を踏まえた整理

要件 優先度
要件1:ポータルは必ずVPN経由 必須
要件2:一般サイトはVPN経由しない できれば
要件3:VPN未接続時にポータルをブロック 必須

組み合わせ別カバー状況

組み合わせ 要件1 要件2 要件3 実現難易度
D(キルスイッチ)のみ 低(ミレンVPN設定のみ)
A + D 中(OVPN編集が必要)
A + B 中(ファイアウォール展開が必要)
A + B + D 高(最も堅牢)

推奨:まずDのみ → 余裕があればAを追加

Step 1.【今すぐできる】キルスイッチを設定(対策D)
        → ミレンVPNクライアントの設定画面でON
        → 要件1・3(必須2つ)をカバー
        → 要件2(一般サイトの速度)は犠牲になるが、まず規約遵守を優先

Step 2.【次のステップ】スプリットトンネリングを追加(対策A)
        → ミレンVPNサポートにOVPN編集の可否を確認
        → ポータルサイトIP(210.148.162.49 等)のみVPN経由に設定
        → 要件2もカバーされ全要件が揃う

Step 3.【任意】ポータルサイト側にIP制限を依頼(対策C)
        → 最終的な安全策として追加

補足: 対策B(ファイアウォール)は対策Dと役割が重複するため、MDMが使える環境になるまでは後回しで構わない。


残課題・確認事項

確認項目 優先度 内容
ミレンVPNのOVPN編集可否 サポートに問い合わせ
ポータルサイトのIPアドレス特定 nslookup <ドメイン> で確認
業務委託者PCの管理者権限有無 ファイアウォール設定の実行可否に影響
MDM導入検討 長期的な管理強化として検討