Browse Source

Merge pull request #44803 from akerouanton/fix-44721

libnetwork: Remove iptables nat rule when hairpin is disabled
Bjorn Neergaard 2 years ago
parent
commit
dae48a8064
1 changed files with 4 additions and 5 deletions
  1. 4 5
      libnetwork/drivers/bridge/setup_ip_tables.go

+ 4 - 5
libnetwork/drivers/bridge/setup_ip_tables.go

@@ -244,11 +244,10 @@ func setupIPTablesInternal(hostIP net.IP, bridgeIface string, addr *net.IPNet, i
 		}
 		}
 	}
 	}
 
 
-	// In hairpin mode, masquerade traffic from localhost
-	if hairpin {
-		if err := programChainRule(ipVersion, hpNatRule, "MASQ LOCAL HOST", enable); err != nil {
-			return err
-		}
+	// In hairpin mode, masquerade traffic from localhost. If hairpin is disabled or if we're tearing down
+	// that bridge, make sure the iptables rule isn't lying around.
+	if err := programChainRule(ipVersion, hpNatRule, "MASQ LOCAL HOST", enable && hairpin); err != nil {
+		return err
 	}
 	}
 
 
 	// Set Inter Container Communication.
 	// Set Inter Container Communication.