From 1efc4080e8cb8fb22717df097db0b256a488d4b6 Mon Sep 17 00:00:00 2001 From: vakr Date: Tue, 5 Jan 2021 11:35:54 -0800 Subject: [PATCH 1/7] first pass trying to return instead of accept --- npm/iptm/iptm.go | 26 +++++++++-------- npm/translatePolicy.go | 64 +++++++++++++++++++++--------------------- npm/util/const.go | 1 + 3 files changed, 47 insertions(+), 44 deletions(-) diff --git a/npm/iptm/iptm.go b/npm/iptm/iptm.go index 757a4efa2d..a38762efbe 100644 --- a/npm/iptm/iptm.go +++ b/npm/iptm/iptm.go @@ -151,20 +151,22 @@ func (iptMgr *IptablesManager) InitNpmChains() error { } // Append AZURE-NPM-TARGET-SETS chain to AZURE-NPM chain. - entry.Chain = util.IptablesAzureChain - entry.Specs = []string{util.IptablesJumpFlag, util.IptablesAzureTargetSetsChain} - exists, err = iptMgr.Exists(entry) - if err != nil { - return err - } - - if !exists { - iptMgr.OperationFlag = util.IptablesAppendFlag - if _, err := iptMgr.Run(entry); err != nil { - metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add AZURE-NPM-TARGET-SETS chain to AZURE-NPM chain.") + /* + entry.Chain = util.IptablesAzureChain + entry.Specs = []string{util.IptablesJumpFlag, util.IptablesAzureTargetSetsChain} + exists, err = iptMgr.Exists(entry) + if err != nil { return err } - } + + if !exists { + iptMgr.OperationFlag = util.IptablesAppendFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add AZURE-NPM-TARGET-SETS chain to AZURE-NPM chain.") + return err + } + } + */ // Add default allow CONNECTED/RELATED rule to AZURE-NPM chain. entry.Chain = util.IptablesAzureChain diff --git a/npm/translatePolicy.go b/npm/translatePolicy.go index 3c70cc835c..27a234f12a 100644 --- a/npm/translatePolicy.go +++ b/npm/translatePolicy.go @@ -224,7 +224,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -256,7 +256,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(portName), util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -274,7 +274,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -333,7 +333,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(portName), util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -362,7 +362,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -388,7 +388,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(cidrIpsetName), util.IptablesSrcFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -448,7 +448,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(portName), util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -473,7 +473,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -498,7 +498,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -545,7 +545,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(portName), util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -570,7 +570,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -595,7 +595,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -659,7 +659,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(portName), util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -689,7 +689,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -719,7 +719,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -740,7 +740,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -877,7 +877,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(util.KubeAllNamespacesFlag), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -909,7 +909,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(portName), util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -927,7 +927,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -986,7 +986,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(portName), util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1015,7 +1015,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1047,7 +1047,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1107,7 +1107,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(portName), util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1132,7 +1132,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1157,7 +1157,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1204,7 +1204,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(portName), util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1229,7 +1229,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1254,7 +1254,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1318,7 +1318,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(portName), util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1348,7 +1348,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1378,7 +1378,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1399,7 +1399,7 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, diff --git a/npm/util/const.go b/npm/util/const.go index 0e0e9319ab..f9f6a35841 100644 --- a/npm/util/const.go +++ b/npm/util/const.go @@ -40,6 +40,7 @@ const ( IptablesAccept string = "ACCEPT" IptablesReject string = "REJECT" IptablesDrop string = "DROP" + IptablesReturn string = "RETURN" IptablesSrcFlag string = "src" IptablesDstFlag string = "dst" IptablesNotFlag string = "!" From 52edda4ae8a6c7d0531680affe0193dcd73a3f93 Mon Sep 17 00:00:00 2001 From: vakr Date: Thu, 7 Jan 2021 13:04:55 -0800 Subject: [PATCH 2/7] Adding initial marking capability --- npm/iptm/iptm.go | 215 ++++++++++++++++++++++++++++++++++++++--- npm/translatePolicy.go | 128 ++++++++++++++++++------ npm/util/const.go | 8 ++ 3 files changed, 305 insertions(+), 46 deletions(-) diff --git a/npm/iptm/iptm.go b/npm/iptm/iptm.go index a38762efbe..0f64940aba 100644 --- a/npm/iptm/iptm.go +++ b/npm/iptm/iptm.go @@ -114,11 +114,65 @@ func (iptMgr *IptablesManager) InitNpmChains() error { } } + // Insert a RETURN on MARK rule for INGRESS in in AZURE-NPM-INGRESS-PORT chain + entry.Chain = util.IptablesAzureIngressPortChain + entry.Specs = []string{ + util.IptablesJumpFlag, + util.IptablesReturn, + util.IptablesModuleFlag, + util.IptablesMarkVerb, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, + util.IptablesModuleFlag, + util.IptablesCommentModuleFlag, + util.IptablesCommentFlag, + "RETURN-on-INGRESS-mark-0x2000", + } + exists, err = iptMgr.Exists(entry) + if err != nil { + return err + } + + if !exists { + iptMgr.OperationFlag = util.IptablesInsertionFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add default RETURN on INGRESS mark in AZURE-NPM-INGRESS-PORT chain.") + return err + } + } + // Create AZURE-NPM-INGRESS-FROM chain. if err = iptMgr.AddChain(util.IptablesAzureIngressFromChain); err != nil { return err } + // Insert a RETURN on MARK rule for INGRESS in in AZURE-NPM-INGRESS-FROM chain + entry.Chain = util.IptablesAzureIngressFromChain + entry.Specs = []string{ + util.IptablesJumpFlag, + util.IptablesReturn, + util.IptablesModuleFlag, + util.IptablesMarkVerb, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, + util.IptablesModuleFlag, + util.IptablesCommentModuleFlag, + util.IptablesCommentFlag, + "RETURN-on-INGRESS-mark-0x2000", + } + exists, err = iptMgr.Exists(entry) + if err != nil { + return err + } + + if !exists { + iptMgr.OperationFlag = util.IptablesInsertionFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add default RETURN on INGRESS mark in AZURE-NPM-INGRESS-FROM chain.") + return err + } + } + // Create AZURE-NPM-EGRESS-PORT chain. if err := iptMgr.AddChain(util.IptablesAzureEgressPortChain); err != nil { return err @@ -135,7 +189,61 @@ func (iptMgr *IptablesManager) InitNpmChains() error { if !exists { iptMgr.OperationFlag = util.IptablesAppendFlag if _, err := iptMgr.Run(entry); err != nil { - metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add AZURE-NPM-INGRESS-PORT chain to AZURE-NPM chain.") + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add AZURE-NPM-EGRESS-PORT chain to AZURE-NPM chain.") + return err + } + } + + // Insert a RETURN on MARK rule for EGRESS in AZURE-NPM-EGRESS-PORT + entry.Chain = util.IptablesAzureEgressPortChain + entry.Specs = []string{ + util.IptablesJumpFlag, + util.IptablesReturn, + util.IptablesModuleFlag, + util.IptablesMarkVerb, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, + util.IptablesModuleFlag, + util.IptablesCommentModuleFlag, + util.IptablesCommentFlag, + "RETURN-on-EGRESS-mark-0x1000", + } + exists, err = iptMgr.Exists(entry) + if err != nil { + return err + } + + if !exists { + iptMgr.OperationFlag = util.IptablesInsertionFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add default RETURN on EGRESS mark in AZURE-NPM-EGRESS-PORT chain.") + return err + } + } + + // Insert a RETURN on MARK rule for EGRESS + INGRESS in AZURE-NPM-EGRESS-PORT + entry.Chain = util.IptablesAzureEgressPortChain + entry.Specs = []string{ + util.IptablesJumpFlag, + util.IptablesReturn, + util.IptablesModuleFlag, + util.IptablesMarkVerb, + util.IptablesMarkFlag, + util.IptablesAzureAcceptMarkHex, + util.IptablesModuleFlag, + util.IptablesCommentModuleFlag, + util.IptablesCommentFlag, + "RETURN-on-EGRESS-and-INGRESS-mark-0x3000", + } + exists, err = iptMgr.Exists(entry) + if err != nil { + return err + } + + if !exists { + iptMgr.OperationFlag = util.IptablesInsertionFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add default RETURN on EGRESS and INGRESS mark in AZURE-NPM-EGRESS-PORT chain.") return err } } @@ -150,23 +258,102 @@ func (iptMgr *IptablesManager) InitNpmChains() error { return err } - // Append AZURE-NPM-TARGET-SETS chain to AZURE-NPM chain. - /* - entry.Chain = util.IptablesAzureChain - entry.Specs = []string{util.IptablesJumpFlag, util.IptablesAzureTargetSetsChain} - exists, err = iptMgr.Exists(entry) - if err != nil { + // Insert a RETURN on MARK rule for EGRESS in AZURE-NPM-EGRESS-TO + entry.Chain = util.IptablesAzureEgressToChain + entry.Specs = []string{ + util.IptablesJumpFlag, + util.IptablesReturn, + util.IptablesModuleFlag, + util.IptablesMarkVerb, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, + util.IptablesModuleFlag, + util.IptablesCommentModuleFlag, + util.IptablesCommentFlag, + "RETURN-on-EGRESS-mark-0x1000", + } + exists, err = iptMgr.Exists(entry) + if err != nil { + return err + } + + if !exists { + iptMgr.OperationFlag = util.IptablesInsertionFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add default RETURN on EGRESS mark in AZURE-NPM-EGRESS-TO chain.") + return err + } + } + + // Insert a RETURN on MARK rule for EGRESS + INGRESS in AZURE-NPM-EGRESS-TO + entry.Chain = util.IptablesAzureEgressToChain + entry.Specs = []string{ + util.IptablesJumpFlag, + util.IptablesReturn, + util.IptablesModuleFlag, + util.IptablesMarkVerb, + util.IptablesMarkFlag, + util.IptablesAzureAcceptMarkHex, + util.IptablesModuleFlag, + util.IptablesCommentModuleFlag, + util.IptablesCommentFlag, + "RETURN-on-EGRESS-and-INGRESS-mark-0x3000", + } + exists, err = iptMgr.Exists(entry) + if err != nil { + return err + } + + if !exists { + iptMgr.OperationFlag = util.IptablesInsertionFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add default RETURN on EGRESS and INGRESS mark in AZURE-NPM-EGRESS-TO chain.") return err } + } - if !exists { - iptMgr.OperationFlag = util.IptablesAppendFlag - if _, err := iptMgr.Run(entry); err != nil { - metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add AZURE-NPM-TARGET-SETS chain to AZURE-NPM chain.") - return err - } + // Insert a ACCEPT rule for marked packets + entry.Chain = util.IptablesAzureChain + entry.Specs = []string{ + util.IptablesJumpFlag, + util.IptablesAccept, + util.IptablesModuleFlag, + util.IptablesMarkVerb, + util.IptablesMarkFlag, + util.IptablesAzureAcceptMarkHex, + util.IptablesModuleFlag, + util.IptablesCommentModuleFlag, + util.IptablesCommentFlag, + "ACCEPT-on-INGRESS-and-EGRESS-mark-0x3000", + } + exists, err = iptMgr.Exists(entry) + if err != nil { + return err + } + + if !exists { + iptMgr.OperationFlag = util.IptablesInsertionFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add marked ACCEPT rule to AZURE-NPM chain.") + return err + } + } + + // Append AZURE-NPM-TARGET-SETS chain to AZURE-NPM chain. + entry.Chain = util.IptablesAzureChain + entry.Specs = []string{util.IptablesJumpFlag, util.IptablesAzureTargetSetsChain} + exists, err = iptMgr.Exists(entry) + if err != nil { + return err + } + + if !exists { + iptMgr.OperationFlag = util.IptablesAppendFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add AZURE-NPM-TARGET-SETS chain to AZURE-NPM chain.") + return err } - */ + } // Add default allow CONNECTED/RELATED rule to AZURE-NPM chain. entry.Chain = util.IptablesAzureChain diff --git a/npm/translatePolicy.go b/npm/translatePolicy.go index 27a234f12a..bd5fb9aa96 100644 --- a/npm/translatePolicy.go +++ b/npm/translatePolicy.go @@ -224,7 +224,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -256,7 +258,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(portName), util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -274,7 +278,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -333,7 +339,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(portName), util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -362,7 +370,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -388,7 +398,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(cidrIpsetName), util.IptablesSrcFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -448,7 +460,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(portName), util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -473,7 +487,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -498,7 +514,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -545,7 +563,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(portName), util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -570,7 +590,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -595,7 +617,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -659,7 +683,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.GetHashedName(portName), util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -689,7 +715,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -719,7 +747,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -740,7 +770,9 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -877,7 +909,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(util.KubeAllNamespacesFlag), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -909,7 +943,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(portName), util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -927,7 +963,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -986,7 +1024,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(portName), util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1015,7 +1055,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1047,7 +1089,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1107,7 +1151,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(portName), util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1132,7 +1178,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1157,7 +1205,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1204,7 +1254,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(portName), util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1229,7 +1281,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1254,7 +1308,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1318,7 +1374,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.GetHashedName(portName), util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1348,7 +1406,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1378,7 +1438,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1399,7 +1461,9 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs = append( entry.Specs, util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesMark, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, diff --git a/npm/util/const.go b/npm/util/const.go index f9f6a35841..2dac16970b 100644 --- a/npm/util/const.go +++ b/npm/util/const.go @@ -41,6 +41,7 @@ const ( IptablesReject string = "REJECT" IptablesDrop string = "DROP" IptablesReturn string = "RETURN" + IptablesMark string = "MARK" IptablesSrcFlag string = "src" IptablesDstFlag string = "dst" IptablesNotFlag string = "!" @@ -51,6 +52,9 @@ const ( IptablesModuleFlag string = "-m" IptablesSetModuleFlag string = "set" IptablesMatchSetFlag string = "--match-set" + IptablesSetMarkFlag string = "--set-mark" + IptablesMarkFlag string = "--mark" + IptablesMarkVerb string = "mark" IptablesStateModuleFlag string = "state" IptablesStateFlag string = "--state" IptablesMultiportFlag string = "multiport" @@ -76,6 +80,10 @@ const ( IptablesAzureIngressFromPodChain string = "AZURE-NPM-INGRESS-FROM-POD" IptablesAzureEgressToNsChain string = "AZURE-NPM-EGRESS-TO-NS" IptablesAzureEgressToPodChain string = "AZURE-NPM-EGRESS-TO-POD" + // Below are the ctmark NPM will use for different criteria + IptablesAzureIngressMarkHex string = "0x2000" + IptablesAzureEgressMarkHex string = "0x1000/0x1000" + IptablesAzureAcceptMarkHex string = "0x3000" ) //ipset related constants. From 245bf1de02734865b86f20203485593c0927aa55 Mon Sep 17 00:00:00 2001 From: vakr Date: Mon, 11 Jan 2021 10:44:33 -0800 Subject: [PATCH 3/7] Adding accept on ingress and egress marks --- npm/iptm/iptm.go | 63 +++++++++++++++++++++++++-- npm/translatePolicy.go | 98 +++++++++++++++++++++--------------------- npm/util/const.go | 3 +- 3 files changed, 110 insertions(+), 54 deletions(-) diff --git a/npm/iptm/iptm.go b/npm/iptm/iptm.go index 0f64940aba..df42f29a51 100644 --- a/npm/iptm/iptm.go +++ b/npm/iptm/iptm.go @@ -225,7 +225,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { entry.Chain = util.IptablesAzureEgressPortChain entry.Specs = []string{ util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesAccept, util.IptablesModuleFlag, util.IptablesMarkVerb, util.IptablesMarkFlag, @@ -289,7 +289,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { entry.Chain = util.IptablesAzureEgressToChain entry.Specs = []string{ util.IptablesJumpFlag, - util.IptablesReturn, + util.IptablesAccept, util.IptablesModuleFlag, util.IptablesMarkVerb, util.IptablesMarkFlag, @@ -312,7 +312,8 @@ func (iptMgr *IptablesManager) InitNpmChains() error { } } - // Insert a ACCEPT rule for marked packets + // TODO move this in to a function for readability + // Insert a ACCEPT rule for INGRESS-and-EGRESS marked packets entry.Chain = util.IptablesAzureChain entry.Specs = []string{ util.IptablesJumpFlag, @@ -332,13 +333,67 @@ func (iptMgr *IptablesManager) InitNpmChains() error { } if !exists { - iptMgr.OperationFlag = util.IptablesInsertionFlag + iptMgr.OperationFlag = util.IptablesAppendFlag if _, err := iptMgr.Run(entry); err != nil { metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add marked ACCEPT rule to AZURE-NPM chain.") return err } } + // Insert a ACCEPT rule for INGRESS marked packets + entry.Chain = util.IptablesAzureChain + entry.Specs = []string{ + util.IptablesJumpFlag, + util.IptablesAccept, + util.IptablesModuleFlag, + util.IptablesMarkVerb, + util.IptablesMarkFlag, + util.IptablesAzureIngressMarkHex, + util.IptablesModuleFlag, + util.IptablesCommentModuleFlag, + util.IptablesCommentFlag, + "ACCEPT-on-INGRESS-mark-0x2000", + } + exists, err = iptMgr.Exists(entry) + if err != nil { + return err + } + + if !exists { + iptMgr.OperationFlag = util.IptablesAppendFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add marked ACCEPT rule for INGRESS mark 0x2000 to AZURE-NPM chain.") + return err + } + } + + // Insert a ACCEPT rule for EGRESS marked packets + entry.Chain = util.IptablesAzureChain + entry.Specs = []string{ + util.IptablesJumpFlag, + util.IptablesAccept, + util.IptablesModuleFlag, + util.IptablesMarkVerb, + util.IptablesMarkFlag, + util.IptablesAzureEgressMarkHex, + util.IptablesModuleFlag, + util.IptablesCommentModuleFlag, + util.IptablesCommentFlag, + "ACCEPT-on-EGRESS-mark-0x1000", + } + exists, err = iptMgr.Exists(entry) + if err != nil { + return err + } + + if !exists { + iptMgr.OperationFlag = util.IptablesAppendFlag + if _, err := iptMgr.Run(entry); err != nil { + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add marked ACCEPT rule for EGRESS mark 0x1000 to AZURE-NPM chain.") + return err + } + } + // Append AZURE-NPM-TARGET-SETS chain to AZURE-NPM chain. entry.Chain = util.IptablesAzureChain entry.Specs = []string{util.IptablesJumpFlag, util.IptablesAzureTargetSetsChain} diff --git a/npm/translatePolicy.go b/npm/translatePolicy.go index bd5fb9aa96..fde0afc9ff 100644 --- a/npm/translatePolicy.go +++ b/npm/translatePolicy.go @@ -225,7 +225,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -259,7 +259,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -279,7 +279,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -340,7 +340,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -371,7 +371,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -399,7 +399,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.IptablesSrcFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -461,7 +461,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -488,7 +488,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -515,7 +515,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -564,7 +564,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -591,7 +591,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -618,7 +618,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -684,7 +684,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.IptablesDstFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -716,7 +716,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -748,8 +748,8 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -771,7 +771,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, + util.IptablesSetMarkFlag, util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, @@ -910,8 +910,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -944,8 +944,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -964,8 +964,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1025,8 +1025,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1056,8 +1056,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1090,8 +1090,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1152,8 +1152,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1179,8 +1179,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1206,8 +1206,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1255,8 +1255,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1282,8 +1282,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1309,8 +1309,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1375,8 +1375,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe util.IptablesSrcFlag+","+util.IptablesDstFlag, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1407,8 +1407,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1439,8 +1439,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1462,8 +1462,8 @@ func translateEgress(ns string, policyName string, targetSelector metav1.LabelSe entry.Specs, util.IptablesJumpFlag, util.IptablesMark, - util.IptablesMarkFlag, - util.IptablesAzureEgressMarkHex, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, diff --git a/npm/util/const.go b/npm/util/const.go index 2dac16970b..2cd0ae50b3 100644 --- a/npm/util/const.go +++ b/npm/util/const.go @@ -82,7 +82,8 @@ const ( IptablesAzureEgressToPodChain string = "AZURE-NPM-EGRESS-TO-POD" // Below are the ctmark NPM will use for different criteria IptablesAzureIngressMarkHex string = "0x2000" - IptablesAzureEgressMarkHex string = "0x1000/0x1000" + IptablesAzureEgressXMarkHex string = "0x1000/0x1000" + IptablesAzureEgressMarkHex string = "0x1000" IptablesAzureAcceptMarkHex string = "0x3000" ) From 98bb6de45bf3ceadb49d3133da8b47b88afdc313 Mon Sep 17 00:00:00 2001 From: vakr Date: Wed, 13 Jan 2021 11:54:52 -0800 Subject: [PATCH 4/7] Correcting an ingress marker --- npm/translatePolicy.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/translatePolicy.go b/npm/translatePolicy.go index fde0afc9ff..7e8cc24ec7 100644 --- a/npm/translatePolicy.go +++ b/npm/translatePolicy.go @@ -749,7 +749,7 @@ func translateIngress(ns string, policyName string, targetSelector metav1.LabelS util.IptablesJumpFlag, util.IptablesMark, util.IptablesSetMarkFlag, - util.IptablesAzureEgressXMarkHex, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, From 843793d4f8b03b961951b3c845ac4e5c9e4c0252 Mon Sep 17 00:00:00 2001 From: vakr Date: Wed, 13 Jan 2021 15:10:47 -0800 Subject: [PATCH 5/7] Correcting unit test cases to show the appropriate markers --- npm/translatePolicy_test.go | 120 +++++++++++++++++++++++++++--------- 1 file changed, 90 insertions(+), 30 deletions(-) diff --git a/npm/translatePolicy_test.go b/npm/translatePolicy_test.go index 66e09c398e..1cb614b4da 100644 --- a/npm/translatePolicy_test.go +++ b/npm/translatePolicy_test.go @@ -710,7 +710,9 @@ func TestTranslateIngress(t *testing.T) { util.IptablesDstPortFlag, "6783", util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -751,7 +753,9 @@ func TestTranslateIngress(t *testing.T) { util.IptablesDstPortFlag, "6783", util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -803,7 +807,9 @@ func TestTranslateIngress(t *testing.T) { util.IptablesDstPortFlag, "6783", util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1015,7 +1021,9 @@ func TestTranslateEgress(t *testing.T) { util.GetHashedName("testNotIn:frontend"), util.IptablesSrcFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1056,7 +1064,9 @@ func TestTranslateEgress(t *testing.T) { util.GetHashedName("testNotIn:frontend"), util.IptablesSrcFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1108,7 +1118,9 @@ func TestTranslateEgress(t *testing.T) { util.IptablesDstPortFlag, "6783", util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1252,7 +1264,9 @@ func TestAllowBackendToFrontend(t *testing.T) { util.GetHashedName("app:backend"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1379,7 +1393,9 @@ func TestAllowAllToAppFrontend(t *testing.T) { util.GetHashedName("app:frontend"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1480,7 +1496,9 @@ func TestNamespaceToFrontend(t *testing.T) { util.GetHashedName("app:frontend"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1613,7 +1631,9 @@ func TestAllowAllNamespacesToAppFrontend(t *testing.T) { util.GetHashedName("app:frontend"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1761,7 +1781,9 @@ func TestAllowNamespaceDevToAppFrontend(t *testing.T) { util.GetHashedName("app:frontend"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -1913,7 +1935,9 @@ func TestAllowAllToK0AndK1AndAppFrontend(t *testing.T) { util.GetHashedName("k1:v1"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -2103,7 +2127,9 @@ func TestAllowNsDevAndAppBackendToAppFrontend(t *testing.T) { util.GetHashedName("app:backend"), util.IptablesSrcFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -2231,7 +2257,9 @@ func TestAllowInternalAndExternal(t *testing.T) { util.GetHashedName("app:backdoor"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -2305,7 +2333,9 @@ func TestAllowBackendToFrontendPort8000(t *testing.T) { util.IptablesDstPortFlag, "8000", util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -2420,7 +2450,9 @@ func TestAllowBackendToFrontendWithMissingPort(t *testing.T) { util.GetHashedName("app:backend"), util.IptablesSrcFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -2549,7 +2581,9 @@ func TestAllowMultipleLabelsToMultipleLabels(t *testing.T) { util.GetHashedName("team:aks"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -2590,7 +2624,9 @@ func TestAllowMultipleLabelsToMultipleLabels(t *testing.T) { util.GetHashedName("team:aks"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -2768,7 +2804,9 @@ func TestAllowAllFromAppBackend(t *testing.T) { util.GetHashedName("app:backend"), util.IptablesSrcFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -2890,7 +2928,9 @@ func TestAllowAppFrontendToTCPPort53UDPPort53Policy(t *testing.T) { util.GetHashedName("app:frontend"), util.IptablesSrcFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -2915,7 +2955,9 @@ func TestAllowAppFrontendToTCPPort53UDPPort53Policy(t *testing.T) { util.GetHashedName("app:frontend"), util.IptablesSrcFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -2941,7 +2983,9 @@ func TestAllowAppFrontendToTCPPort53UDPPort53Policy(t *testing.T) { util.GetHashedName(util.KubeAllNamespacesFlag), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -3104,7 +3148,9 @@ func TestComplexPolicy(t *testing.T) { util.IptablesDstPortFlag, "6379", util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -3134,7 +3180,9 @@ func TestComplexPolicy(t *testing.T) { util.IptablesDstPortFlag, "6379", util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -3169,7 +3217,9 @@ func TestComplexPolicy(t *testing.T) { util.IptablesDstPortFlag, "6379", util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -3243,7 +3293,9 @@ func TestComplexPolicy(t *testing.T) { util.GetHashedName(cidrEgressIpsetName), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -3534,7 +3586,9 @@ func TestDropPrecedenceOverAllow(t *testing.T) { util.GetHashedName("testIn:pod-A"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -3575,7 +3629,9 @@ func TestDropPrecedenceOverAllow(t *testing.T) { util.GetHashedName("testIn:pod-A"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -3660,7 +3716,9 @@ func TestDropPrecedenceOverAllow(t *testing.T) { util.GetHashedName("all-namespaces"), util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureEgressXMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, @@ -3843,7 +3901,9 @@ func TestNamedPorts(t *testing.T) { util.GetHashedName("namedport:serve-80"), util.IptablesDstFlag + "," + util.IptablesDstFlag, util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesMark, + util.IptablesSetMarkFlag, + util.IptablesAzureIngressMarkHex, util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, From 6a8d44f703e8cdee5b3fa7a224321b7bd3fefdfb Mon Sep 17 00:00:00 2001 From: vakr Date: Tue, 19 Jan 2021 21:05:53 -0800 Subject: [PATCH 6/7] Correcting a comment --- npm/util/const.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/util/const.go b/npm/util/const.go index 2cd0ae50b3..33488fab54 100644 --- a/npm/util/const.go +++ b/npm/util/const.go @@ -80,7 +80,7 @@ const ( IptablesAzureIngressFromPodChain string = "AZURE-NPM-INGRESS-FROM-POD" IptablesAzureEgressToNsChain string = "AZURE-NPM-EGRESS-TO-NS" IptablesAzureEgressToPodChain string = "AZURE-NPM-EGRESS-TO-POD" - // Below are the ctmark NPM will use for different criteria + // Below are the skb->mark NPM will use for different criteria IptablesAzureIngressMarkHex string = "0x2000" IptablesAzureEgressXMarkHex string = "0x1000/0x1000" IptablesAzureEgressMarkHex string = "0x1000" From b52c0ec664e6a3ca96a9b030f6f6d87d025bc72c Mon Sep 17 00:00:00 2001 From: vakr Date: Fri, 22 Jan 2021 16:40:58 -0800 Subject: [PATCH 7/7] Addressing comments --- npm/iptm/iptm.go | 27 ++++++++++++++------------- npm/util/const.go | 8 ++++++-- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/npm/iptm/iptm.go b/npm/iptm/iptm.go index df42f29a51..2827c1ba9c 100644 --- a/npm/iptm/iptm.go +++ b/npm/iptm/iptm.go @@ -4,6 +4,7 @@ package iptm import ( + "fmt" "os" "os/exec" "strconv" @@ -126,7 +127,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, - "RETURN-on-INGRESS-mark-0x2000", + fmt.Sprintf("RETURN-on-INGRESS-mark-%s", util.IptablesAzureIngressMarkHex), } exists, err = iptMgr.Exists(entry) if err != nil { @@ -158,7 +159,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, - "RETURN-on-INGRESS-mark-0x2000", + fmt.Sprintf("RETURN-on-INGRESS-mark-%s", util.IptablesAzureIngressMarkHex), } exists, err = iptMgr.Exists(entry) if err != nil { @@ -206,7 +207,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, - "RETURN-on-EGRESS-mark-0x1000", + fmt.Sprintf("RETURN-on-EGRESS-mark-%s", util.IptablesAzureEgressMarkHex), } exists, err = iptMgr.Exists(entry) if err != nil { @@ -225,7 +226,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { entry.Chain = util.IptablesAzureEgressPortChain entry.Specs = []string{ util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesMarkVerb, util.IptablesMarkFlag, @@ -233,7 +234,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, - "RETURN-on-EGRESS-and-INGRESS-mark-0x3000", + fmt.Sprintf("RETURN-on-EGRESS-and-INGRESS-mark-%s", util.IptablesAzureAcceptMarkHex), } exists, err = iptMgr.Exists(entry) if err != nil { @@ -270,7 +271,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, - "RETURN-on-EGRESS-mark-0x1000", + fmt.Sprintf("RETURN-on-EGRESS-mark-%s", util.IptablesAzureEgressMarkHex), } exists, err = iptMgr.Exists(entry) if err != nil { @@ -289,7 +290,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { entry.Chain = util.IptablesAzureEgressToChain entry.Specs = []string{ util.IptablesJumpFlag, - util.IptablesAccept, + util.IptablesReturn, util.IptablesModuleFlag, util.IptablesMarkVerb, util.IptablesMarkFlag, @@ -297,7 +298,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, - "RETURN-on-EGRESS-and-INGRESS-mark-0x3000", + fmt.Sprintf("RETURN-on-EGRESS-and-INGRESS-mark-%s", util.IptablesAzureAcceptMarkHex), } exists, err = iptMgr.Exists(entry) if err != nil { @@ -325,7 +326,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, - "ACCEPT-on-INGRESS-and-EGRESS-mark-0x3000", + fmt.Sprintf("ACCEPT-on-INGRESS-and-EGRESS-mark-%s", util.IptablesAzureAcceptMarkHex), } exists, err = iptMgr.Exists(entry) if err != nil { @@ -352,7 +353,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, - "ACCEPT-on-INGRESS-mark-0x2000", + fmt.Sprintf("ACCEPT-on-INGRESS-mark-%s", util.IptablesAzureIngressMarkHex), } exists, err = iptMgr.Exists(entry) if err != nil { @@ -362,7 +363,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { if !exists { iptMgr.OperationFlag = util.IptablesAppendFlag if _, err := iptMgr.Run(entry); err != nil { - metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add marked ACCEPT rule for INGRESS mark 0x2000 to AZURE-NPM chain.") + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add marked ACCEPT rule for INGRESS mark to AZURE-NPM chain.") return err } } @@ -379,7 +380,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { util.IptablesModuleFlag, util.IptablesCommentModuleFlag, util.IptablesCommentFlag, - "ACCEPT-on-EGRESS-mark-0x1000", + fmt.Sprintf("ACCEPT-on-EGRESS-mark-%s", util.IptablesAzureEgressMarkHex), } exists, err = iptMgr.Exists(entry) if err != nil { @@ -389,7 +390,7 @@ func (iptMgr *IptablesManager) InitNpmChains() error { if !exists { iptMgr.OperationFlag = util.IptablesAppendFlag if _, err := iptMgr.Run(entry); err != nil { - metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add marked ACCEPT rule for EGRESS mark 0x1000 to AZURE-NPM chain.") + metrics.SendErrorLogAndMetric(util.IptmID, "Error: failed to add marked ACCEPT rule for EGRESS mark to AZURE-NPM chain.") return err } } diff --git a/npm/util/const.go b/npm/util/const.go index 33488fab54..f80aa6afc3 100644 --- a/npm/util/const.go +++ b/npm/util/const.go @@ -82,9 +82,13 @@ const ( IptablesAzureEgressToPodChain string = "AZURE-NPM-EGRESS-TO-POD" // Below are the skb->mark NPM will use for different criteria IptablesAzureIngressMarkHex string = "0x2000" + // IptablesAzureEgressXMarkHex is used for us to not override but append to the existing MARK + // https://unix.stackexchange.com/a/283455 comment contains the explanation on + // MARK manipulations with offset. IptablesAzureEgressXMarkHex string = "0x1000/0x1000" - IptablesAzureEgressMarkHex string = "0x1000" - IptablesAzureAcceptMarkHex string = "0x3000" + // IptablesAzureEgressMarkHex is for checking the absolute value of the mark + IptablesAzureEgressMarkHex string = "0x1000" + IptablesAzureAcceptMarkHex string = "0x3000" ) //ipset related constants.