Remote access VPN users are disconnected on every LB, ACL, port forward or firewall change (xl2tpd restarted on every iptables pass)
Los mantenedores suelen responder en 1 día
@willbennett-devops ya está trabajando en esto.
Desde el 31/10/2026.
- #14546 de @willbennett-devops — abierto
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- linux, python
- Área
- networking
Línea de trabajo
Empieza en configure_l2tpIpsec() en systemvm/debian/opt/cloud/bin/configure.py cerca de la línea 1277, donde se llama a secret.empty() antes de volver a añadir la PSK, y luego lee empty(), is_changed() y repopulate() en systemvm/debian/opt/cloud/bin/cs/CsFile.py (líneas 42-56). Está listo cuando un cambio de regla no relacionado ya no reinicia xl2tpd, pero un cambio de PSK sí lo sigue reiniciando. Comprueba que la línea de reinicio en cloud.log desaparece en ese caso.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
problem
Since 4.22.1.0, every remote access VPN (L2TP/IPsec) client on a router is disconnected whenever an unrelated rule
changes on that router: creating or deleting an LB rule, an ACL rule, a port forward, a firewall rule, a static NAT or
a site-to-site VPN. The client has to reconnect each time. Some clients (macOS) don't reconnect on their own.
cloud.log on the router shows xl2tpd being restarted on every one of those passes, although none of the L2TP files
changed except the secrets file, which was rewritten with the same content:
Nothing to commit. The /etc/ipsec.d/l2tp.conf file did not change
Wrote edited file /etc/ipsec.d/ipsec.any.secrets
Nothing to commit. The /etc/xl2tpd/xl2tpd.conf file did not change
Nothing to commit. The /etc/ppp/options.xl2tpd file did not change
Executing: ipsec update
Executing: systemctl restart xl2tpd
Executing: ipsec rereadsecrets
Root cause, line numbers from the 4.22 branch (56306ab52c), same code in 4.23.0.0 and main:
systemvm/debian/opt/cloud/bin/configure.py:1277, inconfigure_l2tpIpsec():secret.empty()before
secret.addeq(": PSK ...")andsecret.commit().systemvm/debian/opt/cloud/bin/cs/CsFile.py:51-53:empty()clears bothconfig(the copy read from disk) and
new_config.is_changed()(CsFile.py:42-46) compares the two, so afterempty()the file always reads as
changed andcommit()always returns True.configure.py:1247-1250: since #12422 (the fix for #12195), a changed config meanssystemctl restart xl2tpd
instead ofsystemctl start xl2tpd. Restarting xl2tpd kills every pppd session.CsRemoteAccessVpn.process()runs fromIpTablesExecutor.process()(configure.py:1615-1616), which runs for every
data bag withprocess_iptables: True(configure.py:1673-1690), not only for VPN changes.
Before #12422 the same pass ran systemctl start xl2tpd, a no-op on a running service, so the always-changed secrets
file did no harm.
Impact: on 4.22.1.0 and later, any router with a remote access VPN drops all its VPN users on any rule change in the
network or VPC. With CKS, the cloud controller manager's LB and ACL reconciles trigger it too.
versions
4.22.1.0, 4.22.1.1 and 4.23.0.0 (any version containing #12422). Seen on 4.23.0.0 with KVM, VPC with redundant
routers, advanced networking. Not specific to the hypervisor.
The steps to reproduce the bug
- Create a VPC, enable remote access VPN on its source NAT IP and add a VPN user.
- Connect an L2TP/IPsec client and keep a ping running to a VM in a tier.
- Create (or delete) an LB rule, or add an ACL rule, in that VPC.
- The client's session drops.
cloud.logon the router shows "Wrote edited file /etc/ipsec.d/ipsec.any.secrets"
followed bysystemctl restart xl2tpd.
What to do about it?
Use secret.repopulate() instead of secret.empty() in configure_l2tpIpsec(). repopulate() (CsFile.py:55-56)
clears only new_config and keeps the copy loaded from disk, so an unchanged PSK compares equal and xl2tpd is only
restarted when something really changed, which is what #12422 intended. A changed PSK still restarts it. PR to follow.
- Lenguaje dominante
- Java
- Estrellas
- 3.1k
- Forks
- 1.4k
- Merge medio
- 10 d 9 h
- PR fusionados (30 d)
- 20
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/cloudstack
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/cloudstack#14530 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug status:has-work-around
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/cloudstack#14465 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
4.23.0.0: restartVPC cleanup=true with public IPs on two VLANs fails with UnsupportedOperationException and leaves the VPC without a backup routerPosiblemente ocupada @bernardodemarco la tomó hace 5 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/cloudstack#14430 · 4 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
apache/cloudstack#14427 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
[UI] "canceled - Unable to reach the management server" notification when switching from project to default view on Instances page (4.20.3)Posiblemente ocupada @Damans227 la tomó hace 20 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
apache/cloudstack#14381 · 1 comentario · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de apache/cloudstack
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
liberation-data/drivine4j#547 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
BindingServiceProperties.bindings regressed to a non-thread-safe TreeMap in GH-3158: concurrent first use of binding names corrupts itPosiblemente ocupada @AkashB23 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
spring-cloud/spring-cloud-stream#3321 ·
Los mantenedores suelen responder en 1 día
-
[Bug] 资源包列表 与 模组/数据包/世界 列表排列顺序不一致Posiblemente ocupada @fishdry1000 la tomó hace 4 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
ai-driven-fuzzing bug claude Minor
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
linagora/twake-calendar-side-service#1333 ·
Los mantenedores suelen responder en 1 día