@@ -138,6 +138,7 @@ func setupIPTablesInternal(bridgeIface string, addr net.Addr, icc, ipmasq, hairp
138138 address = addr .String ()
139139 natRule = iptRule {table : iptables .Nat , chain : "POSTROUTING" , preArgs : []string {"-t" , "nat" }, args : []string {"-s" , address , "!" , "-o" , bridgeIface , "-j" , "MASQUERADE" }}
140140 hpNatRule = iptRule {table : iptables .Nat , chain : "POSTROUTING" , preArgs : []string {"-t" , "nat" }, args : []string {"-m" , "addrtype" , "--src-type" , "LOCAL" , "-o" , bridgeIface , "-j" , "MASQUERADE" }}
141+ skipDNAT = iptRule {table : iptables .Nat , chain : DockerChain , preArgs : []string {"-t" , "nat" }, args : []string {"-i" , bridgeIface , "-j" , "RETURN" }}
141142 outRule = iptRule {table : iptables .Filter , chain : "FORWARD" , args : []string {"-i" , bridgeIface , "!" , "-o" , bridgeIface , "-j" , "ACCEPT" }}
142143 inRule = iptRule {table : iptables .Filter , chain : "FORWARD" , args : []string {"-o" , bridgeIface , "-m" , "conntrack" , "--ctstate" , "RELATED,ESTABLISHED" , "-j" , "ACCEPT" }}
143144 )
@@ -147,6 +148,9 @@ func setupIPTablesInternal(bridgeIface string, addr net.Addr, icc, ipmasq, hairp
147148 if err := programChainRule (natRule , "NAT" , enable ); err != nil {
148149 return err
149150 }
151+ if err := programChainRule (skipDNAT , "SKIP DNAT" , enable ); err != nil {
152+ return err
153+ }
150154 }
151155
152156 // In hairpin mode, masquerade traffic from localhost
0 commit comments