始めに
この記事は失敗談です
書きながら進めていたので、節々できそうな書き方していますが、出来ていないです。
知識不足で出来なかったというより、おそらく非対応。
使用環境は YAMAHA RTX1200 ですが、同じくヤマハのVPNルーターである、RTX830, RTX810, RTX1210, RTX3500 等でも同様のはず。
L2TP/IPSec VPN 自体はこちら [RTX1200 で L2TP/IPsec の VPN を構築する] の様に設定済みであることを想定します。
コマンド中に 1
などの数字が出てきますが、GATEWAY_ID だったり CERT_ID だったりします。
CERT_IDについては本記事中で設定していますが、GATEWAY_IDについては本記事中で設定していません。
上記記事通りに設定してあると仮定しての値になります。
詳しくは参考として貼ってある公式のコマンドリファレンスを参照してください。
設定状態によって数字が変わってくるので注意してください。
証明書の準備
オレオレ証明書について
この環境はあくまでプライペーとの環境で、使用頻度がそこまで高くないため、証明書の期限を気にするのが面倒に感じ、
PSKに戻す前提で、実験のため所謂オレオレ証明書を使おうと思いましたが、、、
PKI証明書を利用するための仕様は次の通りです。
・証明書の公開鍵暗号方式RSA、署名方式SHA1に対応します。
・ルーターの機器証明書を書き込む際のファイル形式として、PKCS#12に対応します。
・ルーターの機器証明書は、ルートCAによって署名された証明書である必要があります。
・ルーターの機器証明書として自己署名の証明書を使用することはできません。
・証明書失効リスト(CRL)を使用して相手から受信した証明書の失効確認を行うことができます。
・CA証明書、およびCRLを書き込む際のファイル形式として、X.509 PEMに対応します。
…
ルーターの機器証明書として自己署名の証明書を使用することはできません。
オレオレ証明書ではダメでした。
Let's Encrypt のSSLサーバー証明書をPKCS#12に変換して使用する
CLI で certbot
を --standalone
や --manual
で実行してみていたのですが、どうもうまく行かなかったので、
Synology NAS経由で発行したものを使いました。
参考: https://qiita.com/mizutoki79/items/7702bd12da3373f425ea
(この辺はまた別の機会に検証)
Let's Encrypt で発行されるファイルは
cert.pem
chain.pem
-
privkey.pem
なので、これを PCKS#12 に変換します。
参考: web net FORCE - Let’s Encrypt(Certbot)のSSLサーバー証明書をP12形式(PKCS12)に変換してメールサーバー等で使用する
※ Windowsでopenssl
が入っていない場合はscoop install openssl
でインストール出来ますし、wslを使うことも出来ます。
openssl pkcs12 -export -in .\cert.pem -inkey .\privkey.pem -certfile .\chain.pem -out cert.p12
パスワードを求められるので、設定しましょう。
これでカレントディレクトリにPKCS#12形式のPKIファイルが生成されました。
PKIファイルをルーターに保存する
PC からルーターへのファイル保存には tftp
を利用出来ます。
Windowsでtftpを使える様にする
# 検索
Get-WindowsOptionalFeature -Online | ? FeatureName -Match 'tftp'
# 有効化
Enable-WindowsOptionalFeature -Online -FeatureName TFTP
# 確認
gcm tftp
ルーター側でtftpを許可する
参考: rtpro - コマンドの使い方 - 2.3.1 TFTP による設定手順
参考: rtpro - RTFS
デフォルトでは全てのホストからのtftpは許可されていません
※ 作業が終了したら全てのホストからのtftpを拒否するように設定を戻しておきます。
> telnet 192.168.100.1 # ルーターのプライベートIPアドレス
> administrator
Password:
# tftp host 192.168.100.x # 送信元となる PC のプライベートIPアドレス
# save
PCからファイルを送信します
tftp -i 192.168.100.1 put .\cert.p12 /cert.p12/'ルーターの管理者パスワード'
これでRTFSのルートディレクトリ直下にファイルが置かれます
再度ルーターにログインしてtelnet接続状態で下記コマンドを叩くとファイルが保存されていることを確認出来ます。
show file list /
ルーターのVPNに証明書を設定する
参考: rtpro - IPsec/IKE デジタル署名、EAP-MD5認証対応
ルーターに管理者としてログインします
# pki certificate file 1 /cert.p12 pkcs12 'PKCS12ファイル作成時に設定したパスワード'
# show pki certificate summary 1
ここで CERT_ID が 1
に設定されています。
ちゃんと復号出来ていれば証明書の内容が表示されます
参考: rtpro - 18.50.1 証明書ファイルの設定
# tunnel select 1
tunnel1# ipsec tunnel 1
tunnel1# ipsec ike auth method 1 certificate
tunnel1# ipsec ike pki file 1 certificate=1
tunnel1# save
# ipsec ike auth method 1 certificate
の部分、IKE認証方式をデジタル証明書方式に設定しています
これはデフォルトで auto
になっていて、autoの優先順位としては
- 事前共有鍵方式
- デジタル署名方式
- EAP-MD5方式
となっています。
事前共有鍵の場合、対象の設定しかしない場合は auto のままで問題無いですが、
今回は事前共有鍵の設定を残したままデジタル署名方式の設定を適応させたいので、設定しておきました。
ここから何がダメだったのかの話
先ほど、証明書を使うように指定したコマンド ipsec ike auth method 1 certificate
と ipsec ike pki file 1 certificate=1
について
こちら [rtpro - IPsec/IKE デジタル署名、EAP-MD5認証対応] に書いてあるノートを見ると
本コマンドはIKEv2でのみ有効であり、IKEv1の動作に影響を与えない。
とあります。
では、こちら [rtpro - IKEv2] を参考に IKEv2移行作業を行っていきます。
IKEv1 からの移行について上記記事では以下のように書かれています。
IKEv1からIKEv2への移行
これまでIPsec(IKEv1)を運用されてきた場合は、既存の設定を流用しながらIKEv2へ移行することができます。主な違いは、ipsec ike remote nameコマンドとipsec ike local nameコマンドの設定が共に必須になっている点と、ipsec ike versionコマンドで明示的にIKEv2の使用を宣言する必要があるという点です。
※ 上記記事を読んで頂けたら分かりますが、IKEv2でのみ有効でIKEv1の動作に影響を与えないコマンドがあるようにその逆にIKEv1でのみ有効でIKEv2の動作に影響を与えないコマンドもたくさんありますので、実際に移行する際にはその点にも注意してください。
ipsec ike remote name
/ ipsec ike local name
への理解が不十分のままですが、
# tunnel select 1
tunnel1# ipsec tunnel 1
tunnel1# ipsec ike version 1 2
tunnel1# ipsec ike local name 2 192.168.100.1 ipv4-addr
tunnel1# ipsec ike remote name 2 xxx.xxx.xxx.xxx ipv4-addr # 実際に接続するクライアントのIPアドレス
tunnel1# save
しかし、クライアントに証明書をインポートしてみましたが、どうにも動きません。
一旦クライアントの設定もPSKに戻し、
IKEv1 に戻し、remote name
を消してみたら接続出来たので、local name
は合っているように思います。
IKEv1 の状態で、 local name
を消し、 remote name
は上記設定にしたら接続出来なかったので、 remote name
の設定は間違っているかもしれません。
さらに先ほどの IKEv2 の記事を見てみると以下の記述があります。
以下の機能には対応していません。
未対応/非対応機能一覧
IPComp
Vender ID ペイロード
Configuration ペイロード
トランスポートモード
はい、そうです。
L2TP/IPsecではトンネルはL2TPで構築するので、IPsecはトランスポートモードで使用します。
なので、私の理解が正しければ、
現状YAMAHAルーターでL2TP/IPsecで証明書認証は構築出来ず、拠点間通信のIPSecでのみ証明書認証のIKEv2を設定出来るという状況だと思います。
ちなみにトランスポートモード/トンネルモードの違いについてはこちらが分かりやすいと思います。
ネットワークエンジニアとして - IPsec - Transport mode / Tunnel mode
設定を戻す
基本的に消したいコマンドの先頭に no
をつければ設定を消せるので、
# no tftp host
# no pki certificate file 1
# tunnel select 1
tunnel1# ipsec tunnel 1
tunnel1# no ipsec ike auth method 1
tunnel1# no ipsec ike version 1
というように消していけばよい。
ファイルの削除は
# delete /cert.p12
で行える。
参考: rtpro - RTFS