*時代は変遷するもの… [#x50a1efe]
2017年からLibreSwanによるIPsec/L2TP VPNを構築しておりましたが、LibreSwanも、L2TPを噛ます方式ももうオワコンらしいです。
今やStrongSwanを使って、IKEv2によるIPsec VPNてのが流行らしいです。Android12もIKEv2が標準らしいので、そちらに以降してみます。
*IKEv2ってなんぞ [#gab2583d]
CiscoとMicrosoftで規定した、IPsecの鍵交換方式らしい。ネットワークが移動してもトンネルを維持できるので、モバイル機器に向いている、らしい。また、Microsoftが規定しているということは、Windowsとも相性がいい、らしい。
*設定 [#c71e3626]
**StrongSwanのインストール [#c4cd5791]
package.useファイルに以下の設定を追記。
net-vpn/strongswan eap farp
で、パッケージをインストールします。
# emerge strongswan
**StrongSwanの設定 [#fba2ebcc]
***サーバ証明書の設定 [#h9bfa9b1]
StrongSwanにはサーバ証明書が必要です。サーバ証明書には、
- サーバ認証局証明書
- サーバ公開鍵
- サーバ秘密鍵
これらは、ドメインを公開しているLet's encryptの証明書が使えるので、それをStorongSwanでも使えるように設定します。
# cd /etc/ipsec.d/cacerts
# ln -sfn /etc/letsencrypt/live/ドメイン名/chain.pem
# cd /etc/ipsec.d/certs
# ln -sfn /etc/letsencrypt/live/ドメイン名/cert.pem
# cd /etc/ipsec.d/private
# ln -sfn /etc/letsencrypt/live/ドメイン名/privkey.pem
また、ipsec.d以下はStrongSwanのユーザ/グループ名でしかアクセスできないように権限設定注意してくださいね。秘密鍵だだもれは恐ろしいので…
今回は、MSCHAPv2という、ユーザー/パスワードを入力する方式で行きます。
# vi /etc/ipsec.conf
# ipsec.conf - strongSwan IPsec configuration file
# basic configuration
config setup
# strictcrlpolicy=yes
# uniqueids = no
# Add connections here.
conn %default
keyexchange=ikev2
ike=aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha384-modp1536,aes256-sha256-modp1536,aes256-sha1-modp1536,aes256-sha384-modp1024,aes256-sha256-modp1024,aes256-sha1-modp1024!
esp=aes128gcm16-ecp256,aes256gcm16-ecp384,aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha384-modp1536,aes256-sha256-modp1536,aes256-sha1-modp1536,aes256-sha384-modp1024,aes256-sha256-modp1024,aes256-sha1-modp1024,aes128gcm16,aes256gcm16,aes128-sha256,aes128-sha1,aes256-sha384,aes256-sha256,aes256-sha1!
dpdaction=clear
dpddelay=300s
rekey=no
conn IPSec-IKEv2
keyexchange=ikev2
left=%any
leftsubnet=0.0.0.0/0
leftid=Let's encryptで届け出ているドメイン名
leftcert=cert.pem
leftsendcert=always
right=%any
rightid=%any
rightdns=DNSサーバアドレス
rightsourceip=端末に割り振るIPアドレス
auto=add
conn IPSec-IKEv2-EAP
also="IPSec-IKEv2"
rightauth=eap-mschapv2
eap_identity=%any
auto=add
最後に、パスフレーズを設定します。
# vi /etc/ipsec.secrets
# ipsec.secrets - strongSwan IPsec secrets file
: RSA privkey.pem
ユーザ名 : EAP "パスワード"
このipsec.secretsもStrongSwanのユーザしかアクセスできないようにしておいてくださいね…
さて…サーバの設定は終了
*IPフィルタの設定 [#r1c0ae3d]
iptables -t filter -A INPUT -p udp -m udp --dport 500 -j ACCEPT
iptables -t filter -A INPUT -p udp -m udp --dport 4500 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -m udp --sport 4500 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -m udp --sport 500 -j ACCEPT
IKE鍵交換プロトコルと、IPsecのESP((Encapseled Security Payload))を受信するためのポートをオープンします。
更に、NAPTなブロードバンドルータに、UDP 4500 とUDP 500をサーバにNAT変換するアドレス変換テーブルを設定します。
*接続してみよう [#ddafd69c]
**サーバ群起動 [#b694e07a]
# /etc/init.d/ipsec start
**Android側設定 [#q9b2cffb]
端末設定→その他→VPN→VPNの追加 選択
:名前|適当につけて
:タイプ|IKEv2/IPSec mschapv2
:サーバアドレス|IPsecサーバのIPアドレス若しくはホスト名
:ユーザ名|/etc/ipsec.secretsに設定したユーザ名
:パスワード|/etc/ipsec.secretsに設定したパスワード
んで、保存。接続するときは
で接続をタップ。
**Windows側設定 [#v85d9007]
Windows10は『設定』→ネットワークとインターネット→VPN→VPN接続を追加する
:VPNプロバイダ|Windowsビルドイン
:名前|適当につけて
:サーバアドレス|IPsecサーバのIPアドレス若しくはホスト名
:サインイン情報の種類|ユーザ名とパスワード
:ユーザ名(オプション)|/etc/ipsec.secretsに設定したユーザ名
:パスワード(オプション)|/etc/ipsec.secretsに設定したパスワード
でVPN接続が作られます。タスクバーの通知アイコンのネットワークを開くと、VPN接続のアイコンができております。クリックして接続を押すと、設定がうまくできてれば、接続確立します!
- Gentoo Linuxな生活/IKEv2 VPNで悩む のバックアップソース(No. All)
- 現: 2022-02-20 (日) 21:15:31 maruo