From 2c2426c18c6e65a595261a366ad0e93dde8b424b Mon Sep 17 00:00:00 2001 From: Slair1 Date: Tue, 29 May 2018 14:30:09 -0500 Subject: [PATCH] CLOUDSTACK-2680 Fix Private Gateway SNAT when using guest interface --- systemvm/debian/opt/cloud/bin/configure.py | 9 +++------ systemvm/debian/opt/cloud/bin/cs/CsAddress.py | 7 ++++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/systemvm/debian/opt/cloud/bin/configure.py b/systemvm/debian/opt/cloud/bin/configure.py index e023a9fb94e6..c8e3ff6e5042 100755 --- a/systemvm/debian/opt/cloud/bin/configure.py +++ b/systemvm/debian/opt/cloud/bin/configure.py @@ -937,12 +937,9 @@ def processStaticNatRule(self, rule): self.fw.append(["filter", "", "-A FORWARD -i %s -o eth0 -d %s -m state --state NEW -j ACCEPT " % (device, rule["internal_ip"])]) - # Configure the hairpin nat - self.fw.append(["nat", "front", - "-A PREROUTING -d %s -i eth0 -j DNAT --to-destination %s" % (rule["public_ip"], rule["internal_ip"])]) - - self.fw.append(["nat", "front", "-A POSTROUTING -s %s -d %s -j SNAT -o eth0 --to-source %s" % - (self.getNetworkByIp(rule['internal_ip']), rule["internal_ip"], self.getGuestIp())]) + # Configure the hairpin snat + self.fw.append(["nat", "front", "-A POSTROUTING -s %s -d %s -j SNAT -o %s --to-source %s" % + (self.getNetworkByIp(rule['internal_ip']), rule["internal_ip"], self.getDeviceByIp(rule["internal_ip"]), self.getGuestIp())]) class IpTablesExecutor: diff --git a/systemvm/debian/opt/cloud/bin/cs/CsAddress.py b/systemvm/debian/opt/cloud/bin/cs/CsAddress.py index 3212dff71eee..10b6d3cfdbe9 100755 --- a/systemvm/debian/opt/cloud/bin/cs/CsAddress.py +++ b/systemvm/debian/opt/cloud/bin/cs/CsAddress.py @@ -476,9 +476,10 @@ def fw_vpcrouter(self): self.fw.append(["", "front", "-A NETWORK_STATS_%s -o %s -s %s" % ("eth1", "eth1", guestNetworkCidr)]) - self.fw.append(["nat", "front", - "-A POSTROUTING -s %s -o %s -j SNAT --to-source %s" % - (guestNetworkCidr, self.dev, self.address['public_ip'])]) + 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'])]) if self.get_type() in ["public"]: self.fw.append(