Remote access VPN users are disconnected on every LB, ACL, port forward or firewall change (xl2tpd restarted on every iptables pass)
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 72/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- linux, python
- 領域
- networking
調査の方向性
systemvm/debian/opt/cloud/bin/configure.py の約1277行目、PSK を再追加する前に secret.empty() が呼ばれている configure_l2tpIpsec() から始めて、systemvm/debian/opt/cloud/bin/cs/CsFile.py(42~56行目)の empty()、is_changed()、repopulate() を読んでください。無関係なルール変更で xl2tpd が再起動しなくなり、PSK が変更された場合には引き続き再起動することが完了条件です。その場合に cloud.log の再起動行が出力されないことも確認してください。
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Java
- スター
- 3.1k
- フォーク
- 1.4k
- 平均マージ
- 10日 9時間
- マージ済み PR(30日)
- 20
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/cloudstack のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/cloudstack#14530 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug status:has-work-around
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/cloudstack#14465 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
4.23.0.0: restartVPC cleanup=true with public IPs on two VLANs fails with UnsupportedOperationException and leaves the VPC without a backup router対応中かも @bernardodemarco が 5 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
apache/cloudstack#14430 · コメント 4 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
apache/cloudstack#14427 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[UI] "canceled - Unable to reach the management server" notification when switching from project to default view on Instances page (4.20.3)対応中かも @Damans227 が 20 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
apache/cloudstack#14381 · コメント 1 件 · リアクション 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
apache/cloudstack の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
liberation-data/drivine4j#547 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
BindingServiceProperties.bindings regressed to a non-thread-safe TreeMap in GH-3158: concurrent first use of binding names corrupts it対応中かも @AkashB23 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
spring-cloud/spring-cloud-stream#3321 ·
メンテナーはふだん 1 日以内に返信
-
[Bug] 资源包列表 与 模组/数据包/世界 列表排列顺序不一致対応中かも @fishdry1000 が 4 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
ai-driven-fuzzing bug claude Minor
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
linagora/twake-calendar-side-service#1333 ·
メンテナーはふだん 1 日以内に返信