ページへ戻る

− Links

 印刷 

Gentoo Linuxな生活​/IKEv2 VPNで悩む :: Nest Of Hawk

xpwiki:Gentoo Linuxな生活/IKEv2 VPNで悩む

ページ内コンテンツ
  • 時代は変遷するもの…
  • IKEv2ってなんぞ
  • 設定
    • StrongSwanのインストール
    • StrongSwanの設定
      • サーバ証明書の設定
  • IPフィルタの設定
  • 接続してみよう
    • サーバ群起動
    • Android側設定
    • Windows側設定

時代は変遷するもの… anchor.png[1]

2017年からLibreSwanによるIPsec/L2TP VPNを構築しておりましたが、LibreSwanも、L2TPを噛ます方式ももうオワコンらしいです。

今やStrongSwanを使って、IKEv2によるIPsec VPNてのが流行らしいです。Android12もIKEv2が標準らしいので、そちらに以降してみます。

Page Top

IKEv2ってなんぞ anchor.png[2]

CiscoとMicrosoftで規定した、IPsecの鍵交換方式らしい。ネットワークが移動してもトンネルを維持できるので、モバイル機器に向いている、らしい。また、Microsoftが規定しているということは、Windowsとも相性がいい、らしい。

Page Top

設定 anchor.png[3]

Page Top

StrongSwanのインストール anchor.png[4]

package.useファイルに以下の設定を追記。

net-vpn/strongswan eap farp

で、パッケージをインストールします。

# emerge strongswan
Page Top

StrongSwanの設定 anchor.png[5]

Page Top

サーバ証明書の設定 anchor.png[6]

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のユーザしかアクセスできないようにしておいてくださいね…

さて…サーバの設定は終了

Page Top

IPフィルタの設定 anchor.png[7]

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変換するアドレス変換テーブルを設定します。

Page Top

接続してみよう anchor.png[8]

Page Top

サーバ群起動 anchor.png[9]

# /etc/init.d/ipsec start
Page Top

Android側設定 anchor.png[10]

端末設定→その他→VPN→VPNの追加 選択

名前
適当につけて
タイプ
IKEv2/IPSec mschapv2
サーバアドレス
IPsecサーバのIPアドレス若しくはホスト名
ユーザ名
/etc/ipsec.secretsに設定したユーザ名
パスワード
/etc/ipsec.secretsに設定したパスワード

んで、保存。接続するときは

で接続をタップ。

Page Top

Windows側設定 anchor.png[11]

Windows10は『設定』→ネットワークとインターネット→VPN→VPN接続を追加する

VPNプロバイダ
Windowsビルドイン
名前
適当につけて
サーバアドレス
IPsecサーバのIPアドレス若しくはホスト名
サインイン情報の種類
ユーザ名とパスワード
ユーザ名(オプション)
/etc/ipsec.secretsに設定したユーザ名
パスワード(オプション)
/etc/ipsec.secretsに設定したパスワード

でVPN接続が作られます。タスクバーの通知アイコンのネットワークを開くと、VPN接続のアイコンができております。クリックして接続を押すと、設定がうまくできてれば、接続確立します!


*1 Encapseled Security Payload

Last-modified: 2022-02-20 (日) 21:15:31 (JST) (785d) by maruo