levaliciousandClaude Opus 5.5 685d084af7
images / images (push) Successful in 7m6s
cni: lock each pod's port to the pod's own addresses
A pod could put any source MAC or address on the wire: weave has no layer-2
anti-spoofing, so a pod with NET_RAW could pose as another pod or as a node's
bridge, on its own node (local bridging never reaches the router) and, through
weave, on others. That undercut every rule that trusts a source MAC or address,
including the egress holder's check of which node a tunnel packet came from.

The CNI plugin now locks the host side of each pod's veth with tc ingress
filters: IPv4 from the pod's MAC and address, ARP speaking for exactly those
(or probing from 0.0.0.0) pass; everything else is dropped before the bridge
sees it. The u32 keys follow iproute2's layout for "ether src" (-8, -4) and
"ip src" (12). ADD fails if the port cannot be locked, so an unlocked pod never
starts. The filters go away with the veth.

Pods attached before this plugin get locked by weave-init: "weaveutil
lock-ports" walks libcni's result cache (each attachment's netns, interface and
address) and locks their ports, leaving locked ones alone. weave-init mounts
the cache and /var/run/netns read-only for it.

TestPortLockInKernel (root) builds a bridge and two pods in throwaway
namespaces and checks what reaches the other pod; reweave/test/portlock runs
the same against a live cluster, across nodes, after checking every port is
locked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHXzGrsxfkGk8LmwrBbHNZ
2026-10-13 22:51:16 -04:00
2020-07-31 16:28:52 +00:00
2024-07-19 08:54:16 +05:30
2023-03-27 23:40:04 +05:30
2021-07-13 16:18:37 +02:00
2018-04-27 14:34:47 +01:00
2024-12-22 20:54:31 +05:30
2016-01-05 12:19:00 +00:00
2024-07-19 08:54:16 +05:30
2018-08-14 12:32:57 +02:00

Weave Net

This repository contains a fork of Weave Net, the first product developed by Weaveworks. Since Weaveworks has shut down, this repo aims to continue maintaining Weave Net, and to publish releases regularly.

Go Report Card Docker Pulls GitHub release (latest by date) Unique CVE count in all images

The history of the fork can be found in HISTORY.md.

Using Weave Net on Kubernetes

On a newly created Kubernetes cluster, the Weave Net CNI pluging can be installed by running the following command:

kubectl apply -f https://reweave.azurewebsites.net/k8s/v1.29/net.yaml

Replace v1.29 with the version on Kubernetes on your cluster.

That endpoint is provided by the companion project weave-endpoint.

Using Weave Net in other ways

Please refer to the documentation.

Building Weave Net

Details can be found here.

Documentation status

The public documentation that used to exist in the site directory has been moved to the original/site directory. A new website directory has been created, and populated with the content of the original/site directory, rearranged and reformatted for being built with Jekyll and published to the GitHub pages site https://rajch.github.io/weave.

The documentation will now be maintained and published from the website directory exclusively.

S
Description
Weave Net fork (from rajch/weave)
Readme
36 MiB
0 Stars 1 Watchers 0 Forks
Languages
Go 73.7%
Shell 21.8%
Makefile 2.4%
Dockerfile 1.5%
Ruby 0.3%
Other 0.3%