商店現已上線

我們打造用於網站、AI 智慧體和 LLM 訓練的 Workstation AI 機器——線上配置併購買。

獲取同行價格
AI 產品
AI 實驗室OpenAI 智慧體Claude 代理Grok BotWorkstation AI 原生 CRM營銷所有產品
AI 解決方案
應用型 AIAI 智慧體生成式 AIAI 自動化AI 技能提升中小企業 AI 套餐企業 AI 實驗室AI 工作站NVIDIA 硬體與軟體NVIDIA 加速計算私有 AIGPU 私有云GPU 叢集邊緣 AI行業 AI
AI 服務
平臺現代化數字工程資料基礎與 AI自主運營AI 諮詢DevOps 自動化網路安全軟體開發智慧體構建MLOps 搭建GPU 租賃GPU 私有云
關於我們
公司我們的故事合作伙伴客戶案例
AI 資料中心
AI 資料中心GPU 私有云GPU 叢集GPU 租賃
AI 洞察Jev 系列基準測試實驗室模型選擇
技術說明
文件
Linux 作業系統UbuntuRed Hat Enterprise LinuxSUSE LinuxAlpine LinuxDebian、Rocky 與 AlmaLinux
AI 雲平臺AWS 與 Amazon BedrockGoogle Cloud 與 Vertex AIMicrosoft Azure 與 AI FoundryGPU 雲與算力市場
私有 AI 資料中心面向律師事務所面向會計師事務所本地部署平臺全面安全的雲
工具Ring PromoterJobshout
新聞
部落格
聯絡我們登入

面向現代企業的 AI 工作站、AI 多智慧體軟體、GPU 基礎設施和智慧代理解決方案。

聯絡我們

AI 解決方案

應用型 AIAI 智慧體生成式 AIAI 自動化AI 技能提升中小企業 AI 套餐企業 AI 實驗室行業 AI

產品

所有產品Workstation AI native CRM 與 ERP營銷OpenAI 智慧體Ring PromoterJobshout

公司

關於我們公司AI 資料中心為什麼選擇Workstation合作伙伴客戶案例定價聯絡TenthMatrix

資源

AI 洞察技術說明文件Linux 作業系統AI 雲平臺私有 AI 資料中心部落格搜尋網站地圖
英國總部
77-79 Marlowes, Hemel Hempstead HP1 1LF路線指引 — 從 M25 外環倫敦 20 號出口駛出公司編號: 11641870週一至週五:上午 9:00 - 下午 6:00 GMT
+44 7515 356 146
比利時辦公室
Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, BrusselsBE 0751.518.683週一至週五:上午 9:00 - 下午 6:00 CET
+32 492 45 67 46
印度辦公室
#159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841
台灣辦公室
3F, No. 2-4, Aisi Rd., Ren'ai Dist., Keelung City 200, Taiwan基隆市仁愛區愛四路2之4號3樓週一至週五:上午 9:00 - 下午 6:00 臺灣時間(GMT+8)
+886 926 892 701+32 492 45 67 46

© 2026 Workstation AI。保留所有權利。

隱私資料刪除Cookie服務條款網站地圖

NVIDIA、NVIDIA 標誌、RTX、RTX PRO、Blackwell、CUDA、NVLink、MGX、Omniverse、Spectrum-X、Quantum、BlueField、DGX 與 HGX 為 NVIDIA Corporation 在美國及其他國家的商標及/或註冊商標。AMD、AMD Arrow 標誌、EPYC、Instinct、Ryzen 與 Threadripper 為 Advanced Micro Devices, Inc. 的商標。Dell 與 PowerEdge 為 Dell Inc. 或其子公司的商標。Intel 與 Xeon 為 Intel Corporation 或其子公司的商標。AMAX、AceleMax 與 LiquidMax 為 AMAX Engineering Corporation 的商標。所有其他產品名稱、標誌與品牌均為其各自所有者之財產。我們使用它們僅為識別我們所描述、供應或支援的產品;使用這些名稱並不表示其所有者為我們背書。

Loading blog...

首頁 / 部落格
SecurityZero TrustVpnDevOpsSRE

Put Internal Apps Behind Your VPN, Without Rebuilding Them

Check the tunnel and the person at the edge, and fail closed

Balinder Walia2026年10月26日7 min read
Put internal apps behind your VPN. One field. No reload.

Staging sites, admin panels and internal tools are usually "private" because of an IP allowlist and a good intention. This post explains, in plain terms, how we put them behind the wslvpn Zero Trust VPN and enforce it at the WSLProxy edge: we check both the tunnel and the person using it, every failure denies, and a blocked response tells you why. Engineers who want the configuration, the rule logic and the debugging steps should read the in-depth technical article.

Put internal apps behind your VPN. One field. No reload. Workstation WSL Proxy with wslvpn

In one sentence. Add one field to a domain's configuration, and its protected paths open only to people who are connected to wslvpn and belong to the right group. Everyone else gets a clear "VPN required" page. No changes to the app's code and no proxy reload.

The internal tool everyone assumes is private

During a routine review we looked at a pre-production site that everyone described as "VPN-only". Its access rule allowed exactly one public address and named no groups of users.

In practice, "VPN-only" meant something narrower: your traffic must leave the internet from this one address. Anyone on that network got in, whether or not they were running the VPN client. No user was ever checked. The rule did what it said; it just didn't say what people thought it said.

Two further questions were worth asking. Could the site's origin server be reached directly from the internet, skipping the proxy altogether? And did every edge location actually have the access rule, or only some of them? We found no evidence that anyone had taken advantage of this, but the lesson was clear and it applies well beyond one site:

  • Name the groups that may get in, not just the network they come from.
  • Lock the origin so it only accepts traffic from your edge.
  • Test from both sides, on and off the VPN.
  • Check every edge location, not just the one you happen to hit.

The risk, in plain language

An IP allowlist answers one question: where did this request come from? That's useful, but it isn't the same as knowing who sent it. Shared office networks, a contractor's laptop that happens to be on the overlay, or anything else that can send traffic from an allowed address all look identical to an allowlist.

The second risk is quieter. If the application server behind the proxy also answers requests from the internet, the proxy's rules don't matter: someone who finds the origin's address simply goes around them. A front door is only useful if it is the only door.

Neither problem shows up in day-to-day use. People on the VPN get in, the site works, and nobody has a reason to look further. That's why it's worth designing the check properly once, instead of relying on everyone remembering the caveats.

What wslvpn and WSLProxy do together

wslvpn is a lightweight, self-hosted, WireGuard-based Zero Trust VPN. A user installs the client, signs in with single sign-on, their device is registered and its posture is evaluated, policy decides what they may reach, and the WireGuard tunnel connects. Each session gets its own overlay address.

WSLProxy is the open-source edge proxy that Workstation WSL Proxy is built on. It already routes, caches and filters traffic in front of our sites. Its access profiles add two checks at the edge, on every request to a protected path:

CheckThe question it answersHow
Network"Did this request come over the tunnel?"The client's address must sit inside the VPN's address range.
Identity"Who sent it, and are they allowed?"WSLProxy asks the wslvpn control plane which signed-in user holds that address, and checks their groups.

The network check on its own is a boundary, not Zero Trust: any device on the VPN would get in. Naming groups is what turns it into a per-person decision. Access profiles always keep both checks, on purpose, so that one leaked credential on its own isn't enough to get in from outside the tunnel.

What it means for the business

One field per domain, no app changes

Protection is switched on by adding one line, "access_profile": "staff-internal", to the domain's configuration. The profile lists the paths to protect and who may reach them. The application itself doesn't change: no login library to add, no code to redeploy. The same profile can protect as many domains as you like.

No reload, no maintenance window

WSLProxy evaluates its rules on every request, so a new or changed profile takes effect on the next request. There's no proxy restart to schedule and no dropped connections.

It fails closed

If anything goes wrong, the answer is "no". If the VPN's control plane can't be reached, if there's no active session at that address, if the reply is malformed, if the configuration is incomplete, or if the user simply isn't in the right group, the request is denied. If a profile itself can't be loaded, perhaps because of a typo, the whole domain is denied rather than quietly left open. A brief outage of the identity service means a few people see a "VPN required" page; it never means the admin panel is exposed.

Faster support, fewer guessing games

Every decision made by a profile comes back with short response headers: X-WSL-VPN: allowed or blocked, the name of the profile, and when blocked a reason such as client-ip-not-allowed (not on the VPN) or vpn-group-not-held (on the VPN, but not in the right group). When someone says "I can't get into staging", support can see the cause in one command instead of starting a ticket thread. Blocked users see a branded "VPN required" page rather than a bare error, and teams can replace the wording per profile.

The six steps at a glance

The diagram shows the whole set-up and what happens on every request. The technical article walks through each step in detail.

Six set-up steps for securing a web property with wslvpn and WSLProxy, and the per-request flow: path check, client IP inside the VPN range, wslvpn group check, then proxy to origin or a 403 VPN required page

  1. Connect users to wslvpn. Single sign-on, device registration, posture check and a WireGuard tunnel. Each session gets an overlay address.
  2. Make the edge see that address. Route the property through the tunnel. If another proxy sits in front of WSLProxy, tell WSLProxy to trust it so it sees the real client address.
  3. Write an access profile. The VPN's address range, the paths to protect, and the groups allowed on each.
  4. Attach it to the domain. One field. It's live on the next request; make sure every edge location has the profile.
  5. Lock the origin to the edge. Firewall the application server so it only accepts traffic from your WSLProxy edges.
  6. Verify both sides. Off the VPN you should get a 403 with a reason; on the VPN you should reach the site. Test both: a broken deny rule looks exactly like a working set-up from inside the VPN.

Honest limits

These are the current limitations, and it's worth planning around them:

  • Device posture isn't re-checked on every request. wslvpn checks posture when a session is created. A device that falls out of compliance mid-session keeps access until its session ends.
  • Only web traffic is covered. Databases, SSH and other non-HTTP services don't pass through WSLProxy rules. Restrict those on the wslvpn gateway itself, using its network routes and firewall allowlist.
  • Revocation takes up to 15 seconds. WSLProxy briefly caches who holds each address, so a revoked session or a group change can keep web access for up to 15 seconds, unless a revocation webhook clears the cache entry straight away.
  • IPv4 only. The address-range check is IPv4. A client arriving over IPv6 never matches, so it is denied rather than let through.

Where to go next

  • Read the technical article: An IP Allowlist Is Not a VPN Check: Zero Trust Access Profiles with wslvpn and WSLProxy.
  • Learn about Workstation WSL Proxy, or visit wslproxy.com.
  • Explore the VPN on GitHub: github.com/bwalia/wslvpn.

Want help putting your staging sites and admin tools behind wslvpn? Talk to the Workstation team.