Files
datadunia e523398fa8 feat: add ESP32 embedded agent + namespace VRF reference docs + update android-agent submodule
- apps/device-agent-embedded/: ESP32 WireGuard agent (C, ESP-IDF, mbedTLS)
- reference/namespace-vrf/: Linux namespace/VRF network isolation docs
- apps/android-agent: VPN permission check, StartResult sealed class
2026-09-13 14:39:24 +07:00

4.7 KiB

Namespace + VRF Quick Reference

Kernel Commands Cheat Sheet

Namespace Operations

# List all namespaces
ip netns list

# Create namespace
ip netns add <name>

# Delete namespace
ip netns del <name>

# Execute command in namespace
ip netns exec <name> <command>

# Enter namespace (interactive)
ip netns exec <name> bash

VRF Operations

# Create VRF
ip link add <vrf-name> type vrf table <table-id>

# Up VRF
ip link set <vrf-name> up

# Down VRF
ip link set <vrf-name> down

# Delete VRF
ip link del <vrf-name>

# List VRFs
ip link show type vrf

WireGuard in Namespace

# Create WG interface in namespace
ip netns exec <ns> ip link add <wg-name> type wireguard

# Bind WG to VRF
ip netns exec <ns> ip link set <wg-name> vrf <vrf-name>

# Configure WG
ip netns exec <ns> ip addr add <cidr> dev <wg-name>
ip netns exec <ns> wg set <wg-name> listen-port <port> private-key <key>

# Add routes to VRF table
ip netns exec <ns> ip route add <cidr> dev <wg-name> table <table-id>

nftables in Namespace

# Create table in namespace
ip netns exec <ns> nft add table ip <table-name>

# Create chain
ip netns exec <ns> nft add chain ip <table-name> <chain-name> '{type filter hook forward priority filter; policy accept;}'

# Add rule
ip netns exec <ns> nft add rule ip <table-name> <chain-name> <rule>

# List rules
ip netns exec <ns> nft list table ip <table-name>

# Delete table
ip netns exec <ns> nft delete table ip <table-name>

Common Scenarios

Scenario 1: Create User Namespace with VRF

# 1. Create namespace
ip netns add ns_zerocode

# 2. Create veth pair
ip link add veth-z0 type veth peer name veth-z1
ip link set veth-z1 netns ns_zerocode

# 3. Configure veth in default namespace
ip addr add 10.0.0.1/24 dev veth-z0
ip link set veth-z0 up

# 4. Configure veth in namespace
ip netns exec ns_zerocode ip addr add 10.0.0.2/24 dev veth-z1
ip netns exec ns_zerocode ip link set veth-z1 up
ip netns exec ns_zerocode ip route add default via 10.0.0.1

# 5. Create VRF
ip netns exec ns_zerocode ip link add vrf:main type vrf table 100
ip netns exec ns_zerocode ip link set vrf:main up

# 6. Create WireGuard
ip netns exec ns_zerocode ip link add wg-z-main type wireguard
ip netns exec ns_zerocode ip link set wg-z-main vrf vrf:main

# 7. Configure WireGuard
ip netns exec ns_zerocode ip addr add 10.100.0.1/24 dev wg-z-main
ip netns exec ns_zerocode wg set wg-z-main listen-port 51820 private-key /path/to/key

# 8. Add routes
ip netns exec ns_zerocode ip route add 10.100.0.0/24 dev wg-z-main table 100

Scenario 2: Two Users with Same IP

# User 1: zerocode
ip netns add ns_zerocode
ip netns exec ns_zerocode ip link add vrf:main type vrf table 100
ip netns exec ns_zerocode ip link add wg-z-main type wireguard
ip netns exec ns_zerocode ip link set wg-z-main vrf vrf:main
ip netns exec ns_zerocode ip addr add 10.100.0.1/24 dev wg-z-main

# User 2: alice (SAME IP!)
ip netns add ns_alice
ip netns exec ns_alice ip link add vrf:main type vrf table 100
ip netns exec ns_alice ip link add wg-a-main type wireguard
ip netns exec ns_alice ip link set wg-a-main vrf vrf:main
ip netns exec ns_alice ip addr add 10.100.0.1/24 dev wg-a-main  # SAME IP!

# No conflict - different namespaces!

Scenario 3: Cleanup

# Delete namespace (removes all interfaces, VRFs, etc.)
ip netns del ns_zerocode

# Or manually cleanup
ip netns exec ns_zerocode ip link del wg-z-main
ip netns exec ns_zerocode ip link del vrf:main
ip netns exec ns_zerocode ip link del veth-z1
ip netns del ns_zerocode

Troubleshooting

Check Namespace Exists

ip netns list | grep <name>

Check VRF in Namespace

ip netns exec <name> ip link show type vrf

Check WG Interface in Namespace

ip netns exec <name> wg show

Check Routing Table in VRF

ip netns exec <name> ip route show table <table-id>

Check nftables in Namespace

ip netns exec <name> nft list tables
ip netns exec <name> nft list table ip <table-name>

Debug Connectivity

# Ping from namespace
ip netns exec <name> ping <ip>

# Trace route from namespace
ip netns exec <name> traceroute <ip>

# Capture packets in namespace
ip netns exec <name> tcpdump -i <interface>

Performance Tuning

Increase File Descriptors

# In namespace
ip netns exec <name> ulimit -n 65535

Optimize Kernel Parameters

# In namespace
ip netns exec <name> sysctl -w net.core.rmem_max=16777216
ip netns exec <name> sysctl -w net.core.wmem_max=16777216

Check Resource Usage

# Check namespace resource usage
ls -la /var/run/netns/

# Check VRF resource usage
ip -d link show type vrf

Last Updated: 2026-07-10