設定例集#123: 2要素認証に電子メール通知を使用したOpenVPNによるリモートアクセス
Windows OSやMAC OS X等のOpenVPNクライアントからインターネット経由で本製品のLAN側プライベートネットワークにアクセスさせるリモートアクセス型VPNの設定例です。
本設定では2要素認証により、ユーザー名、パスワードだけでなく認証コードも使用することでセキュリティーを高めます。
なお、本設定では接続するクライアントの認証コードを電子メールにて通知するようにします。
また、ダイナミックDNS機能を併用することにより、FQDNでの接続を実施します。
構成
ISPから提供された情報
ISP接続用ユーザー名
user@isp
ISP接続用パスワード
isppasswd
PPPoEサービス名
指定なし
WAN側IPアドレス
動的割り当て(IPCP)
接続形態
端末型(アドレスは動的割り当て)
ルーターの基本設定
WAN側物理インターフェース
eth1
WAN側(ppp0)IPアドレス
接続時にISPから取得
LAN側(vlan1)IPアドレス(1)
192.168.10.1/24
LAN側(vlan2)IPアドレス(2)
192.168.30.1/24
OpenVPNトンネルインターフェース
tunnel0(Tun(L3)モード)
OpenVPNトンネルインターフェースIPアドレス
192.168.20.1/24
OpenVPNクライアントのアカウント情報
OpenVPNユーザー
ユーザー名
パスワード
IPアドレス
ユーザー01
user01
passwd01
192.168.20.11~192.168.20.20から割り当て
ユーザー02
user02
passwd02
ユーザー03
user03
passwd03
2要素認証のユーザー情報
ユーザー名
認証コード通知方式
user01
電子メール
user02
電子メール
user03
電子メール
ダイナミックDNSサービス情報
更新専用URL
https://example.com
サーバー接続用ユーザー名
ddns_user
サーバー接続用パスワード
ddns_pass
ホスト名
test.example.com
メール(SMTP)サーバー情報
SMTPサーバーアドレス
198.51.100.1
SMTPサーバー認証方式
PLAIN認証
ユーザー名
reporter
パスワード
s3|=123+
デバイスの電子メールアドレス
reporter@example.com
設定開始前に
自動設定の確認と削除
本設定例に掲載されているコマンドは、設定がまったく行われていない本製品の初期状態(スタートアップコンフィグなしで起動した状態)から入力することを前提としています。
そのため、通常は erase startup-config を実行し、スタートアップコンフィグが存在しない状態で起動してから、設定を始めてください。
ただし、本製品はスタートアップコンフィグなしで起動した場合でも、特定の条件を満たすと自動的な設定を行うことがあるため、その場合は設定例にしたがってコマンドを入力しても、コマンドがエラーになったり、全体として意図した動作にならない可能性があります。
これを避けるため、設定開始にあたっては次のいずれかの方法をとることをおすすめします。
ネットワークケーブルを接続せずに起動する。
起動時に自動設定が実行されるための条件の一つに、特定インターフェースのリンクアップがあります。
ネットワークケーブルを接続しない状態で起動することにより、自動設定の適用を回避できます。
自動設定を手動で削除してから設定を行う。
前記の方法を採用できず自動設定が適用されてしまった場合は、「自動的な設定内容の削除」 にしたがって、これらを手動で削除してから設定を開始してください。
自動設定が行われる条件などの詳細については、AMF応用編のAMFネットワーク未検出時の拡張動作 をご参照ください。
システム時刻の設定
ログなどの記録日時を正確に保ち、各種機能を適切に動作させるため、システム時刻は正確にあわせて運用することをおすすめします。
ご使用の環境にあわせ、次のいずれかの方法でシステム時刻を設定してください。
ルーターの設定
LANポートにおいて初期状態で有効化されているスパニングツリープロトコル(RSTP)を無効化します。これにはspanning-tree enable コマンドをno形式で実行します。
スパニングツリープロトコルの詳細は「L2スイッチング」/「スパニングツリープロトコル」 をご覧ください。
no spanning-tree rstp enable
ダイナミックDNSクライアント機能を有効にします。これには、ddns enable コマンドを使います。
ダイナミックDNSクライアント機能の詳細は「IP付加機能」/「ダイナミックDNSクライアント」 をご覧ください。
ddns enable
ダイナミックDNSサービス固有の設定を行います。これには、ddns-update-method コマンドでDDNSアップデートメソッドモードに入り、update-url 、host-name 、username 、password 、update-interval の各コマンドで具体的なパラメーターを設定します。
※クエリーパラメーターの開始を表す「?
」をCLIから入力するには、Ctrl/V
キーを入力してから ?
を入力してください。単に ?
を入力するとCLIヘルプが表示されてしまうためご注意ください。
ddns-update-method dyn_update
update-url https://example.com?user=<USERNAME>&pwd=<PASSWORD>&host=<HOST-NAME>
host-name test.example.com
username ddns_user
password ddns_pass
update-interval 3600
WANポートeth1上にPPPoEインターフェースppp0を作成します。これには、encapsulation ppp コマンドを使います。
PPPの詳細は「PPP」/「一般設定」 をご覧ください。
interface eth1
encapsulation ppp 0
PPPインターフェースppp0に対し、PPPoE接続のための設定を行います。
・ダイナミックDNSクライアント機能によるIPアドレスの登録(ip ddns-update-method )
・IPCPによるDNSサーバーアドレスの取得要求(ppp ipcp dns )
・LCP EchoによるPPP接続状態の確認(keepalive )
・IPCPによるIPアドレスの取得要求(ip address negotiated )
・ユーザー名(ppp username )
・パスワード(ppp password )
・MSS書き換え(ip tcp adjust-mss )
PPPの詳細は「PPP」/「一般設定」 をご覧ください。
interface ppp0
ip ddns-update-method dyn_update
ppp ipcp dns request
keepalive
ip address negotiated
ppp username user@isp
ppp password isppasswd
ip tcp adjust-mss pmtu
VLANを作成します。
これには、vlan database コマンドとvlan コマンドを使います。
VLANの詳細は「L2スイッチング」/「バーチャルLAN」 をご覧ください。
vlan database
vlan 2
LANポート1.0.3~1.0.4をvlan2のタグなしポートに設定します。
これには、switchport access vlan コマンドを使います。
VLANについては「L2スイッチング」/「バーチャルLAN」 をご覧ください。
interface port1.0.3-1.0.4
switchport access vlan 2
LAN側インターフェースvlan1とvlan2にIPアドレスを設定します。これにはip address コマンドを使います。
IPインターフェースの詳細は「IP」/「IPインターフェース」 をご覧ください。
interface vlan1
ip address 192.168.10.1/24
interface vlan2
ip address 192.168.30.1/24
ファイアウォールやNATのルール作成時に使うエンティティー(通信主体)を定義します。
エンティティー定義の詳細は「UTM」/「エンティティー定義」 をご覧ください。
内部ネットワークを表すゾーン「private」を作成します。
これには、zone 、network 、ip subnet の各コマンドを使います。
zone private
network lan
ip subnet 192.168.10.0/24
ip subnet 192.168.20.0/24
ip subnet 192.168.30.0/24
外部ネットワークを表すゾーン「public」を作成します。
zone public
network wan
ip subnet 0.0.0.0/0 interface ppp0
host ppp0
ip address dynamic interface ppp0
外部からの通信を遮断しつつ、内部からの通信は自由に行えるようにするファイアウォール機能の設定を行います。
これには、firewall 、rule 、protect の各コマンドを使います。
・rule 10 - 内部から内部への通信を許可します
・rule 20 - 内部から外部への通信を許可します
・rule 30 - 本製品のWAN側インターフェースから外部への通信を許可します
・rule 40 - 外部から本製品のWAN側インターフェースへのOpenVPN通信を許可します
ファイアウォールの詳細は「UTM」/「ファイアウォール」 をご覧ください。
firewall
rule 10 permit any from private to private
rule 20 permit any from private to public
rule 30 permit any from public.wan.ppp0 to public.wan
rule 40 permit openvpn from public.wan to public.wan.ppp0
protect
LAN側ネットワークに接続されているすべてのコンピューターがダイナミックENAT機能を使用できるよう設定します。
これには、nat 、rule 、enable の各コマンドを使います。
NATの詳細は「UTM」/「NAT」 をご覧ください。
nat
rule 10 masq any from private to public
enable
CA証明書とサーバー証明書を準備するため、ローカルCAの設定を行います。
・ローカルCA「local」のセットアップ(crypto pki trustpoint )
・ローカルCAが発行するサーバー証明書のサブジェクト代替名(subject-alt-name )
・ローカルCAが発行するサーバー証明書のサブジェクト名(subject-name )
ローカルCAの詳細は「運用・管理」/「ローカルCA」 をご覧ください。
crypto pki trustpoint local
subject-alt-name test.example.com
subject-name /O=AlliedTelesis/CN=test.example.com
RADIUSクライアント機能が使用するRADIUSサーバーを登録します。これにはradius-server host コマンドを使います。
ここでは、本製品内蔵のローカルRADIUSサーバーを指定しています。
RADIUSクライアント機能の詳細は「運用・管理」/「RADIUSクライアント」 を、ローカルRADIUSサーバーの詳細は「運用・管理」/「RADIUSサーバー」 をご覧ください。
radius-server host localhost key awplus-local-radius-server
OpenVPNで使用するRADIUSサーバーを指定します。これにはaaa authentication openvpn コマンドを使います。
※ 使用するOpenVPNクライアントが2FA認証コードの入力に対応していない場合(認証コードの入力欄や入力画面がない場合など)は、aaa authentication openvpn コマンドの 2fa-in-password オプションを使用することで、通常のパスワードの一部として認証コードを受け取ることが可能です。
aaa authentication openvpn default group radius 2fa
ローカルRADIUSサーバーにOpenVPNユーザーを登録します。
これには、radius-server local 、server enable 、group 、user の各コマンドを使います。
ローカルRADIUSサーバーの詳細は「運用・管理」/「RADIUSサーバー」 をご覧ください。
※ crypto pki trustpoint、crypto pki enroll、nasは、radius-server local コマンドの初回実行時に自動実行されるため、手動で入力する必要はありませんが、入力してもかまいません。
crypto pki trustpoint local
crypto pki enroll local
radius-server local
server enable
nas 127.0.0.1 key awplus-local-radius-server
group route
attribute Framed-Route "192.168.10.0/24 192.168.20.1"
attribute Framed-Route "192.168.30.0/24 192.168.20.1"
user user01 password passwd01 group route
user user02 password passwd02 group route
user user03 password passwd03 group route
2要素認証サービスを有効にします。
これには、service 2fa 、2fa skew-adjust 、2fa totp-window-size 、2fa email-otp の各コマンドを使います。
※ 2要素認証ユーザーのメールアドレスの登録は別途特権EXECモードで実行します。2要素認証ユーザーのメールアドレスを登録 をご覧ください。
service 2fa
2fa skew-adjust
2fa totp-window-size 5
2fa email-otp
電子メール送信機能の設定をします。
これには、mail smtpserver 、mail smtpserver authentication 、mail from の各コマンドを使います。
mail smtpserver 198.51.100.1
mail smtpserver authentication plain username reporter password s3|=123+
mail from reporter@example.com
OpenVPN Tun(L3)トンネルインターフェースtunnel0を作成します。
トンネルインターフェースの詳細は「VPN」/「トンネルインターフェース」 を、OpenVPNの詳細は「VPN」/「OpenVPN」 をご覧ください。
これには、interface コマンドでトンネルインターフェースを作成し、以下の情報を設定します。
・トンネルインターフェースで使用するIPv4アドレスプール(tunnel openvpn ip-pool )
・トンネリング方式(tunnel mode openvpn tun )
・トンネルインターフェースのIPアドレス(ip address )
・トンネルインターフェースにおけるMSS書き換え設定(ip tcp adjust-mss )
interface tunnel0
tunnel openvpn ip-pool range 192.168.20.11 192.168.20.20 mask 255.255.255.0
tunnel mode openvpn tun
ip address 192.168.20.1/24
ip tcp adjust-mss pmtu
デフォルト経路をPPPインターフェースppp0に向けます。これにはip route コマンドを使います。
IP経路設定の詳細は「IP」/「経路制御」 をご覧ください。
ip route 0.0.0.0/0 ppp0
以上で設定は完了です。
end
設定の保存
■ 設定が完了したら、現在の設定内容を起動時コンフィグとして保存してください。これには、copy コマンドを「copy running-config startup-config
」の書式で実行します。
awplus# copy running-config startup-config ↓
Building configuration...
[OK]
また、write file コマンド、write memory コマンドでも同じことができます。
awplus# write memory ↓
Building configuration...
[OK]
その他、設定保存の詳細については「運用・管理」/「コンフィグレーション」 をご覧ください。
ファイアウォールログについて
■ ファイアウォールのログをとるには、次のコマンド(log(filter) )を実行します。
awplus(config)# log buffered level informational facility local5 ↓
■ 記録されたログを見るには、次のコマンド(show log )を実行します。ここでは、ファイアウォールが出力したログメッセージだけを表示させています。
awplus# show log | include Firewall ↓
OpenVPNクライアントの設定ファイル例
OpenVPNクライアントの設定ファイルは、通常拡張子「.ovpn」のテキストファイルとして保存します。
以下は本構成に対応する設定ファイルのサンプルです(Windows、MacOS X、Android版クライアント用)。
# OpenVPNサーバー(ルーター)と接続先ポートの指定
remote test.example.com 1194 udp
# 経路情報等をサーバーから取得する
pull
# TLSクライアントを有効にする
tls-client
# 使用する暗号形式
cipher AES-128-CBC
# デジタル署名形式
auth SHA1
# TLSのバージョン
tls-version-min 1.2
# TLSの形式
tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA
explicit-exit-notify
# ユーザー名・パスワード認証を有効にする
auth-user-pass
# ルーターから取得したローカルCAの自署ルート証明書
ca cacert.pem
# keepaliveの送信間隔とタイムアウトの時間
keepalive 10 120
# 使用するモード(Tunモード)
dev tun
# インターフェースのIPをサーバーから取得する
float
# IPv6のトンネリングを有効にする(Tunモードのみ)
tun-ipv6
# トンネルを有効にする
topology subnet
# 暗号化前のパケットのTOS値を暗号化後のパケットにコピーする
passtos
# 接続に使用するポート番号
port 1194
# ログのレベル(0~7)。0はログを生成せず、数が大きくなるほど詳細なログを表示する
verb 3
# パスワードの保存を無効にする
setenv ALLOW_PASSWORD_SAVE 0
なお、iOS版クライアントを使用する場合は、上記クライアント設定ファイルに下記の2行を追加してください。
詳しくはOpenVPN解説編の「iOS版クライアントを使用する場合」 をご覧ください。
route 192.168.10.0 255.255.255.0
setenv CLIENT_CERT 0
上記の設定ファイル例は参考のために示した最小限の設定であり、動作を保証するものではありません。使用するクライアントやそのバージョン、OS、ネットワーク環境などによって必要な設定は異なりますので、あらかじめご了承ください。
2要素認証ユーザーのメールアドレスを登録
2要素認証ユーザーのメールアドレスの登録は、特権EXECモードの2fa create user email コマンドで行います。
2要素認証ユーザー設定はコマンド実行時にシステムファイルに保存されるため、copy コマンドやwrite file コマンド、write memory コマンドなどでコンフィグに保存する必要はありません。
awplus# 2fa create user user01 email user01@example.com ↓
awplus# 2fa create user user02 email user02@example.com ↓
awplus# 2fa create user user03 email user03@example.com ↓
接続手順
ルーターの設定を行う。
ルーター内蔵ローカルCAの自署ルート証明書を取得する (crypto pki export local pem url FILEPATH_TO_EXPORT)。
OpenVPNクライアントの設定ファイル(.ovpnファイル)を作成する。
OpenVPNクライアントの設定ファイル(.ovpnファイル)と、ルーター内蔵ローカルCAの自署ルート証明書をクライアントに移す(移し方はクライアントアプリによって変わる)。
ルーターに2要素認証を行うクライアントの電子メール情報を登録する。
クライアントから接続を開始し、電子メールにて認証コードを受信する。
認証コードを入力する。
備考
本構成例のようにOpenVPNのTun(L3)モードを使用する場合は、クライアントへのIP設定情報提供にRADIUS属性を使う必要があります。
しかし、もう一つのモードであるTap(L2)モードを使用する場合は、RADIUS属性だけでなくDHCPでIP設定情報を提供することも可能です。
Android版およびiOS版クライアントではTap(L2)モードでのOpenVPN接続は未サポートです。
OpenVPN Tap(L2)モード構成時に本製品のDHCPサーバー機能を利用してIP設定情報を提供する場合は、ローカルRADIUSサーバーの設定はユーザー認証に関する部分だけでよく、ユーザーグループの設定は不要です。また、DHCPサーバーの設定は、OpenVPN Tap(L2)トンネルインターフェースのサブネットに対応するDHCPプールを作成すれば完了です。
Tapモードの設定
Tapモード時は、上記のTunモード時の設定のローカルRADIUSとトンネルインターフェースの設定を以下のように変更し、DHCPプールの設定を加えてください。
radius-server local
server enable
nas 127.0.0.1 key awplus-local-radius-server
user user01 password passwd01
user user02 password passwd02
user user03 password passwd03
!
interface tunnel0
ip address 192.168.20.1/24
tunnel mode openvpn tap
ip tcp adjust-mss 1260
!
ip dhcp option 121 name Classless-Static-Route hex
!
ip dhcp pool pool10
network 192.168.20.0 255.255.255.0
range 192.168.20.2 192.168.20.10
option Classless-Static-Route 18c0a80ac0a8140118c0a81ec0a81401
lease 0 2 0
subnet-mask 255.255.255.0
!
service dhcp-server
本製品のDHCPサーバー機能を利用してOpenVPNクライアントにIPアドレスを提供する場合は、ip dhcp option コマンドで定義した DHCPオプション121(Classless Static Route Option)を用いてスタティック経路を通知してください。
option コマンドで指定している 18c0a80ac0a8140118c0a81ec0a81401
は、各経路の「宛先ネットワークマスク長、宛先ネットワークアドレス、ネクストホップアドレス」を16進数表記で連結したもので、次のように解釈します。
16進表記
10進表記
説明
経路エントリー #1 (宛先 192.168.10/24 ネクストホップ 192.168.20.1)
18
24
宛先マスク長
c0 a8 0a
192 168 10
宛先アドレス
c0 a8 14 01
192 168 20 1
ネクストホップアドレス
経路エントリー #2 (宛先 192.168.30/24 ネクストホップ 192.168.20.1)
18
24
宛先マスク長
c0 a8 1e
192 168 30
宛先アドレス
c0 a8 14 01
192 168 20 1
ネクストホップアドレス
ルーターのコンフィグ
!
no spanning-tree rstp enable
!
ddns enable
!
ddns-update-method dyn_update
update-url https://example.com?user=<USERNAME>&pwd=<PASSWORD>&host=<HOST-NAME>
host-name test.example.com
username ddns_user
password ddns_pass
update-interval 3600
!
interface eth1
encapsulation ppp 0
!
interface ppp0
ip ddns-update-method dyn_update
ppp ipcp dns request
keepalive
ip address negotiated
ppp username user@isp
ppp password isppasswd
ip tcp adjust-mss pmtu
!
vlan database
vlan 2
!
interface port1.0.3-1.0.4
switchport access vlan 2
!
interface vlan1
ip address 192.168.10.1/24
interface vlan2
ip address 192.168.30.1/24
!
zone private
network lan
ip subnet 192.168.10.0/24
ip subnet 192.168.20.0/24
ip subnet 192.168.30.0/24
!
zone public
network wan
ip subnet 0.0.0.0/0 interface ppp0
host ppp0
ip address dynamic interface ppp0
!
firewall
rule 10 permit any from private to private
rule 20 permit any from private to public
rule 30 permit any from public.wan.ppp0 to public.wan
rule 40 permit openvpn from public.wan to public.wan.ppp0
protect
!
nat
rule 10 masq any from private to public
enable
!
crypto pki trustpoint local
subject-alt-name test.example.com
subject-name /O=AlliedTelesis/CN=test.example.com
!
radius-server host localhost key awplus-local-radius-server
!
aaa authentication openvpn default group radius 2fa
!
crypto pki trustpoint local
crypto pki enroll local
radius-server local
server enable
nas 127.0.0.1 key awplus-local-radius-server
group route
attribute Framed-Route "192.168.10.0/24 192.168.20.1"
attribute Framed-Route "192.168.30.0/24 192.168.20.1"
user user01 password passwd01 group route
user user02 password passwd02 group route
user user03 password passwd03 group route
!
service 2fa
2fa skew-adjust
2fa totp-window-size 5
2fa email-otp
!
mail smtpserver 198.51.100.1
mail smtpserver authentication plain username reporter password s3|=123+
mail from reporter@example.com
!
interface tunnel0
tunnel openvpn ip-pool range 192.168.20.11 192.168.20.20 mask 255.255.255.0
tunnel mode openvpn tun
ip address 192.168.20.1/24
ip tcp adjust-mss pmtu
!
ip route 0.0.0.0/0 ppp0
!
end
(C) 2015 - 2025 アライドテレシスホールディングス株式会社
PN: 613-002107 Rev.BF