[linux][VPN] strongSwanのcharonをswanctlに置き換えてみた。

AIX、UNIX、Linux
swanctl-strongSwan

はじめに

先日の以下のようなstrongSwanを使った記事を書きましたが、最近はstrongSwanはswanctlというものを実装し、こちらのほうがipsecのconfが記述しやすくなっています。手元の環境もswanctlに置き換えてみました。

公式ドキュメントなど

公式のドキュメントは以下にあります。

swanctl Tool :: strongSwan Documentation

charon(今までの)で設定したipsec.confswanctl.confには今の所自動的に変換したりするものはありません。一応公式にドキュメントが用意されています。ipsec.confのパラメータがswanctl.confのどのパラメータに対応しているか表もあるのでだいぶ楽だと思います。

Migration from ipsec.conf to swanctl.conf - strongSwan
Redmine

設定してみた

swanctl.conf

先日の自分の環境の場合は以下のようなconfになります。

connections {
        mikrotik-to-linux {
                version = 2
                proposals = 3des-sha1-modp3072!
                proposals = aes256-sha2_256-modp3072,default
                encap = yes
                mobike = yes
                keyingtries = 0
                reauth_time = 10800
                rekey_time = 170m
                over_time=10m
                dpd_delay=0s 
                dpd_timeout=0s
                fragmentation=yes
                unique=no
                local_addrs = <接続元IP>
                remote_addrs = <接続先IP>
                local {
                        auth = psk
                        id = <接続元IP>
                }
                remote {
                        auth = psk
                        id = <接続先IP>
                        revocation=relaxed
                }
                children {
                        net-net {
                                local_ts  = 10.15.0.0/16
                                remote_ts = 192.168.88.0/24
                                updown = /etc/strongswan.d/iptables.updown iptables
                                rekey_time = 5400
                                rekey_bytes = 500000000
                                rekey_packets = 1000000
                                esp_proposals = 3des-sha1-modp3072!
                                esp_proposals = aes256-sha2_256-modp3072,default
                                dpd_action=clear
                                start_action = start
                                close_action=start
                                ipcomp=no
                                policies=yes 
                                mode = tunnel
                        }
                }
        }
}
secrets {
        ike-1 {
                secret = "<共通鍵>"
                id-1 = <接続元IP>
        }
}

だいぶ見やすくなっていると思います。接続元、接続先もわかりやすいので、ipsec.confよりも混乱しにくいかと思います。

charon.conf

で、このままではstrongSwanはswanctlを使用しないので、以下のように書き換えます。

charon {
 ...
 start-scripts {
   swanctl = /usr/sbin/swanctl -q
 }
 ...
}

接続確認してみた

swanctlはswanctlコマンドが用意されているので、こちらでSAの情報やlogなどを確認することが出来るようになります。

$ sudo swanctl --log
06[NET] received packet: from 111.xxx.xxx.xxx[4500] to 206.xxx.xxx.xxx[4500] (160 bytes)
06[ENC] parsed INFORMATIONAL request 53 [ ]
06[ENC] generating INFORMATIONAL response 53 [ ]
06[NET] sending packet: from 206.xxx.xxx.xxx[4500] to 111.xxx.xxx.xxx[4500] (80 bytes)
$ sudo swanctl --list-sas
mikrotik-to-linux: #7, ESTABLISHED, IKEv2, 0651ebcad3c905b4_i* a6377a80fcc29676_r
  local  '206.xxx.xxx.xxx' @ 206.xxx.xxx.xxx[4500]
  remote '111.xxx.xxx.xxx' @ 111.xxx.xxx.xxx[4500]
  AES_CBC-256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_3072
  established 6696s ago, rekeying in 3176s, reauth in 3917s
  net-net: #10, reqid 4, INSTALLED, TUNNEL-in-UDP, ESP:AES_CBC-256/HMAC_SHA2_256_128/MODP_3072
    installed 1573s ago, rekeying in 3383s, expires in 4368s
    in  c74554b4, 156804 bytes,  2621 packets,     0s ago
    out 0a4c45af,  82800 bytes,  1380 packets,     0s ago
    local  10.15.0.0/16
    remote 192.168.88.0/24

設定で問題がなくなったら、以下のコマンドを実行し、設定ファイルを読み込むと接続の確立が行われ、問題がない場合は接続状態が表示されます。

$ sudo swanctl --load-all
loaded ike secret 'ike-1'
no authorities found, 0 unloaded
no pools found, 0 unloaded
loaded connection 'mikrotik-to-linux'
successfully loaded 1 connections, 0 unloaded
$ sudo swanctl --list-conns
mikrotik-to-linux: IKEv2, reauthentication every 10800s, rekeying every 10200s
  local:  206.xxx.xxx.xxx
  remote: 111.xxx.xxx.xxx
  local pre-shared key authentication:
    id: 206.xxx.xxx.xxx
  remote pre-shared key authentication:
    id: 111.xxx.xxx.xxx
  net-net: TUNNEL, rekeying every 5400s or 500000000 bytes or 1000000 packets
    local:  10.15.0.0/16
    remote: 192.168.88.0/24
この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました