Согласно руководству, запись, разделенная запятыми, должна быть правильной ...
Это если другой одноранговый узел поддерживает несколько подсетей на CHILD_SA. Возможно, здесь дело обстоит не так.Если это так, вам нужно будет определить несколько разделов подключения, чтобы инициировать отдельные CHILD_SAs:
conn %default
keyexchange=ikev2
authby=secret
conn net-net
ike=aes256-sha512-modp2048!
leftauth=psk
left=xx.xx.xx.xx
leftsubnet=10.255.1.0/24
leftfirewall=yes
rightauth=psk
right=yy.yy.yy.yy
auto=add
rightsubnet=10.250.72.0/24
conn net-host
also=net-net
rightsubnet=192.168.149.199/32
«strongswan up net-net» завершается успешно, но после этого «strongswan up net-host» не работает с «полученной ошибкой уведомления INVALID_SYNTAX». Когда я сначала устанавливаю net-host, этот успешно работает, а после этого net-net терпит неудачу. Так что второй всегда терпит неудачу ...
Кажется, у этого однорангового узла также есть проблемы, если для каждого IKE_SA создается более одного CHILD_SA (однако INVALID_SYNTAX в этом случае является странной ошибкой). Чтобы избежать этого, можно отключить charon.reuse_ikesa
в strongswan.conf. Таким образом создается новый IKE_SA вместе со вторым CHILD_SA.
Последнее может вызвать проблемы, если разрешен только один IKE_SA на одноранговое устройство. Таким образом, еще один возможный вариант (если одноранговый узел его поддерживает) - установить rightsubnet = 0.0.0.0 / 0
(требуется только один раздел подключения), тогда другой одноранговый узел может сузить это число до подсетей, которые он позволяет. Однако это похоже на вашу первую попытку, поэтому это может не работать с одноранговыми узлами, у которых изначально есть проблемы с несколькими подсетями на CHILD_SA.
К сожалению, вы не можете. С type=simple
systemd отслеживает процесс, непосредственно выполняемый параметром ExecStart
. Хотя type=forking
по-прежнему будет иметь аналогичную проблему, в этом случае systemd будет отслеживать процесс, и как только он завершится, systemd подумает, что он мертв.
Сложность в том, что systemd не может знать, что это нормальное поведение вашего приложения. Возможно, ваше приложение имеет главный процесс, а затем порождает дочерние рабочие процессы. И поэтому systemd будет думать, что ваш мастер умер, и остались некоторые дети, которые нужно очистить.
Есть 2 способа решить эту проблему:
exec
вместо fork
+exec
. Таким образом, новый процесс использует тот же PID, что и старый процесс.