ここは、これまで作ってきた設定を「実際にクライアントから見える入口(URL)」として完成させるステップです。
ざっくり言うと、
「ASA の outside に正しい IP を付けて、ルーティング・DNS・FW を整え、
https://~で到達できるようにする」
という作業です。
Contents
1)outside インターフェースにグローバル到達可能な IP を付ける
まず、VPN クライアントがインターネット経由で到達できる IP が必要です。
conf t
interface outside
nameif outside
security-level 0
ip address 203.0.113.1 255.255.255.0 ! 例:プロバイダからもらったGlobal
exit
! デフォルトルート(インターネット側へ)
route outside 0.0.0.0 0.0.0.0 203.0.113.254
ip address:クライアントが接続する IP アドレスroute outside:インターネットへの出口
もし ASA が「DMZ の中」にいて、さらに上位 FW でグローバルに NAT する構成なら、
- ASA outside:プライベート IP(例:10.0.0.2)
- 上位 FW がグローバル(例:203.0.113.1)へ NAT
- クライアントは
https://203.0.113.1/にアクセス
→ 上位 FW で ASA へ 443 をフォワード
という形になります。
2)DNS(FQDN)と URL の決め方
使いたいホスト名を決めて、DNS に A レコードを登録します:
- 例)
vpn.example.com→203.0.113.1
クライアントが使う URL は基本こんな感じになります:
- シンプルに IP 指定
https://203.0.113.1/ - ちゃんと証明書も合わせる場合(推奨)
https://vpn.example.com/
④で group-url を設定している場合は、その URL で直接特定トンネルグループに入れます:
tunnel-group ANYCONNECT webvpn-attributes
group-alias "Company VPN" enable
group-url https://vpn.example.com/emp enable
社員に案内する URL 例:https://vpn.example.com/emp
3)outside まで HTTPS (TCP 443) が届くようにする
3-1. ASA 自身の設定(WebVPN)
⑥でやったように、webvpn を outside で有効にします:
conf t
webvpn
enable outside ! outside で WebVPN/AnyConnect を受け付ける
port 443 ! 待ち受けポート(変えたければ port 8443 など)
anyconnect enable ! AnyConnect 機能を有効化
exit
ここまでで、「ASA は outside:443 で AnyConnect を受け付ける状態」になります。
3-2. ASA 外側の FW/ルーター(がいる場合)
上位 FW や ISP ルータがある場合は、
203.0.113.1宛の TCP 443 を ASA に流す- ACL やセキュリティポリシーで 443 を許可する
ことが必要です。構成によって、
- 静的 NAT(global IP → ASA outside IP)
- その NAT に対して 443 を許可するセキュリティポリシー
などを設定します。
3-3. ASA の ACL で塞いでいないか?
outside インターフェースに ACL を貼っている場合は、外からの 443 を許可します:
! 例:outside_in ACL を outside に適用している場合
access-list outside_in extended permit tcp any host 203.0.113.1 eq 443
access-group outside_in in interface outside
4)管理用 HTTPS(ASDM)とのポート被りに注意
ASA には「管理用の HTTPS(ASDM 用)」もありますが、
これは webvpn とは別の設定です。
conf t
http server enable 4443 ! ASDM 用を 4443 にする例
http 192.168.10.0 255.255.255.0 inside ! 管理は inside からのみ許可
exit
- WebVPN/AnyConnect:
webvpnのport(デフォルト 443) - ASDM 管理:
http server enable <port>(例:4443)
というふうにポートを分けておくとトラブルが減ります。
5)証明書の最終紐付け(FQDN と揃える)
実運用では必須レベルです。
- 事前に
ssl-trustpoint-VPNのような trustpoint を作成/インポートしておく
(CN or SAN にvpn.example.comを含む証明書) - outside に紐付け:
conf t
ssl trust-point ssl-trustpoint-VPN outside
exit
これで、
- クライアントが
https://vpn.example.com/へアクセス - ASA outside が
ssl-trustpoint-VPNの証明書で応答
となり、証明書警告が出にくくなります。
6)クライアントからの接続イメージ(URL の使い方)
- ブラウザまたは AnyConnect で
https://vpn.example.com/またはhttps://203.0.113.1/ - ④で
group-aliasを設定していれば、ポータル画面でプルダウンに表示されます:tunnel-group ANYCONNECT webvpn-attributes group-alias "Company VPN" enable group-url https://vpn.example.com/emp enable- ブラウザ:グループ選択 → ユーザー名/パスワード入力 → AnyConnect 起動
- 直接:
- URL
https://vpn.example.com/empを指定してすぐ ANYCONNECT グループに接続 - AnyConnect クライアントに
vpn.example.com/empを登録
- URL
- 認証成功後、③で作った IP プールのアドレスがクライアントに割り当てられる
7)ここまで終えたら行う確認コマンド
ASA 側
! webvpn の状態
show run webvpn
show webvpn
! SSL/証明書の確認
show run ssl
! インターフェース/ルート
show run interface outside
show route
! 実際のセッション
show vpn-sessiondb anyconnect
show webvpn session
疑わしいときに便利なコマンド
! インターネット側からの 443 を ASA 内部でシミュレーション
packet-tracer input outside tcp <クライアント想定IP> 12345 203.0.113.1 443
result: ALLOWになれば、ASA 内部では 443 が通る状態です
→ それでもダメなら「ASA の外(上位FW・ルータ)」が怪しい
8)まとめ(⑦でやること)
- outside にグローバル到達可能な IP とデフォルトルートを設定
- DNS で FQDN → outside IP を引けるようにする(
vpn.example.comなど) - 外からの TCP 443(or 指定ポート)を ASA に通す(上位 FW/ACL/NAT)
- 証明書を outside に割り当て、FQDN と合うようにする
- クライアントは
https://<outside IP or FQDN>/(or group-url)で接続