From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id A2C071FF2AD for ; Thu, 4 Jul 2024 12:50:26 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6E97B30B36; Thu, 4 Jul 2024 12:50:43 +0200 (CEST) MIME-Version: 1.0 In-Reply-To: <20240529132526.272941-1-s.hanreich@proxmox.com> References: <20240529132526.272941-1-s.hanreich@proxmox.com> From: Fabian =?utf-8?q?Gr=C3=BCnbichler?= To: Proxmox VE development discussion Date: Thu, 04 Jul 2024 12:49:11 +0200 Message-ID: <172009015103.180658.17528931406427687616@yuna.proxmox.com> User-Agent: alot/0.10 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.050 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pve-devel] [PATCH proxmox-firewall 1/1] service: flush firewall rules on force disable X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Quoting Stefan Hanreich (2024-05-29 15:25:26) > When disabling the nftables firewall again, there is a race condition > where the nftables ruleset never gets flushed and persists after > disabling. In practice this almost never happens due to pve-firewall > running every 10 seconds, and proxmox-firewall running every 5 > seconds, so the proxmox-firewall main loop almost always runs at least > once before the force disable file gets created and flushes the > ruleset. so if I understand this correctly, it should handle the following case: proxmox-firewall runs and sets up NFT rules user disables NFT pve-firewall runs and sets up legacy rules and force disable file proxmox-firewall runs and disables NFT rules as opposed to the following sequence proxmox-firewall runs and sets up NFT rules user disables NFT proxmox-firewall runs and disables NFT rules pve-firewall runs and sets up legacy rules and force disable file which is already handled.. I don't see why the first cast should "almost never happen", just because the loops have a different period - it all comes down to alignment of the periods and timing of the user action? in other words, you have a sequence 0: N 5: N 5+X: L 10: N 15: N 15+X: L 20: N 25: N 25+X: L where the gap between N and N is 5 seconds, and the gap between N and L and L and N together is also 5 seconds. on average (assuming random alignment of the periods), there's an X=2.5s window (out of 10) that the user action must hit to trigger the issue (in the gap between L and N, since X can be between 0 and 5s)? FWIW, the change itself looks good to me, but the commit message might need some adaptation ;) > > Reported-by: Hannes Laimer > Signed-off-by: Stefan Hanreich > --- > proxmox-firewall/src/bin/proxmox-firewall.rs | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/proxmox-firewall/src/bin/proxmox-firewall.rs b/proxmox-firewall/src/bin/proxmox-firewall.rs > index f7e816e..5133cbf 100644 > --- a/proxmox-firewall/src/bin/proxmox-firewall.rs > +++ b/proxmox-firewall/src/bin/proxmox-firewall.rs > @@ -91,6 +91,10 @@ fn main() -> Result<(), std::io::Error> { > > while !term.load(Ordering::Relaxed) { > if force_disable_flag.exists() { > + if let Err(error) = remove_firewall() { > + log::error!("unable to disable firewall: {error:#}"); > + } > + > std::thread::sleep(Duration::from_secs(5)); > continue; > } > -- > 2.39.2 > > > _______________________________________________ > pve-devel mailing list > pve-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel > > _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel