# Namespace + VRF Quick Reference ## Kernel Commands Cheat Sheet ### Namespace Operations ```bash # List all namespaces ip netns list # Create namespace ip netns add # Delete namespace ip netns del # Execute command in namespace ip netns exec # Enter namespace (interactive) ip netns exec bash ``` ### VRF Operations ```bash # Create VRF ip link add type vrf table # Up VRF ip link set up # Down VRF ip link set down # Delete VRF ip link del # List VRFs ip link show type vrf ``` ### WireGuard in Namespace ```bash # Create WG interface in namespace ip netns exec ip link add type wireguard # Bind WG to VRF ip netns exec ip link set vrf # Configure WG ip netns exec ip addr add dev ip netns exec wg set listen-port private-key # Add routes to VRF table ip netns exec ip route add dev table ``` ### nftables in Namespace ```bash # Create table in namespace ip netns exec nft add table ip # Create chain ip netns exec nft add chain ip '{type filter hook forward priority filter; policy accept;}' # Add rule ip netns exec nft add rule ip # List rules ip netns exec nft list table ip # Delete table ip netns exec nft delete table ip ``` ## Common Scenarios ### Scenario 1: Create User Namespace with VRF ```bash # 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 ```bash # 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 ```bash # 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 ```bash ip netns list | grep ``` ### Check VRF in Namespace ```bash ip netns exec ip link show type vrf ``` ### Check WG Interface in Namespace ```bash ip netns exec wg show ``` ### Check Routing Table in VRF ```bash ip netns exec ip route show table ``` ### Check nftables in Namespace ```bash ip netns exec nft list tables ip netns exec nft list table ip ``` ### Debug Connectivity ```bash # Ping from namespace ip netns exec ping # Trace route from namespace ip netns exec traceroute # Capture packets in namespace ip netns exec tcpdump -i ``` ## Performance Tuning ### Increase File Descriptors ```bash # In namespace ip netns exec ulimit -n 65535 ``` ### Optimize Kernel Parameters ```bash # In namespace ip netns exec sysctl -w net.core.rmem_max=16777216 ip netns exec sysctl -w net.core.wmem_max=16777216 ``` ### Check Resource Usage ```bash # Check namespace resource usage ls -la /var/run/netns/ # Check VRF resource usage ip -d link show type vrf ``` --- **Last Updated**: 2026-07-10