VPNサーバーでL2TP/IPSecとIKEv2両方式の設定

ALL
スポンサーリンク

VPNサーバーでL2TP/IPSecとIKEv2の両方式の設定です。strongswanは5.7以前(または5.8以降で旧設定の場合)、OSはRockyLinux8/9,AlmaLinux8/9 での構築方法です。
クライアントからは、L2TP/IPSec方式、またはIKEv2方式のどちらでも接続できます。

スポンサーリンク

ここで構築するVPN

・VPNサーバは CentOS7,RockyLinux8/9,AlmaLinux8/9
・VPNサーバーに Let’s Encryptの証明書を導入済み
・VPN接続後、クライアントの全ての通信は VPNサーバ経由で行われます。
・VPNクライアント同士の相互アクセス可/不可は、いずれもファイアウォールの設定で対応できます。
・Windows,スマホ(Android)から接続可能(iOS10も可能なはずですが未確認です)

また、
L2TP/IPSecで接続の場合:
・VPNサーバのVPN側アドレスは 192.168.11.99
・VPNクライアントのアドレスは 192.168.11.128-192.168.11.254
・VPNの暗号化は事前共有鍵方式、ユーザ/パスワードは、サーバ内のファイルで指定
IKEv2で接続の場合
・VPNクライアントのアドレスは 192.168.12.128-192.168.12.254 の範囲から割り振る
・VPN接続用ユーザ/パスワードは、サーバ側のファイルで指定
となります。

必要パッケージのインストール

必要パッケージをインストールします。

yum install epel-release
yum --enablerepo=epel install strongswan xl2tpd

L2TP/IPSec用設定

VPN(L2TP/IPsec)サーバの設定(strongswan使用) – パソコン鳥のブログ の「l2tpの設定」の設定を行ってください。
/etc/ppp/options.xl2tpd の crtscts と lock をコメントアウトするように記載していますが、crtscts、lock の2つの行は RockyLinux8/9,AlmaLinux8/9 では無いので、コメントアウト不要です。

L2TP/IPSec方式でのVPN接続用ユーザー名・パスワードは、上記説明中の、/etc/ppp/chap-secrets で指定します。

次に、VPN接続時に使用する、事前共有鍵を、ファイル ipsec.secrets に追加します。
以下のように記述した場合、“test” が事前共有鍵です。

/etc/strongswan/ipsec.secrets

: PSK "test"

管理者以外は見えないようにします。

chmod 600 /etc/strongswan/ipsec.secrets

IKEv2用設定

Let’s Encrypt の証明書へのリンクを張ります。
[サーバーのFQDN] の箇所は、各自の環境に合わせてください。

ln -s /etc/letsencrypt/live/[サーバーのFQDN]/privkey.pem /etc/strongswan/ipsec.d/private/privkey.pem
ln -s /etc/letsencrypt/live/[サーバーのFQDN]/fullchain.pem /etc/strongswan/ipsec.d/certs/fullchain.pem
ln -s /etc/letsencrypt/live/[サーバーのFQDN]/chain.pem /etc/strongswan/ipsec.d/cacerts/chain.pem

/etc/strongswan/ipsec.secrets に下記を追加します。
IKEv2方式でのVPN接続時に使用する秘密鍵と、接続用ユーザー・パスワードを指定します。
下記の : RSA で秘密鍵を指定しています。

: RSA "privkey.pem"
user1 : EAP "XXXXXXXXXXXX" #ユーザー名 : EAP "パスワード"

L2TP/IPSec用・IKEv2用のIPSec.conf設定

ipsec.conf を、次の内容にします。
leftid = の箇所で、VPNサーバーのFQDN を記述してください。

/etc/strongswan/ipsec.conf

config setup

conn %default

	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!
	type=transport
    left=%defaultroute
    leftsubnet=0.0.0.0/0
    right=%any
    auto=add
    dpddelay=10
    dpdtimeout=20
    dpdaction=clear
    fragmentation=yes

conn IKEv2-PSK
    keyexchange=ikev2
    forceencaps=yes
    leftid=VPNサーバーのFQDN
    leftcert=fullchain.pem
    leftsendcert=always
    rightid=%any
    rightdns=8.8.8.8,8.8.4.4
    rightsourceip=192.168.12.128/25
    rightauth=eap-mschapv2
    eap_identity=%any

conn L2TP-PSK
	leftprotoport=17/1701
	rightprotoport=17/%any
	authby=secret
	forceencaps=no

VPNサーバーの起動設定

strongswan5.8以降が動作している場合は、まず停止させます。

systemctl disable strongswan
systemctl stop strongswan

strongswan がシステム起動時に自動起動するようにします。
strongswan5.8以降の場合でも、下記実行で旧設定(本記事での設定内容で動作)で起動します。

systemctl enable strongswan-starter
systemctl start strongswan-starter

次を実行します。

systemctl enable xl2tpd
systemctl start xl2tpd

Linuxカーネルパラメータの設定

VPN(L2TP/IPsec)サーバの設定(strongswan使用) – パソコン鳥のブログ の 「Linuxカーネルパラメータの設定」の CentOS7の場合 の設定を行います。
続けて、VPN(IKEv2)サーバーの設定(strongswan5.7以前/5.8以降で旧設定) – パソコン鳥のブログ の「Linuxカーネルパラメータの設定」の設定を行います。

ファイアウォール設定

VPN(L2TP/IPsec)サーバの設定(strongswan使用) – パソコン鳥のブログ の「ファイアウォール設定」の設定を行います。
firewalld で設定する場合は、CentOS7の場合 の設定を実施してください。

続けて、VPN(IKEv2)サーバーの設定(strongswan5.8以降) – パソコン鳥のブログ の「ファイアウォール設定」の作業を行ってください。
192.168.11.128/25 となっている箇所は、192.168.12.128/25 に読み替えてください。
VPN(L2TP/IPsec)サーバの設定(strongswan使用) – パソコン鳥のブログ の方と同じ設定の行があったら、そこは再度設定せずに飛ばしてください。
ただし、192.168.11.128/25 となっている箇所は、192.168.12.128/25 に読み替えて省略せずに設定してください。

クライアントの設定

VPN(IKEv2)サーバーの設定(strongswan5.8以降) – パソコン鳥のブログ の「クライアントの設定」、VPN(L2TP/IPsec)クライアントの設定(Windows/Androidスマホ) – パソコン鳥のブログ を参照してください。

参考

VPSを用いたVPNサーバーの立て方(DigitalOcean編) – k_piの雑記帳
VPN(IKEv2)サーバーの設定(strongswan5.7以前/5.8以降で旧設定) – パソコン鳥のブログ
CentOS8でVPN(L2TP/IPsec)サーバの設定(strongswan使用) – パソコン鳥のブログ
VPN(L2TP/IPsec)サーバの設定(strongswan使用) – パソコン鳥のブログ

コメント