Я использую strongswan-swanctl на VPN-сервере под управлением NixOS.
В основном это работает, и я могу подключиться к серверу VPN от клиентов.
services.strongswan-swanctl = {
enable = true;
swanctl = {
authorities = {
"vpnca" = {
cacert = "ca-cert.pem";
};
};
connections = {
"ikev2-eap" = {
version = 2;
proposals = [ "aes192gcm16-aes128gcm16-prfsha256-ecp256-ecp521"
"aes192-sha256-modp3072"
"default" ];
rekey_time = "0s";
pools = [ "primary-pool-ipv4" "primary-pool-ipv6" ];
fragmentation = "yes";
dpd_delay = "30s";
local."1" = {
certs = [ "vpn_example_com.pem" ];
id = "@vpn.example.com";
};
remote."1" = {
auth = "eap-mschapv2";
eap_id = "%any";
};
children = {
"ikev2-eap" = {
local_ts = [ "0.0.0.0/0" "::/0" ];
rekey_time = "0s";
dpd_action = "clear";
esp_proposals = [ "aes192gcm16-aes128gcm16-prfsha256-ecp256-modp3072"
"aes192-sha256-ecp256-modp3072"
"default" ];
updown = "/etc/swanctl/proxyndp.updown";
};
};
local_addrs = [ "192.0.2.1" "2001:db8::2"];
};
};
Проблема у меня внутри скрипта /etc/swanctl/proxyndp.updown
:
#! /bin/sh
case $PLUTO_VERB in
up-client-v6)
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.all.proxy_ndp=1
ip -6 neigh add proxy ${PLUTO_PEER_CLIENT%????} dev ens3
;;
down-client-v6)
ip -6 neigh delete proxy ${PLUTO_PEER_CLIENT%????} dev ens3
;;
esac
Программа sysctl
не найдена системой при выполнении этого скрипта. В обычной пользовательской оболочке я вижу инструмент в /run/current-system/sw/bin/sysctl
но для этого скрипта я получаю следующие сообщения журнала в системном журнале:
Feb 12 16:04:01 vpn.example.com charon-systemd[9249]: updown: /etc/swanctl/proxyndp.updown: line 5: sysctl: command not found
Feb 12 16:04:01 vpn.example.com charon-systemd[9249]: updown: /etc/swanctl/proxyndp.updown: line 6: sysctl: command not found
Примечание: ip
находится в той же папке и может быть запущен сценарием.
Есть идеи, что там происходит?