VPN(IKEv2)サーバの CentOS7/RockyLinux8/9,AlmaLinux8/9 での構築方法です。
strongswan5.7以前(または5.8以降で旧設定の場合)の設定です。
strongswan5.8以降の場合は、次の記事を参照してください。
VPN(IKEv2)サーバーの設定(strongswan5.8以降) – パソコン鳥のブログ
本記事での設定で、WindowsではVPNの種類でIKEv2を選択、AndroidではタイプIKEv2/IPSec MSCHAPv2 を選択で接続できるようになります。
ここで構築するVPN
・VPNサーバは CentOS7,RockyLinux8/9,AlmaLinux8/9
・VPNサーバーに Let’s Encryptの証明書を導入済み
・VPNクライアントのアドレスは 192.168.11.128-192.168.11.254 の範囲から割り振る
・VPN接続後、クライアントの全ての通信は VPNサーバ経由で行われます。
・VPN接続用ユーザ/パスワードは、サーバ側のファイルで指定
・VPNクライアント同士の相互アクセス可/不可は、いずれもファイアウォールの設定(記事中に説明あり)で対応できます。
・Windows,スマホ(Android)からVPNサーバーへ接続可能(iOSは未確認です)。WindowsではVPNの種類でIKEv2を選択、AndroidではタイプIKEv2/IPSec MSCHAPv2 を選択で接続
必要パッケージのインストール
必要パッケージをインストールします。
yum install epel-release
yum --enablerepo=epel install strongswan
ipsec.confの設定
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.conf を作成します。
leftid = の箇所で、VPNサーバーのFQDN を記述してください。
rightdns = の箇所で、VPN接続時にVPNクライアントが参照するDNSサーバーを指定します。このDNSサーバーはVPNサーバーから参照できる必要があります。ここでは 8.8.8.8, 8.8.4.4 にしています。
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
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.11.128/25
rightauth=eap-mschapv2
eap_identity=%any
/etc/strongswan/ipsec.secrets を作成します。
VPN接続時に使用する秘密鍵と、接続用ユーザー・パスワードを指定します。
下記の : RSA で秘密鍵を指定しています。
: RSA "privkey.pem"
user1 : EAP "XXXXXXXXXXXX" #ユーザー名、パスワード
管理者以外は見えないようにします。
chmod 600 /etc/strongswan/ipsec.secrets
strongswan の起動設定を行います。
CentOS7 / strongswan5.7以前の場合
systemctl enable strongswan
systemctl start strongswan
RockyLinux8/9,AlmaLinux8/9 の場合
strongswan5.8以降が動作している場合は、まず停止させます。
systemctl disable strongswan
systemctl stop strongswan
strongswan がシステム起動時に自動起動するようにします。
strongswan5.8以降の場合でも、下記実行で旧設定(本記事での設定内容で動作)で起動します。
systemctl enable strongswan-starter
systemctl start strongswan-starter
Linuxカーネルパラメータの設定
/etc/sysctl.conf の末尾に以下の内容を追加します。
(net.ip_no_pmtu_disc は VPN経由でのアクセスで環境によっては接続できないホストがあり、その対処です)
net.ipv4.ip_no_pmtu_disc = 1
net.ipv4.ip_forward = 1
次のコマンドで設定を反映します。
/sbin/sysctl -p
ファイアウォール設定
VPN(IKEv2)サーバーの設定(strongswan5.8以降) – パソコン鳥のブログ の「ファイアウォール設定」の作業を行ってください。
以上で VPNサーバーの設定は完了です。
クライアントの設定
VPN(IKEv2)サーバーの設定(strongswan5.8以降) – パソコン鳥のブログ の「クライアントの設定」を参照してください。
参考
strongSwan 5.8.0 の systemd ユニット変更に対応する – ちとくのホームページ
strongSwan で IKEv2 VPN 備忘録 | hyt adversaria
strongSwanでVPN (IKEv2)を構築する #Ubuntu – Qiita
strongSwanでLet’s Encrypt証明書を使ったIKEv2 VPNサーバーを作る – World203strongSwan – ArchWiki
StrongswanでIKEv2のVPNサーバを構築する – m_shige1979のときどきITブログ
コメント