{"id":916,"date":"2026-08-10T20:47:13","date_gmt":"2026-08-10T20:47:13","guid":{"rendered":"https:\/\/blog.asambe.ai\/index.php\/2026\/08\/10\/home-lab-for-split-tunneling-and-remote-access\/"},"modified":"2026-08-10T20:47:15","modified_gmt":"2026-08-10T20:47:15","slug":"home-lab-for-split-tunneling-and-remote-access","status":"publish","type":"post","link":"https:\/\/blog.asambe.ai\/index.php\/2026\/08\/10\/home-lab-for-split-tunneling-and-remote-access\/","title":{"rendered":"Home Lab for Split Tunneling and Remote Access"},"content":{"rendered":"<p>Remote work, streaming, and cloud apps have made our home networks busier than ever. When every megabit and millisecond matters, the way traffic leaves your device can be the difference between a smooth call and a stutter. That\u0019s where split tunneling comes in. By selectively sending some traffic through a VPN while letting other traffic go direct, you can balance security, performance, and cost. Building a home lab is the safest, most controlled way to test split tunneling and remote access before rolling changes into your everyday setup.<\/p>\n<h2>Table of Contents<\/h2>\n<ul>\n<li><a href=\"#why-home-lab-split-tunneling\">Why Build a Home Lab for Split Tunneling?<\/a><\/li>\n<li><a href=\"#home-lab-design-overview\">Home Lab Design Overview<\/a><\/li>\n<li><a href=\"#hardware-software-requirements\">Hardware and Software Requirements<\/a><\/li>\n<li><a href=\"#network-topology-ip-plan\">Network Topology and IP Plan<\/a><\/li>\n<li><a href=\"#setting-up-core-services\">Setting Up the Core Services<\/a><\/li>\n<li><a href=\"#implementing-split-tunneling\">Implementing Split Tunneling Scenarios<\/a><\/li>\n<li><a href=\"#remote-access-scenarios\">Remote Access Scenarios to Validate<\/a><\/li>\n<li><a href=\"#observability-testing-tools\">Observability and Testing Tools<\/a><\/li>\n<li><a href=\"#security-safety-considerations\">Security and Safety Considerations<\/a><\/li>\n<li><a href=\"#troubleshooting-playbook\">Troubleshooting Playbook<\/a><\/li>\n<li><a href=\"#automation-reproducibility\">Automation and Reproducibility<\/a><\/li>\n<li><a href=\"#cost-saving-tips\">Cost-Saving Tips and Alternatives<\/a><\/li>\n<li><a href=\"#next-steps-resources\">Next Steps and Learning Resources<\/a><\/li>\n<li><a href=\"#conclusion\">Conclusion<\/a><\/li>\n<li><a href=\"#frequently-asked-questions\">Frequently Asked Questions<\/a><\/li>\n<\/ul>\n<h2 id=\"why-home-lab-split-tunneling\">Why Build a Home Lab for Split Tunneling?<\/h2>\n<p>Split tunneling lets you choose which applications, destinations, or networks use your VPN and which go straight to the internet. Done well, it preserves privacy and access for sensitive work while keeping gaming, streaming, or software updates fast.<\/p>\n<p>A home lab provides a <em>safe sandbox<\/em>. You can experiment with policies, test across devices, and gather evidence before making changes to your main network. It also doubles as a learning environment for networking, VPNs, and security\u00164skills that pay dividends at work and home.<\/p>\n<h2 id=\"home-lab-design-overview\">Home Lab Design Overview<\/h2>\n<p>The goal is a modular setup you can turn on and off without disrupting family internet. You\u0019ll isolate a \u001cLab\u001d VLAN or subnet, stand up a VPN server, and route traffic through a firewall where you can apply policies and capture packets.<\/p>\n<ul>\n<li>Core components: router\/firewall, switch with VLANs (optional), DNS\/DHCP, VPN server, and at least one test client.<\/li>\n<li>Control points: firewall rules, routing tables, DNS responses, and VPN client configuration.<\/li>\n<li>Observability: packet capture, logs, DNS query views, and latency\/throughput tests.<\/li>\n<\/ul>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/example.com\/home-lab-topology.png?ssl=1\" alt=\"Diagram of a home lab with WAN, firewall\/router, VLANs (LAN and LAB), DNS\/DHCP, VPN server, and test clients\" \/><\/p>\n<h2 id=\"hardware-software-requirements\">Hardware and Software Requirements<\/h2>\n<h3>Minimum hardware<\/h3>\n<ul>\n<li>Router\/firewall appliance (x86 mini PC, old desktop, or a capable consumer router with custom firmware).<\/li>\n<li>Managed switch for VLANs (optional but helpful). An all-in-one router with VLAN support also works.<\/li>\n<li>One or two test clients: a laptop and\/or a phone.<\/li>\n<li>Optional: a Raspberry Pi or small VM host for DNS, metrics, or synthetic tests.<\/li>\n<\/ul>\n<h3>Recommended software<\/h3>\n<ul>\n<li>Firewall\/router OS: <a href=\"https:\/\/www.pfsense.org\/\">pfSense<\/a> or <a href=\"https:\/\/opnsense.org\/\">OPNsense<\/a>.<\/li>\n<li>VPN: <a href=\"https:\/\/www.wireguard.com\/\">WireGuard<\/a> (lightweight) or <a href=\"https:\/\/openvpn.net\/\">OpenVPN<\/a> (feature-rich).<\/li>\n<li>DNS: Unbound (built into pfSense\/OPNsense), <a href=\"https:\/\/pi-hole.net\/\">Pi-hole<\/a>, or <a href=\"https:\/\/www.isc.org\/bind\/\">BIND<\/a>.<\/li>\n<li>Testing tools: <a href=\"https:\/\/www.wireshark.org\/\">Wireshark<\/a>, tcpdump, iperf3, mtr, dig\/nslookup, browser DevTools.<\/li>\n<\/ul>\n<h2 id=\"network-topology-ip-plan\">Network Topology and IP Plan<\/h2>\n<p>Keep your lab separate so you can iterate freely without breaking everyday Wi-Fi. A simple, flexible plan:<\/p>\n<ul>\n<li>WAN: your ISP modem or gateway in bridge or passthrough mode if possible.<\/li>\n<li>Management\/LAN: 192.168.50.0\/24 (VLAN 50). Your household devices live here.<\/li>\n<li>Lab: 192.168.60.0\/24 (VLAN 60). Test clients, VPN server, and tools.<\/li>\n<li>VPN tunnel subnet (for client addresses): 10.10.10.0\/24.<\/li>\n<\/ul>\n<p>Use distinct VLANs or at least distinct subnets behind the firewall. Assign the lab its own DHCP scope and DNS settings so you can manipulate name resolution and split-tunnel policies without impacting the main LAN.<\/p>\n<h2 id=\"setting-up-core-services\">Setting Up the Core Services<\/h2>\n<h3>1) Firewall\/router<\/h3>\n<ol>\n<li>Install pfSense\/OPNsense on your appliance. Assign WAN, LAN (50), and LAB (60) interfaces.<\/li>\n<li>Create firewall rules that allow LAB to the internet but block LAB\u0016LAN by default. Add specific passes as needed.<\/li>\n<li>Enable NAT for outbound internet on both LAN and LAB interfaces.<\/li>\n<\/ol>\n<h3>2) DHCP and DNS<\/h3>\n<ol>\n<li>Enable DHCP on LAB with a small range (e.g., 192.168.60.100\u0016.150) to keep leases tidy.<\/li>\n<li>Point LAB DNS to your local resolver (e.g., Unbound). Consider conditional forwarding for internal domains.<\/li>\n<li>Log DNS queries for visibility. This helps confirm whether DNS is split or leaking into the wrong tunnel.<\/li>\n<\/ol>\n<h3>3) VPN server<\/h3>\n<ol>\n<li>Install WireGuard or OpenVPN on the firewall or a VM in the LAB network.<\/li>\n<li>Define a tunnel subnet (10.10.10.0\/24), create server keys\/certs, and add at least two clients (e.g., laptop and phone).<\/li>\n<li>Configure allowed IPs (WireGuard) or client-specific overrides (OpenVPN) to support both full-tunnel and split-tunnel modes.<\/li>\n<\/ol>\n<h3>4) Identity and access (optional)<\/h3>\n<ul>\n<li>Add a lightweight directory (FreeIPA or local users) if you want per-user policies.<\/li>\n<li>Enable MFA on VPN accounts for realistic remote access testing.<\/li>\n<\/ul>\n<h2 id=\"implementing-split-tunneling\">Implementing Split Tunneling Scenarios<\/h2>\n<h3>Application-based split tunneling<\/h3>\n<p>Some VPN clients let you choose which apps use the tunnel. For example, send your corporate chat and SSH through VPN, while streaming apps go direct. Validate by capturing packets or checking public IP per app.<\/p>\n<ul>\n<li>Pros: simple mental model, quick wins.<\/li>\n<li>Cons: app detection is OS\/client-dependent; updates can break mappings.<\/li>\n<\/ul>\n<h3>Route- or destination-based split tunneling<\/h3>\n<p>Decide based on IP\/subnet. Push routes for private subnets (e.g., 10.0.0.0\/8, 172.16.0.0\/12) into the tunnel but keep 0.0.0.0\/0 local. Alternatively, tunnel only specific SaaS ranges.<\/p>\n<ul>\n<li>Pros: deterministic, works across OSs and devices.<\/li>\n<li>Cons: managing cloud prefixes can be tedious; use automation or providers\u0019 JSON feeds.<\/li>\n<\/ul>\n<h3>DNS-based split tunneling<\/h3>\n<p>Make decisions at the name level. Use DNS policies or split-horizon zones so that domains like intranet.example.com resolve to private IPs only via the VPN, while public domains resolve normally.<\/p>\n<ul>\n<li>Pros: human-friendly, works well for internal apps.<\/li>\n<li>Cons: risk of DNS leaks if clients bypass your resolver; requires tight DNS control.<\/li>\n<\/ul>\n<h3>Per-user or per-device policies<\/h3>\n<p>Segment traffic by identity or device group. Example: developers get SSH and Git over VPN; finance gets ERP over VPN but general web direct; guest devices go direct only.<\/p>\n<ul>\n<li>Implement with separate VPN profiles, firewall aliases, and VLANs.<\/li>\n<li>Test roaming behavior (Wi-Fi to LTE) and device posture checks if available.<\/li>\n<\/ul>\n<h2 id=\"remote-access-scenarios\">Remote Access Scenarios to Validate<\/h2>\n<h3>Work-from-home baseline<\/h3>\n<ul>\n<li>Video conferencing: confirm call stability and CPU use with full vs split tunnel.<\/li>\n<li>Corporate apps: verify authentication prompts, SSO flows, and internal DNS resolution.<\/li>\n<\/ul>\n<h3>BYOD and guest access<\/h3>\n<ul>\n<li>Guest VLAN with internet-only access; ensure guests cannot reach management or LAN.<\/li>\n<li>BYOD VPN profile with minimal scopes; test mobile device behaviors.<\/li>\n<\/ul>\n<h3>Mobile and intermittent networks<\/h3>\n<ul>\n<li>Switch between Wi-Fi and hotspot while on VPN. Confirm session persistence and rekey times.<\/li>\n<li>Throttle bandwidth with traffic shapers to simulate poor connections.<\/li>\n<\/ul>\n<h3>Site-to-site and cloud access<\/h3>\n<ul>\n<li>Establish a lab site-to-site tunnel (WireGuard\/OpenVPN) to a small cloud VM.<\/li>\n<li>Test reachability of cloud subnets and enforce split routes only as needed.<\/li>\n<\/ul>\n<h2 id=\"observability-testing-tools\">Observability and Testing Tools<\/h2>\n<h3>Packet capture and flows<\/h3>\n<ul>\n<li>tcpdump or built-in capture on the firewall: verify which interface traffic uses.<\/li>\n<li>Wireshark on the client: confirm DNS servers and SNI\/Server-IP selections.<\/li>\n<\/ul>\n<h3>Performance and reliability<\/h3>\n<ul>\n<li>iperf3 for throughput and jitter across VPN vs direct.<\/li>\n<li>mtr or ping for latency and path changes when toggling split policies.<\/li>\n<\/ul>\n<h3>DNS and identity<\/h3>\n<ul>\n<li>dig\/nslookup to check which resolver answers and what records you get.<\/li>\n<li>Visit \u001cip\u001d checkers to validate public IP differences by app or route.<\/li>\n<\/ul>\n<h3>Logging and metrics<\/h3>\n<ul>\n<li>Enable VPN logs for connects\/disconnects and policy pushes.<\/li>\n<li>Consider lightweight dashboards (Grafana\/Prometheus node exporters) for CPU\/mem on the firewall.<\/li>\n<\/ul>\n<h2 id=\"security-safety-considerations\">Security and Safety Considerations<\/h2>\n<ul>\n<li>Default deny from LAB to LAN; only open what you must for testing.<\/li>\n<li>Update firmware and VPN software; rotate keys\/certs regularly.<\/li>\n<li>Use MFA for remote access. Avoid exposing management interfaces to the internet.<\/li>\n<li>Back up firewall configs and document changes. Keep recovery steps handy.<\/li>\n<li>Be mindful that split tunneling can bypass security controls. <strong>Only split what you intend to<\/strong>, and verify with captures and logs.<\/li>\n<\/ul>\n<h2 id=\"troubleshooting-playbook\">Troubleshooting Playbook<\/h2>\n<ol>\n<li>Identify scope: app-only, destination-only, device-only, or time-based?<\/li>\n<li>Check basics: IP, gateway, DNS server on the client; VPN status; time sync.<\/li>\n<li>Trace the path: ping\/traceroute to target; capture on LAN\/LAB\/VPN interfaces.<\/li>\n<li>Validate DNS: dig A\/AAAA; compare answers with and without the tunnel.<\/li>\n<li>Review policies: firewall rules order, NAT, VPN client routes\/allowed-ips.<\/li>\n<li>Test minimal policy: temporarily allow all via VPN, then add splits incrementally.<\/li>\n<li>Document findings so you can reproduce or roll back confidently.<\/li>\n<\/ol>\n<h2 id=\"automation-reproducibility\">Automation and Reproducibility<\/h2>\n<p>Treat your lab like code. Version-control your firewall exports, VPN profiles, and DNS configs. Small wins:<\/p>\n<ul>\n<li>Use Ansible for repeatable firewall rules, DNS zones, and VPN users.<\/li>\n<li>Store templates (client configs, route lists) in Git with comments.<\/li>\n<li>Script tests: curl checks, dig queries, iperf runs, and simple success criteria.<\/li>\n<\/ul>\n<p>The result is faster iteration and less guesswork\u00164and it makes sharing or restoring configurations trivial.<\/p>\n<h2 id=\"cost-saving-tips\">Cost-Saving Tips and Alternatives<\/h2>\n<ul>\n<li>Repurpose old hardware or a small x86 mini PC; they often outperform consumer routers.<\/li>\n<li>Consider a Raspberry Pi for DNS, VPN, or observability agents.<\/li>\n<li>Leverage free cloud tiers to simulate remote subnets or host a jump box.<\/li>\n<li>Prefer WireGuard for low-resource environments; it\u0019s efficient and simple to manage.<\/li>\n<li>Use open-source tools first; only add commercial products when you know the gap they fill.<\/li>\n<\/ul>\n<h2 id=\"next-steps-resources\">Next Steps and Learning Resources<\/h2>\n<ul>\n<li>pfSense\/OPNsense docs for interface\/VLAN and VPN configuration guides.<\/li>\n<li>WireGuard docs for AllowedIPs and peer configuration patterns.<\/li>\n<li>OpenVPN docs for client-specific overrides and pushing routes\/DNS.<\/li>\n<li>Vendor IP prefix feeds (e.g., Microsoft 365, AWS) to automate route lists.<\/li>\n<li>Security best practices from NIST and vendor hardening guides.<\/li>\n<\/ul>\n<p>Start with a single split-use case (e.g., route only private RFC1918 networks via VPN). Validate, measure, then extend to app-based and DNS-based splits.<\/p>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>A well-planned home lab lets you confidently test split tunneling and remote access without risking your daily connectivity. Segmenting a lab subnet, standing up a VPN, and applying route, app, and DNS-based policies gives you fine-grained control over performance and security. With proper observability, you\u0019ll know exactly what\u0019s going where\u00164and why.<\/p>\n<p>The payoff is practical: smoother calls, faster updates, secure access to internal resources, and fewer surprises. Build small, measure often, and iterate. Your future self (and your teammates) will thank you.<\/p>\n<h2 id=\"frequently-asked-questions\">Frequently Asked Questions<\/h2>\n<p><strong>Is split tunneling safe?<\/strong><\/p>\n<p>Yes, when applied intentionally and verified. Keep sensitive apps and private networks on the VPN, restrict direct paths, and monitor DNS to avoid leaks.<\/p>\n<p><strong>Which VPN should I use for the lab?<\/strong><\/p>\n<p>WireGuard is lightweight and fast; OpenVPN is mature with rich features. Either works well. Choose based on your need for simplicity (WireGuard) or advanced options (OpenVPN).<\/p>\n<p><strong>Do I need a managed switch and VLANs?<\/strong><\/p>\n<p>No, but VLANs make isolation easier. You can still create separate subnets with multiple interfaces on your firewall if your hardware has enough ports.<\/p>\n<p><strong>Will split tunneling improve performance?<\/strong><\/p>\n<p>Often. By keeping heavy or latency-sensitive traffic direct while tunneling only what requires protection or reachability, you reduce overhead and bottlenecks.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to build a home lab to test split tunneling and remote access. Get topology guidance, VPN and DNS setup steps, tooling, security tips, and tests.<\/p>\n","protected":false},"author":1,"featured_media":915,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[8],"tags":[],"class_list":["post-916","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-posts"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blog.asambe.ai\/wp-content\/uploads\/2026\/08\/2026-08-10-20-47-05-data.png?fit=1024%2C1024&ssl=1","_links":{"self":[{"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/posts\/916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/comments?post=916"}],"version-history":[{"count":1,"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/posts\/916\/revisions"}],"predecessor-version":[{"id":917,"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/posts\/916\/revisions\/917"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/media\/915"}],"wp:attachment":[{"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/media?parent=916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/categories?post=916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.asambe.ai\/index.php\/wp-json\/wp\/v2\/tags?post=916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}