diff --git a/patches/systemvm/debian/config/root/ipassoc.sh b/patches/systemvm/debian/config/root/ipassoc.sh index 6d6013e1ba5..0461f620436 100644 --- a/patches/systemvm/debian/config/root/ipassoc.sh +++ b/patches/systemvm/debian/config/root/ipassoc.sh @@ -205,13 +205,15 @@ add_routing() { return 0; } add_snat() { + local pubIp=$1 + local ipNoMask=$(echo $1 | awk -F'/' '{print $1}') if [ "$sflag" == "0" ] then + logger -t cloud "$(basename $0):Remove SourceNAT $pubIp on interface $ethDev if it is present" + sudo iptables -t nat -D POSTROUTING -j SNAT -o $ethDev --to-source $ipNoMask ; return 0; fi - local pubIp=$1 - local ipNoMask=$(echo $1 | awk -F'/' '{print $1}') logger -t cloud "$(basename $0):Added SourceNAT $pubIp on interface $ethDev" sudo iptables -t nat -D POSTROUTING -j SNAT -o $ethDev --to-source $ipNoMask ; sudo iptables -t nat -A POSTROUTING -j SNAT -o $ethDev --to-source $ipNoMask ; diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index dcd4c11db36..4c3407babb7 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -2186,6 +2186,10 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian boolean add = (ipAddr.getState() == IpAddress.State.Releasing ? false : true); boolean sourceNat = ipAddr.isSourceNat(); + /* enable sourceNAT for the first ip of the public interface */ + if (firstIP) { + sourceNat = true; + } String vlanId = ipAddr.getVlanTag(); String vlanGateway = ipAddr.getGateway(); String vlanNetmask = ipAddr.getNetmask();