Commit 60bde9fb authored by m1093782566's avatar m1093782566

fix nodeport localhost martian source error

parent cfc1d473
...@@ -1172,6 +1172,7 @@ func (proxier *Proxier) syncProxyRules() { ...@@ -1172,6 +1172,7 @@ func (proxier *Proxier) syncProxyRules() {
// Build rules for each service. // Build rules for each service.
var svcNameString string var svcNameString string
for svcName, svcInfo := range proxier.serviceMap { for svcName, svcInfo := range proxier.serviceMap {
isIPv6 := utilproxy.IsIPv6(svcInfo.clusterIP)
protocol := strings.ToLower(string(svcInfo.protocol)) protocol := strings.ToLower(string(svcInfo.protocol))
svcNameString = svcInfo.serviceNameString svcNameString = svcInfo.serviceNameString
...@@ -1384,7 +1385,6 @@ func (proxier *Proxier) syncProxyRules() { ...@@ -1384,7 +1385,6 @@ func (proxier *Proxier) syncProxyRules() {
// This is very low impact. The NodePort range is intentionally obscure, and unlikely to actually collide with real Services. // This is very low impact. The NodePort range is intentionally obscure, and unlikely to actually collide with real Services.
// This only affects UDP connections, which are not common. // This only affects UDP connections, which are not common.
// See issue: https://github.com/kubernetes/kubernetes/issues/49881 // See issue: https://github.com/kubernetes/kubernetes/issues/49881
isIPv6 := utilproxy.IsIPv6(svcInfo.clusterIP)
err := utilproxy.ClearUDPConntrackForPort(proxier.exec, lp.Port, isIPv6) err := utilproxy.ClearUDPConntrackForPort(proxier.exec, lp.Port, isIPv6)
if err != nil { if err != nil {
glog.Errorf("Failed to clear udp conntrack for port %d, error: %v", lp.Port, err) glog.Errorf("Failed to clear udp conntrack for port %d, error: %v", lp.Port, err)
...@@ -1407,6 +1407,13 @@ func (proxier *Proxier) syncProxyRules() { ...@@ -1407,6 +1407,13 @@ func (proxier *Proxier) syncProxyRules() {
} else { } else {
// TODO: Make all nodePorts jump to the firewall chain. // TODO: Make all nodePorts jump to the firewall chain.
// Currently we only create it for loadbalancers (#33586). // Currently we only create it for loadbalancers (#33586).
// Fix localhost martian source error
loopback := "127.0.0.0/8"
if isIPv6 {
loopback = "::1/128"
}
writeLine(proxier.natRules, append(args, "-s", loopback, "-j", string(KubeMarkMasqChain))...)
writeLine(proxier.natRules, append(args, "-j", string(svcXlbChain))...) writeLine(proxier.natRules, append(args, "-j", string(svcXlbChain))...)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment