mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #80591 from danwinship/no-localhost-snat
hostport: Don't masquerade localhost-to-localhost traffic
This commit is contained in:
commit
0775e6b2db
@ -134,10 +134,12 @@ func ensureKubeHostportChains(iptables utiliptables.Interface, natInterfaceName
|
|||||||
return fmt.Errorf("Failed to ensure that %s chain %s jumps to %s: %v", tc.table, tc.chain, kubeHostportsChain, err)
|
return fmt.Errorf("Failed to ensure that %s chain %s jumps to %s: %v", tc.table, tc.chain, kubeHostportsChain, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Need to SNAT traffic from localhost
|
if natInterfaceName != "" && natInterfaceName != "lo" {
|
||||||
args = []string{"-m", "comment", "--comment", "SNAT for localhost access to hostports", "-o", natInterfaceName, "-s", "127.0.0.0/8", "-j", "MASQUERADE"}
|
// Need to SNAT traffic from localhost
|
||||||
if _, err := iptables.EnsureRule(utiliptables.Append, utiliptables.TableNAT, utiliptables.ChainPostrouting, args...); err != nil {
|
args = []string{"-m", "comment", "--comment", "SNAT for localhost access to hostports", "-o", natInterfaceName, "-s", "127.0.0.0/8", "-j", "MASQUERADE"}
|
||||||
return fmt.Errorf("Failed to ensure that %s chain %s jumps to MASQUERADE: %v", utiliptables.TableNAT, utiliptables.ChainPostrouting, err)
|
if _, err := iptables.EnsureRule(utiliptables.Append, utiliptables.TableNAT, utiliptables.ChainPostrouting, args...); err != nil {
|
||||||
|
return fmt.Errorf("Failed to ensure that %s chain %s jumps to MASQUERADE: %v", utiliptables.TableNAT, utiliptables.ChainPostrouting, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ type HostPortManager interface {
|
|||||||
// Add implements port mappings.
|
// Add implements port mappings.
|
||||||
// id should be a unique identifier for a pod, e.g. podSandboxID.
|
// id should be a unique identifier for a pod, e.g. podSandboxID.
|
||||||
// podPortMapping is the associated port mapping information for the pod.
|
// podPortMapping is the associated port mapping information for the pod.
|
||||||
// natInterfaceName is the interface that localhost used to talk to the given pod.
|
// natInterfaceName is the interface that localhost uses to talk to the given pod, if known.
|
||||||
Add(id string, podPortMapping *PodPortMapping, natInterfaceName string) error
|
Add(id string, podPortMapping *PodPortMapping, natInterfaceName string) error
|
||||||
// Remove cleans up matching port mappings
|
// Remove cleans up matching port mappings
|
||||||
// Remove must be able to clean up port mappings without pod IP
|
// Remove must be able to clean up port mappings without pod IP
|
||||||
|
Loading…
Reference in New Issue
Block a user