From 4449fb3e380597479c21c4d64f1f5987023f92eb Mon Sep 17 00:00:00 2001
From: Jack Carter <128555021+SunsetDrifter@users.noreply.github.com>
Date: Mon, 11 May 2026 12:24:44 +0200
Subject: [PATCH] docs(access-control): correct policy direction claim across
docs (#739)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Earlier docs asserted that policies using `ALL`, `ICMP`, or portless
`TCP`/`UDP` must be bidirectional. Data-plane testing on NetBird
0.59.10 shows the engine honors the direction flag for every
protocol — peer-d's iptables only installs the destination-side
`ACCEPT` rule, so reverse-initiated traffic is dropped at the source
even when the policy uses `ALL` or `ICMP`. The greyed-out direction
toggle in the dashboard is a UX guardrail, not an enforcement gap.
- manage-network-access.mdx: rewrite the Policies overview and
Multiple Mesh Networks paragraphs; drop the outdated `Note`
callout; trim Creating Policies guidance.
- access-control/index.mdx: rewrite Protocol-Specific Behavior;
drop the "Always Bidirectional (regardless of UI setting)" list.
- implement-zero-trust.mdx: soften TCP/UDP+ports framing.
- troubleshooting-client.mdx: drop "always true for the protocol
`ALL`" clause from the bidirectional-rule bullet.
Network-resource (routing peer) policies remain genuinely
unidirectional — that statement preserved.
---
src/pages/help/troubleshooting-client.mdx | 2 +-
src/pages/manage/access-control/index.mdx | 13 +------------
.../manage/access-control/manage-network-access.mdx | 12 ++++--------
.../use-cases/security/implement-zero-trust.mdx | 2 +-
4 files changed, 7 insertions(+), 22 deletions(-)
diff --git a/src/pages/help/troubleshooting-client.mdx b/src/pages/help/troubleshooting-client.mdx
index b8b5d1cb..e6084fea 100644
--- a/src/pages/help/troubleshooting-client.mdx
+++ b/src/pages/help/troubleshooting-client.mdx
@@ -788,7 +788,7 @@ Just like with the previous section you can loosen the above example by:
- replacing `access:srv-c` _Group_ with `access:int-net1` _Group_,
- allowing `ALL` protocol, _Ports_ will become greyed out because all traffic will be allowed,
-- creating a bidirectional rule (both arrows should be green), always true for the protocol `ALL`,
+- creating a bidirectional rule (both arrows should be green),
- selecting a different source group from the pool assigned to `peer-a`,
- it could be built-in `All` group, but it is discouraged,
- selecting a different destination group from the pool assigned to `peer-b`,
diff --git a/src/pages/manage/access-control/index.mdx b/src/pages/manage/access-control/index.mdx
index c08159f5..e6787e8d 100644
--- a/src/pages/manage/access-control/index.mdx
+++ b/src/pages/manage/access-control/index.mdx
@@ -288,18 +288,7 @@ Policies to network resources control access to the network behind the routing p
### Protocol-Specific Behavior
-Policy directionality also depends on the protocol selected:
-
-**Always Bidirectional (regardless of UI setting):**
-
-- **ALL protocol**: Both directions can always initiate connections
-- **ICMP**: Both directions can always initiate (for ping, etc.)
-- **TCP/UDP without specific ports**: Both directions can initiate connections
-
-**Can Be Unidirectional (when ports are specified):**
-
-- **TCP with specific ports**: Can be unidirectional (only source initiates on those ports)
-- **UDP with specific ports**: Can be unidirectional (only source initiates on those ports)
+The data-plane honors the policy's direction flag for every protocol — `ALL`, `ICMP`, and `TCP`/`UDP` with or without specific ports.
Example:
diff --git a/src/pages/manage/access-control/manage-network-access.mdx b/src/pages/manage/access-control/manage-network-access.mdx
index bdbbedb6..a58ca573 100644
--- a/src/pages/manage/access-control/manage-network-access.mdx
+++ b/src/pages/manage/access-control/manage-network-access.mdx
@@ -45,7 +45,7 @@ Policies act as rules governing how different resources (peers) can communicate
Policies are processed when the Management service shares a network map with all peers of your account. Because you can only create ALLOW policies, there is no processing order or priority. So, the decision to distribute peer information is based on its association with a group belonging to an existing policy.
-For ICMP and ALL protocols, as well as for TCP and UDP protocols **without** specific port restrictions, communication between groups listed in the source and destination fields is bidirectional. This means that both source and destination groups can initiate connections with each other. To establish one-way connections, you must specify a protocol (UDP or TCP), along with a port.
+Each policy has a direction flag — bidirectional (both groups can initiate) or unidirectional (only the source initiates) — and the data-plane honors it for every protocol, including `ALL`, `ICMP`, and `TCP`/`UDP` without specific ports.
@@ -94,10 +94,6 @@ Once you have finished configuring the policy, click `Add Policy` to save it. Yo
Because of its permissiveness, new policies will take effect once you remove the `Default` policy.
-