swanctl.confで設定されたトンネルを自動的に起動する方法

swanctl.confで設定されたトンネルを自動的に起動する方法

環境:Debian 10、KDE、フルデスクトップ

# ipsec --version
Linux strongSwan U5.7.2/K4.19.0-6-amd64

# swanctl --version
strongSwan swanctl 5.7.2

# systemctl status strongswan
● strongswan.service - strongSwan IPsec IKEv1/IKEv2 daemon using ipsec.conf
   Loaded: loaded (/lib/systemd/system/strongswan.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Fri 2019-12-13 09:35:03 -03; 4h 34min ago
  Process: 6067 ExecStart=/usr/sbin/ipsec start --nofork (code=exited, status=0/SUCCESS)
 Main PID: 6067 (code=exited, status=0/SUCCESS)

# systemctl status strongswan-swanctl
● strongswan-swanctl.service - strongSwan IPsec IKEv1/IKEv2 daemon using swanctl
   Loaded: loaded (/lib/systemd/system/strongswan-swanctl.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-12-13 09:11:34 -03; 4h 56min ago
 Main PID: 6373 (charon-systemd)
   Status: "charon-systemd running, strongSwan 5.7.2, Linux 4.19.0-6-amd64, x86_64"
    Tasks: 17 (limit: 4915)
   Memory: 8.5M
   CGroup: /system.slice/strongswan-swanctl.service
           └─6373 /usr/sbin/charon-systemd

ほぼ2日間、IPSecとIKEv2の学習と調査の後、Strongswanとswanctlを使用して企業ゲートウェイ(Lancom LCOS、IKEv2 PSK、User-FQDN ID)に接続することに成功しました。

再起動後、次のコマンドを実行する必要がありました。

sudo /usr/sbin/swanctl --load-all
no files found matching '/etc/swanctl/conf.d/*.conf'
loaded ike secret 'ike'
no authorities found, 0 unloaded
no pools found, 0 unloaded
loaded connection 'IKEv2PSK'
successfully loaded 1 connections, 0 unloaded

それからsudo /usr/sbin/swanctl --initiate --child myVpn

[IKE] establishing CHILD_SA myVpn{2}
... lots of log lines ...
initiate completed successfully

次のシステムデバイスを使用してトンネルが自動的に開始されることを願っています。

sudo systemctl swanctl-myVpn start

しかし、これを達成する方法についての文書が見つからなかったので、これが悪い考えなのかと思います。

答え1

@ecdsaが私に正しい方向を教えてくれました。start_action設定にaを追加することは解決策です。

connections {
    IKEv2PSK {
        remote_addrs = SOME.DYNDNS-IP.COM, 81.81.81.81
        vips = 0.0.0.0
        version = 2
        dpd_delay = 30
        dpd_timeout = 90
        proposals = aes256-sha256-modp2048
        
        local {
            auth = psk
            id = @@[email protected]
        }
        remote {
            auth = psk
            id = 81.81.81.81
        }
                
        children {
            anicVpn {
                remote_ts = 192.168.0.0/24
                updown = /usr/lib/ipsec/_updown iptables
                esp_proposals = aes256-sha256-modp2048
                start_action = trap   # <----- trap: on traffic | start: on boot
            }
        }
    }
}

これで、サーバーへの簡単なpingでトンネルが始まります。このオプションをstart使用すると、システム起動時に直接トンネルを起動して実行することもできます。源泉:swanctl.conf

修正する

AppArmorはアップダウンスクリプトがデフォルトで動作するのを防ぎ、Ubuntuでは動作しません。

答え2

ファイルに以下を追加して、start_action = startUbuntuで作業するためのオプションを入手できます/etc/strongswan.d/charon.conf

# Section containing a list of scripts (name = path) that are executed when
# the daemon is started.
start-scripts {
   swanctl-creds = swanctl --load-creds --noprompt
   swanctl-conns = swanctl --load-conns
}

関連情報