IKEv2 eap-tlsで接続

以前にEAP-MSCHAPv2の設定をしたのですが、クライアントの証明書は必要ないことに気がついたのでEAP-TLSの設定をしました。クライアントを全部EAP-TLSで設定できればいいのですが、Linuxのstrongswan-nm(Network Manager)ではPUBKEYとEAP-MSCHAPv2とほかいくつかのマイナーなプロトコルしかつかえないので、PUBKEYを使うことにして、ほか、ルータ、armbianやWin/MACはEAP-TLSを使えるようにしました。

Server

/etc/ipsec.conf

config setup
 cachecrls=no
 strictcrlpolicy=no

conn %default
  ikelifetime=60m
  keylife=20m
  rekeymargin=3m
  keyingtries=1
  keyexchange=ikev2

# EAP-tls for Windows and macOS
 conn client-winmac
  left=myserver.com
  leftid=@myserver.com
  leftsourceip=%config
  leftcert=server@myserver.crt
  leftauth=pubkey
  leftfirewall=yes
  leftsubnet=0.0.0.0/0
  #leftsubnet=1.2.3.4/32
  right=%any
  rightid2=@myserver.com
  rightsourceip=192.168.100.0/27
  #rightauth=eap-mschapv2
  rightauth=eap-tls
  rightsendcert=never
  ike=aes128-sha256-modp2048!
  esp=aes128-sha256-modp2048!
  dpdaction=clear
  dpddelay=300s
  rekey=no
  reauth=no
  type = tunnel
  fragmentation=yes
  #eap_identity=%any
  rightfirewall=yes
  auto=add

/etc/ipsec.secrets

: RSA server@mysever.pem
#carol : EAP "abc123"

Client

/etc/ipsec.conf

config setup

conn %default
 ikelifetime=60m
 keylife=20m
 rekeymargin=3m
 keyingtries=1
 keyexchange=ikev2

# EAP for client
conn srv-client
 leftsourceip=%config
 leftcert=srv@myclient.crt
 leftid=@myclient
 #leftauth=eap-mschapv2
 leftauth=eap
 leftfirewall=yes
 right=myserver.com
 rightid2=server@myserver.com
 #rightsubnet=1.2.3.4/32
 rightsubnet=0.0.0.0/0
 rightauth=any
 #eap_identity=carol
 dpdaction=clear
 #dpdaction=restart
 #dpddelay=300s
 type = tunnel
 rekey=no
 reauth=no
 #rekey=yes
 #reauth=yes
 #fragmentation=yes
 ike=aes128-sha256-modp2048!
 esp=aes128-sha256-modp2048!
 auto=start

/etc/ipsec.secrets

: RSA srv@myclient.pem "xyz9876"
#carol : EAP "abc123"

Revocation Listの作成

いつも使っている手抜きのxcaを使ってリボーケーションリストを作成します。

DNSの変更

vpnでDNSを切り替えたかったが、nameserver 127.0.0.53のままで切り替わらなかったので次のようにしました。最善の解決策かどうかわかりませんが。

systemctl disable systemd-resolved.service
systemctl stop systemd-resolved.service
apt install resolvconf
nano /etc/resolvconf/resolv.conf.d/tail
sytemctl enable resolvconf
sytemctl restart resolvconf