Skip to content
This repository was archived by the owner on Apr 20, 2024. It is now read-only.

Commit e4cc04b

Browse files
authored
Merge pull request #16 from danwinship/iptables-bypass
Implement !FailOpen for iptables
2 parents c972e39 + 0390b49 commit e4cc04b

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

pkg/networkpolicy/controller.go

+14-4
Original file line numberDiff line numberDiff line change
@@ -365,21 +365,31 @@ func (c *Controller) cleanNFTablesRules() {
365365
}
366366

367367
func (c *Controller) syncIptablesRules() {
368-
if err := c.ipt.InsertUnique("filter", "FORWARD", 1, "-m", "conntrack", "--ctstate", "NEW", "-j", "NFQUEUE", "--queue-bypass", "--queue-num", strconv.Itoa(c.config.QueueID)); err != nil {
368+
queueRule := []string{"-m", "conntrack", "--ctstate", "NEW", "-j", "NFQUEUE", "--queue-num", strconv.Itoa(c.config.QueueID)}
369+
if c.config.FailOpen {
370+
queueRule = append(queueRule, "--queue-bypass")
371+
}
372+
373+
if err := c.ipt.InsertUnique("filter", "FORWARD", 1, queueRule...); err != nil {
369374
klog.Infof("error syncing iptables rule %v", err)
370375
}
371376

372-
if err := c.ipt.InsertUnique("filter", "OUTPUT", 1, "-m", "conntrack", "--ctstate", "NEW", "-j", "NFQUEUE", "--queue-bypass", "--queue-num", strconv.Itoa(c.config.QueueID)); err != nil {
377+
if err := c.ipt.InsertUnique("filter", "OUTPUT", 1, queueRule...); err != nil {
373378
klog.Infof("error syncing iptables rule %v", err)
374379
}
375380
}
376381

377382
func (c *Controller) cleanIptablesRules() {
378-
if err := c.ipt.Delete("filter", "FORWARD", "-m", "conntrack", "--ctstate", "NEW", "-j", "NFQUEUE", "--queue-bypass", "--queue-num", strconv.Itoa(c.config.QueueID)); err != nil {
383+
queueRule := []string{"-m", "conntrack", "--ctstate", "NEW", "-j", "NFQUEUE", "--queue-num", strconv.Itoa(c.config.QueueID)}
384+
if c.config.FailOpen {
385+
queueRule = append(queueRule, "--queue-bypass")
386+
}
387+
388+
if err := c.ipt.Delete("filter", "FORWARD", queueRule...); err != nil {
379389
klog.Infof("error deleting iptables rule %v", err)
380390
}
381391

382-
if err := c.ipt.Delete("filter", "OUTPUT", "-m", "conntrack", "--ctstate", "NEW", "-j", "NFQUEUE", "--queue-bypass", "--queue-num", strconv.Itoa(c.config.QueueID)); err != nil {
392+
if err := c.ipt.Delete("filter", "OUTPUT", queueRule...); err != nil {
383393
klog.Infof("error deleting iptables rule %v", err)
384394
}
385395
}

0 commit comments

Comments
 (0)