plugins/pkg/utils
Akihiro Suda 22dd6c553d
firewall: support ingressPolicy=(open|same-bridge) for isolating bridges as in Docker
This commit adds a new parameter `ingressPolicy` (`string`) to the `firewall` plugin.
The supported values are `open` and `same-bridge`.

- `open` is the default and does NOP.

- `same-bridge` creates "CNI-ISOLATION-STAGE-1" and "CNI-ISOLATION-STAGE-2"
that are similar to Docker libnetwork's "DOCKER-ISOLATION-STAGE-1" and
"DOCKER-ISOLATION-STAGE-2" rules.

e.g., when `ns1` and `ns2` are connected to bridge `cni1`, and `ns3` is
connected to bridge `cni2`, the `same-bridge` ingress policy disallows
communications between `ns1` and `ns3`, while allowing communications
between `ns1` and `ns2`.

Please refer to the comment lines in `ingresspolicy.go` for the actual iptables rules.

The `same-bridge` ingress policy is expected to be used in conjunction
with `bridge` plugin. May not work as expected with other "main" plugins.

It should be also noted that the `same-bridge` ingress policy executes
raw `iptables` commands directly, even when the `backend` is set to `firewalld`.
We could potentially use the "direct" API of firewalld [1] to execute
iptables via firewalld, but it doesn't seem to have a clear benefit over just directly
executing raw iptables commands.
(Anyway, we have been already executing raw iptables commands in the `portmap` plugin)

[1] https://firewalld.org/documentation/direct/options.html

This commit replaces the `isolation` plugin proposal (issue 573, PR 574).
The design of `ingressPolicy` was discussed in the comments of the withdrawn PR 574 ,
but `same-network` was renamed to `same-bridge` then.

Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
2022-02-03 15:49:43 +09:00
..
buildversion plugins: correctly output build version, cosmetic cleanups 2019-04-15 16:52:07 +02:00
sysctl Don't redundantly filepath.Clean the output of filepath.Join 2021-09-17 14:12:46 +00:00
conntrack.go portmap plugin should flush previous udp connections 2020-11-23 16:29:52 +01:00
iptables_test.go iptables: add idempotent functions 2019-12-12 15:13:15 +01:00
iptables.go firewall: support ingressPolicy=(open|same-bridge) for isolating bridges as in Docker 2022-02-03 15:49:43 +09:00
utils_suite_test.go build: some small improvements; bump to go1.10 2018-04-12 16:59:51 +02:00
utils_test.go pkg/meta/bandwidth: increase IfbDeviceName size 2019-07-18 11:45:38 -07:00
utils.go pkg/meta/bandwidth: increase IfbDeviceName size 2019-07-18 11:45:38 -07:00