forked from vhaudiquet/homeprod
openclaw: allow LAN egress on all ports
The operator's managed policy is default-deny with egress limited to DNS and TCP 443, so reaching a LAN service on any other port is dropped. Measured against 10.4.1.222 from inside the pod: 443 returns RST while 7020 times out, so routing is fine and the port is what gets refused. Add a supplementary egress policy admitting 10.0.0.0/8, excluding the service (10.96.0.0/12) and pod (10.244.0.0/16) CIDRs so this does not grant every pod a path out. No port list: the point is arbitrary LAN services. Registered in the directory kustomization alongside the existing mail and radicale egress policies.
This commit is contained in:
@@ -5,5 +5,6 @@ resources:
|
|||||||
- openclaw-instance.yaml
|
- openclaw-instance.yaml
|
||||||
- openclaw-secrets.yaml
|
- openclaw-secrets.yaml
|
||||||
- networkpolicy.yaml
|
- networkpolicy.yaml
|
||||||
|
- networkpolicy-lan-egress.yaml
|
||||||
- networkpolicy-mail-egress.yaml
|
- networkpolicy-mail-egress.yaml
|
||||||
- networkpolicy-radicale-egress.yaml
|
- networkpolicy-radicale-egress.yaml
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
# Supplementary egress policy: the operator's managed default-deny NetworkPolicy
|
||||||
|
# only allows DNS (53) and TCP 443 outbound, so any other port toward the local
|
||||||
|
# network is dropped. That blocks the OpenClaw pod from reaching LAN services
|
||||||
|
# that do not speak HTTPS on 443. Measured from inside the pod against
|
||||||
|
# 10.4.1.222, 443 returns RST (admitted, nothing listening) while 7020 times
|
||||||
|
# out, which shows LAN routing works and only the port is being refused.
|
||||||
|
#
|
||||||
|
# The egress rule below sets no `ports`, because the goal is arbitrary LAN
|
||||||
|
# services rather than one known port. Cluster CIDRs are excluded so this does
|
||||||
|
# not become a blanket "any pod, any port" grant; the LAN is what gets admitted.
|
||||||
|
# Note this is additive to the operator's rules, so DNS and 443 everywhere still
|
||||||
|
# hold.
|
||||||
|
#
|
||||||
|
# Written as a sidecar policy rather than via the CR fields
|
||||||
|
# spec.security.networkPolicy.additionalEgress / allowedEgressCIDRs, matching
|
||||||
|
# the existing networkpolicy-mail-egress / -radicale-egress pattern. Those CR
|
||||||
|
# fields DO appear in the 0.39.0 CRD template, contrary to the comments on the
|
||||||
|
# sibling policies, so they are worth retrying once the installed CRD version is
|
||||||
|
# confirmed. Until then the sidecar route is the one known to take effect.
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: openclaw-lan-egress
|
||||||
|
namespace: openclaw
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/instance: openclaw
|
||||||
|
app.kubernetes.io/name: openclaw
|
||||||
|
policyTypes:
|
||||||
|
- Egress
|
||||||
|
egress:
|
||||||
|
- to:
|
||||||
|
- ipBlock:
|
||||||
|
cidr: 10.0.0.0/8
|
||||||
|
except:
|
||||||
|
# Service CIDR and pod CIDR (infra/kube/talconfig.yaml).
|
||||||
|
- 10.96.0.0/12
|
||||||
|
- 10.244.0.0/16
|
||||||
Reference in New Issue
Block a user