時代は変遷するもの…
2017年からLibreSwanによるIPsec/L2TP VPNを構築しておりましたが、LibreSwanも、L2TPを噛ます方式ももうオワコンらしいです。
今やStrongSwanを使って、IKEv2によるIPsec VPNてのが流行らしいです。Android12もIKEv2が標準らしいので、そちらに以降してみます。
IKEv2ってなんぞ
CiscoとMicrosoftで規定した、IPsecの鍵交換方式らしい。ネットワークが移動してもトンネルを維持できるので、モバイル機器に向いている、らしい。また、Microsoftが規定しているということは、Windowsとも相性がいい、らしい。
StrongSwanのインストール
package.useファイルに以下の設定を追記。
net-vpn/strongswan eap farp
で、パッケージをインストールします。
# emerge strongswan
サーバ証明書の設定
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フィルタの設定
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*1を受信するためのポートをオープンします。
更に、NAPTなブロードバンドルータに、UDP 4500 とUDP 500をサーバにNAT変換するアドレス変換テーブルを設定します。
Android側設定
端末設定→その他→VPN→VPNの追加 選択
- 名前
- 適当につけて
- タイプ
- IKEv2/IPSec mschapv2
- サーバアドレス
- IPsecサーバのIPアドレス若しくはホスト名
- ユーザ名
- /etc/ipsec.secretsに設定したユーザ名
- パスワード
- /etc/ipsec.secretsに設定したパスワード
んで、保存。接続するときは
で接続をタップ。
Windows側設定
Windows10は『設定』→ネットワークとインターネット→VPN→VPN接続を追加する
- VPNプロバイダ
- Windowsビルドイン
- 名前
- 適当につけて
- サーバアドレス
- IPsecサーバのIPアドレス若しくはホスト名
- サインイン情報の種類
- ユーザ名とパスワード
- ユーザ名(オプション)
- /etc/ipsec.secretsに設定したユーザ名
- パスワード(オプション)
- /etc/ipsec.secretsに設定したパスワード
でVPN接続が作られます。タスクバーの通知アイコンのネットワークを開くと、VPN接続のアイコンができております。クリックして接続を押すと、設定がうまくできてれば、接続確立します!
Page Info | |
---|---|
Page Name : | Gentoo Linuxな生活/IKEv2 VPNで悩む |
Page aliases : | None |
Page owner : | maruo |
Can Read | |
Groups : | All visitors |
Users : | All visitors |
Can Edit | |
Groups : | No one |
Users : | No one |