환경: 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
거의 이틀 동안 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
}
}
}
}
이제 서버에 대한 간단한 핑으로 터널이 시작됩니다. 이 옵션을 start
사용하면 시스템 시작 시 직접 터널을 시작하고 실행할 수도 있습니다. 원천:swanctl.conf
고쳐 쓰다
AppArmor가 업다운 스크립트가 기본적으로 작동하는 것을 방지하므로 Ubuntu에서는 작동하지 않습니다.
답변2
파일에 다음을 추가하여 start_action = start
Ubuntu에서 작업할 수 있는 옵션을 얻을 수 있습니다 /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
}