diff --git a/dist/images/uninstall.sh b/dist/images/uninstall.sh index 86516b25405..5390503da9c 100644 --- a/dist/images/uninstall.sh +++ b/dist/images/uninstall.sh @@ -16,11 +16,13 @@ iptables -t filter -D INPUT -m set --match-set ovn40subnets dst -j ACCEPT iptables -t filter -D INPUT -m set --match-set ovn40subnets src -j ACCEPT iptables -t filter -D INPUT -m set --match-set ovn40services dst -j ACCEPT iptables -t filter -D INPUT -m set --match-set ovn40services src -j ACCEPT +iptables -t filter -D INPUT -m mark ! --mark 0x4000/0x4000 -m set --match-set ovn40services dst -m conntrack --ctstate NEW -j REJECT iptables -t filter -D FORWARD -m set --match-set ovn40subnets dst -j ACCEPT iptables -t filter -D FORWARD -m set --match-set ovn40subnets src -j ACCEPT iptables -t filter -D FORWARD -m set --match-set ovn40services dst -j ACCEPT iptables -t filter -D FORWARD -m set --match-set ovn40services src -j ACCEPT iptables -t filter -D OUTPUT -p udp -m udp --dport 6081 -j MARK --set-xmark 0x0 +iptables -t filter -D OUTPUT -m mark ! --mark 0x4000/0x4000 -m set --match-set ovn40services dst -m conntrack --ctstate NEW -j REJECT iptables -t mangle -D PREROUTING -m comment --comment "kube-ovn prerouting rules" -j OVN-PREROUTING iptables -t mangle -D OUTPUT -m comment --comment "kube-ovn output rules" -j OVN-OUTPUT iptables -t mangle -F OVN-PREROUTING @@ -52,11 +54,13 @@ ip6tables -t filter -D INPUT -m set --match-set ovn60subnets dst -j ACCEPT ip6tables -t filter -D INPUT -m set --match-set ovn60subnets src -j ACCEPT ip6tables -t filter -D INPUT -m set --match-set ovn60services dst -j ACCEPT ip6tables -t filter -D INPUT -m set --match-set ovn60services src -j ACCEPT +ip6tables -t filter -D INPUT -m mark ! --mark 0x4000/0x4000 -m set --match-set ovn60services dst -m conntrack --ctstate NEW -j REJECT ip6tables -t filter -D FORWARD -m set --match-set ovn60subnets dst -j ACCEPT ip6tables -t filter -D FORWARD -m set --match-set ovn60subnets src -j ACCEPT ip6tables -t filter -D FORWARD -m set --match-set ovn60services dst -j ACCEPT ip6tables -t filter -D FORWARD -m set --match-set ovn60services src -j ACCEPT ip6tables -t filter -D OUTPUT -p udp -m udp --dport 6081 -j MARK --set-xmark 0x0 +ip6tables -t filter -D OUTPUT -m mark ! --mark 0x4000/0x4000 -m set --match-set ovn60services dst -m conntrack --ctstate NEW -j REJECT ip6tables -t mangle -D PREROUTING -m comment --comment "kube-ovn prerouting rules" -j OVN-PREROUTING ip6tables -t mangle -D OUTPUT -m comment --comment "kube-ovn output rules" -j OVN-OUTPUT ip6tables -t mangle -F OVN-PREROUTING diff --git a/pkg/daemon/gateway_linux.go b/pkg/daemon/gateway_linux.go index 45dc72a4ba7..b278a02f641 100644 --- a/pkg/daemon/gateway_linux.go +++ b/pkg/daemon/gateway_linux.go @@ -616,6 +616,21 @@ func (c *Controller) setIptables() error { kubeProxyIpsetProtocol, matchset, svcMatchset, nodeMatchSet = "6-", "ovn60subnets", "ovn60services", "ovn60"+OtherNodeSet } + ipset := fmt.Sprintf("KUBE-%sCLUSTER-IP", kubeProxyIpsetProtocol) + ipsetExists, err := c.ipsetExists(ipset) + if err != nil { + klog.Error("failed to check existence of ipset %s: %v", ipset, err) + return err + } + if ipsetExists { + iptablesRules[0].Rule = strings.Fields(fmt.Sprintf(`-i ovn0 -m set --match-set %s src -m set --match-set %s dst,dst -j MARK --set-xmark 0x4000/0x4000`, matchset, ipset)) + rejectRule := strings.Fields(fmt.Sprintf(`-m mark ! --mark 0x4000/0x4000 -m set --match-set %s dst -m conntrack --ctstate NEW -j REJECT`, svcMatchset)) + iptablesRules = append(iptablesRules, + util.IPTableRule{Table: "filter", Chain: "INPUT", Rule: rejectRule}, + util.IPTableRule{Table: "filter", Chain: "OUTPUT", Rule: rejectRule}, + ) + } + if nodeIP := nodeIPs[protocol]; nodeIP != "" { obsoleteRules = []util.IPTableRule{ {Table: NAT, Chain: Postrouting, Rule: strings.Fields(fmt.Sprintf(`! -s %s -m set --match-set %s dst -j MASQUERADE`, nodeIP, matchset))},