From 97f2828056b51bc714492d7e9fe338ca606151ba Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Tue, 20 Aug 2024 10:35:21 +0200 Subject: [PATCH 1/2] get fitting device for address --- systemvm/debian/opt/cloud/bin/cs/CsAddress.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/systemvm/debian/opt/cloud/bin/cs/CsAddress.py b/systemvm/debian/opt/cloud/bin/cs/CsAddress.py index 3cb782daf7ab..1585fb326856 100755 --- a/systemvm/debian/opt/cloud/bin/cs/CsAddress.py +++ b/systemvm/debian/opt/cloud/bin/cs/CsAddress.py @@ -554,7 +554,7 @@ def fw_vpcrouter(self): if self.address["source_nat"]: self.fw.append(["nat", "front", "-A POSTROUTING -o %s -j SNAT --to-source %s" % - (self.dev, self.address['public_ip'])]) + (self.address['device'], self.address['public_ip'])]) if self.get_gateway() == self.get_ip_address(): for inf, addresses in self.config.address().dbag.iteritems(): if not inf.startswith("eth"): From 20c4e4bd039078443a38d13a64e1ce4491432120 Mon Sep 17 00:00:00 2001 From: Daan Hoogland Date: Fri, 23 Aug 2024 16:00:12 +0200 Subject: [PATCH 2/2] add nat rule whether it is source-nat or not --- systemvm/debian/opt/cloud/bin/cs/CsAddress.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/systemvm/debian/opt/cloud/bin/cs/CsAddress.py b/systemvm/debian/opt/cloud/bin/cs/CsAddress.py index 1585fb326856..8176e9a5fc4b 100755 --- a/systemvm/debian/opt/cloud/bin/cs/CsAddress.py +++ b/systemvm/debian/opt/cloud/bin/cs/CsAddress.py @@ -693,11 +693,8 @@ def post_config_change(self, method): vpccidr = cmdline.get_vpccidr() self.fw.append( ["filter", 3, "-A FORWARD -s %s ! -d %s -j ACCEPT" % (vpccidr, vpccidr)]) - self.fw.append( - ["nat", "", "-A POSTROUTING -j SNAT -o %s --to-source %s" % (self.dev, self.address['public_ip'])]) - elif cmdline.get_source_nat_ip() and not self.is_private_gateway(): - self.fw.append( - ["nat", "", "-A POSTROUTING -j SNAT -o %s --to-source %s" % (self.dev, cmdline.get_source_nat_ip())]) + self.fw.append( + ["nat", "", "-A POSTROUTING -j SNAT -o %s --to-source %s" % (self.dev, self.address['public_ip'])]) def list(self): self.iplist = {}