====== Setting up a Zerotier Exit Gateway in a Debian 10 LXC Container ====== This guide will walk you through the process of creating a Zerotier exit gateway in a Debian 10 LXC container to enable communication between networks. I made this using an Ubuntu 22.04 LXC template. ===== Prerequisites ===== - A Debian 10 container placed on the same vmbr as the network you want to reach. ===== Step 1: Prepare the Container ===== 1. Create a Debian 10 container and place it on the same vmbr as the target network. 2. Add the following line to your container's configuration: lxc.mount.entry: /dev/net dev/net none bind,create=dir ===== Step 2: Enable IP Forwarding ===== 3. Edit ''/etc/sysctl.conf'' and uncomment the line ''net.ipv4.ip_forward=1''. 4. Apply the IP forwarding changes by running: ''sysctl -p'' ===== Step 3: Install Necessary Packages ===== 5. Install the required packages: ''apt update && apt install curl gnupg iptables iptables-persistent'' ===== Step 4: Install Zerotier ===== 6. Install Zerotier with the following command: curl -s https://install.zerotier.com | bash ===== Step 5: Join Zerotier Network ===== 7. Join the Zerotier network using the network ID: ''zerotier-cli join '' 8. Accept the client in Zerotier Central. ===== Step 6: Add a Route ===== 9. In Zerotier Central, add a route to the local network you want to reach via Zerotier. Set the "Destination" field to your local network address (e.g., 192.168.1.0/24) and the "Via" field to the Zerotier IP address of the LXC container. ===== Step 7: Configure iptables ===== 10. Create and edit the file ''/etc/iptables/rules.v4'' and paste the following iptables rules: iptables *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -o eth0 -s /24 -j SNAT --to-source COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD DROP [0:0] -A FORWARD -i zt+ -s /24 -d 0.0.0.0/0 -j ACCEPT -A FORWARD -i eth0 -s 0.0.0.0/0 -d /24 -j ACCEPT :OUTPUT ACCEPT [0:0] COMMIT Replace all instances of `` with your Zerotier network. Replace `` with the IP address of the LXC container in your local network. e.g. *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -o eth0 -s 10.241.0.0/16 -j SNAT --to-source 192.168.188.250 COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD DROP [0:0] -A FORWARD -i zt+ -s 10.241.0.0/16 -d 0.0.0.0/0 -j ACCEPT -A FORWARD -i eth0 -s 0.0.0.0/0 -d 10.241.0.0/16 -j ACCEPT :OUTPUT ACCEPT [0:0] COMMIT ===== Step 8: Apply iptables Rules ===== 11. Run ''iptables-restore < /etc/iptables/rules.v4'' to apply the iptables rules. ===== Step 10: Enable Traffic Routing and Masquerading (if needed) ===== 12. Add the route "dst: 10.10.0.0/16 gateway: <> .If the LXC container exists on a different VLAN and you need to enable traffic masquerading, this will enable to reach the VPN network from a different VLAN. Use the following rule: * chain: src-nat * action: masquerade * Destination Address: 10.10.0.0/16 (your VPN network) * Out Interface: 'LXC Container VLAN' By following these steps, you should have successfully set up a Zerotier exit gateway in your Debian 10 LXC container to facilitate communication between networks. Resources: https://www.reddit.com/r/Proxmox/comments/jctd6x/comment/g93vloi/?utm_medium=android_app&utm_source=share&context=3 ----