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使用) – パソコン鳥のブログ
コメント