Publish multiple internal LAN services through one Agent
Outcome: A single Agent Host acts as a relay for one internal SSH host and one internal HTTPS application. The destination machines do not each need their own Agent.Example: Agent Host at 10.20.0.10 can reach SSH host 10.20.0.21:22 and HTTPS host 10.20.0.22:443. The Agent makes outbound connectivity to the DRLink Server.
Figure 1. Agent Host menu: choose 1 to manage its Remote Services; 3 opens ConfigurationBundle. CLI output example; sensitive addresses and hostnames are masked.First verify that gateway 10.20.0.10 can reach both target IPs/ports. For a new Agent select the two LAN targets in Zero-Touch below. Do not use SSH only to publish the gateway’s own SSH unnecessarily. Prepare LAN routing/firewalls separately.
On the Server run set enrollment zero-touch, select Linux, name/describe the host and choose Choose Remote Services.
Selection
Service ID
Target host
Target port
Add SSH
lan-ssh
10.20.0.21
22
Add HTTPS
lan-web
10.20.0.22
443
Enter the target’s existing OS username for SSH, add both services, then Finish. Run the generated command once on the gateway; Objects, Remote Services and public endpoints are automatic. On the Agent inspect show remote-services and each actual service name, then continue at Step 4. Steps 2–3 below are only for manual additions to an existing Agent.
Figure 2. Service Object type choices: 1 SSH/TCP 22, 3 HTTPS/TCP 443, or 6 Fixed TCP as needed. CLI output example; sensitive addresses and hostnames are masked.Figure 3. Real Network Object creation confirmation; this alone does not publish a Remote Service. CLI output example; sensitive addresses and hostnames are masked.Server REPL:
set network-object lan-ssh-host type ip value 10.20.0.21set network-object lan-web-host type ip value 10.20.0.22set service-object ssh type tcp port 22set service-object web-https type tcp port 443show network-objectsshow service-objects
Each Network Object is one destination. A Network Group or CIDR range is not a valid Remote Service destination.
Step 3 — create two Remote Services on the gateway
Figure 4. Captured Remote Services inventory: distinguish DEGRADED from DISABLED; a listed endpoint is not proof of live traffic. CLI output example; sensitive addresses and hostnames are masked.Gateway Agent REPL:
show statusset remote-service lan-ssh destination lan-ssh-host service ssh enabledset remote-service lan-web destination lan-web-host service web-https enabledshow remote-service lan-sshshow remote-service lan-web
Each service has its own stable Server endpoint. An Agent can own more than one Remote Service; the target does not have to be the Agent itself.
Expected: SSH reaches 10.20.0.21:22 and the browser reaches 10.20.0.22:443. DRLink passes through backend application TLS; it does not replace that host’s certificate. Do not bypass invalid certificate validation to claim success.
show managed-host <gateway-managed-host-name> remote-servicesshow remote-accesssystem audit
Confirm that there are only two intended Remote Services. Set a narrow Remote Access WHITELIST for the gateway and each selected service if the endpoint must not be broadly reachable. Do not assume an existing Rule creates a third tunnel.
If one destination fails, the other service can remain operational. On the gateway, use system diagnostics and system synchronize; fix the target service or LAN route. To retire an individual mapping, use unset remote-service lan-ssh or unset remote-service lan-web on the owning Agent after reviewing any service interruption. Do not delete the gateway’s Managed Host just to remove one mapping.
A reachable LAN target may legitimately be saved DEGRADED until current runtime verification succeeds. The owning Agent is the Relay Host; never create the Remote Service on the Server. Destination + Service duplication on that Agent is rejected.Current CLI inventory · MCP compatibility
Last modified on October 29, 2026
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"DataRelay Link","description":"Lightweight secure connectivity for isolated and restricted networks with controlled remote access and agentless outbound egress.","colors":{"primary":"#C2410C","light":"#FB923C","dark":"#C75A00"},"logo":{"light":"https://mintcdn.com/data-relay/QdSvVfPZ7NEJSOWl/logo/light.svg?fit=max\u0026auto=format\u0026n=QdSvVfPZ7NEJSOWl\u0026q=85\u0026s=888463e35ab49f73f9b174030b3263d6","dark":"https://mintcdn.com/data-relay/QdSvVfPZ7NEJSOWl/logo/dark.svg?fit=max\u0026auto=format\u0026n=QdSvVfPZ7NEJSOWl\u0026q=85\u0026s=78944f5be2786c960ab6daaaf7ca870b","href":"https://link.datarelay.run"},"favicon":"https://mintcdn.com/data-relay/QdSvVfPZ7NEJSOWl/favicon.svg?fit=max\u0026auto=format\u0026n=QdSvVfPZ7NEJSOWl\u0026q=85\u0026s=d6f1dea7850d21b0c157e4be3317c226","appearance":{"default":"system","strict":false},"navbar":{"links":[{"href":"https://datarelay.run/","label":"DataRelay"},{"href":"https://link.datarelay.run/","label":"Link"},{"href":"https://control.datarelay.run/","label":"Control"},{"href":"https://grant.datarelay.run/","label":"Grant"},{"href":"https://engineering.datarelay.run/","label":"Engineering"},{"href":"https://github.com/datarelay-labs/datarelay-link","type":"github"}]},"search":{"prompt":"Search DataRelay Link docs..."},"seo":{"metatags":{"canonical":"https://link.datarelay.run"},"indexing":"navigable"},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":""},{"language":"ko","href":"ko"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"data-relay","hasAudioNarration":false,"actualSubdomain":"data-relay","customDomains":["link.datarelay.run"],"gitSource":{"type":"github","owner":"datarelay-labs","repo":"datarelay-link-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae2b51eefa5e7bcbb87bc8e","collectionId":"a1f69361-66ae-435c-96ea-5f84e3b497ae","liveDeploymentHistoryId":"6ae2b51eefa5e7bcbb87bc8e","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae2b51eefa5e7bcbb87bc8e","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"en","tag":"Practical Use Cases","count":13},{"language":"ko","tag":"실습: 활용 사례","count":13},{"language":"en","tag":"Getting Started","count":11},{"language":"ko","tag":"시작하기","count":10},{"language":"en","tag":"Security \u0026 Reference","count":9},{"language":"ko","tag":"보안 \u0026 참고","count":8},{"language":"en","tag":"Operations","count":7},{"language":"ko","tag":"운영 \u0026 문제 해결","count":7},{"language":"en","tag":"Remote Services \u0026 Access","count":5},{"language":"ko","tag":"Remote Service \u0026 Access","count":5},{"language":"en","tag":"AI Access","count":4},{"language":"ko","tag":"AI Access","count":4},{"language":"en","tag":"Deployment","count":3},{"language":"en","tag":"CLI \u0026 Configuration","count":3},{"language":"en","tag":"Managed Hosts \u0026 Objects","count":3},{"language":"ko","tag":"배포","count":3},{"language":"ko","tag":"CLI \u0026 Configuration","count":3},{"language":"ko","tag":"Managed Host \u0026 Object","count":3},{"language":"en","tag":"Internet Access","count":1},{"language":"ko","tag":"Internet Access","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--dr-brand:#C2410C;--dr-brand-hover:#9A3412;--dr-brand-soft:#FFF7ED;--dr-product-accent:#0369A1;--dr-bg:#FFFFFF;--dr-surface:#FFFFFF;--dr-surface-subtle:#FAFAF9;--dr-ink:#1C1917;--dr-muted:#57534E;--dr-border:#E7E5E4;--dr-border-strong:#D6D3D1;--dr-shadow-sm:0 1px 2px rgb(28 25 23 / 0.05);--dr-shadow-md:0 14px 34px rgb(28 25 23 / 0.09);--dr-radius-sm:10px;--dr-radius-md:16px;--dr-radius-lg:24px}.dark{--dr-brand:#FB923C;--dr-brand-hover:#FDBA74;--dr-brand-soft:#2A160D;--dr-product-accent:#38BDF8;--dr-bg:#0C0A09;--dr-surface:#141210;--dr-surface-subtle:#1C1917;--dr-ink:#FAFAF9;--dr-muted:#C7C2BC;--dr-border:#292524;--dr-border-strong:#44403C;--dr-shadow-sm:0 1px 2px rgb(0 0 0 / 0.25);--dr-shadow-md:0 18px 42px rgb(0 0 0 / 0.32)}html{scroll-behavior:smooth}body{text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}#navbar-transition{background:rgb(255 255 255/.9)!important;border-color:rgb(120 113 108/.16)!important;backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%)}.dark #navbar-transition{background:rgb(12 10 9/.88)!important;border-color:rgb(231 229 228/.1)!important}.nav-logo{height:2rem!important}body,main h1,main h2{color:var(--dr-ink)}main h1{letter-spacing:-.038em;font-weight:760;line-height:1.08}main h2{letter-spacing:-.025em;font-weight:700}main h3{letter-spacing:-.015em}main li,main p{line-height:1.72}main blockquote{border-left:3px solid var(--dr-product-accent)!important;background:var(--dr-surface-subtle);border-radius:0 var(--dr-radius-sm) var(--dr-radius-sm) 0;padding:.8rem 1rem}main pre{border:1px solid var(--dr-border)!important;border-radius:var(--dr-radius-md)!important;box-shadow:var(--dr-shadow-sm)}main table{border-color:var(--dr-border)!important;border-radius:var(--dr-radius-sm)}.dr-hero-kicker{display:inline-flex;align-items:center;gap:.5rem;margin:0 0 1rem;padding:.42rem .7rem;border:1px solid #fed7aa;border-radius:999px;background:#fff7ed;color:#9a3412;font-size:.72rem;font-weight:760;letter-spacing:.12em;text-transform:uppercase}.dark .dr-hero-kicker{border-color:#7c2d12;background:#2a160d;color:#fdba74}.dr-hero-kicker+h1{max-width:950px;margin-top:0!important;font-size:clamp(2.7rem,6vw,4.85rem)!important;line-height:.98!important;letter-spacing:-.055em!important}.dr-hero-actions{display:flex;flex-wrap:wrap;gap:.7rem;margin:1.55rem 0 1.35rem}.dr-button{display:inline-flex;min-height:2.75rem;align-items:center;justify-content:center;border-radius:.72rem;padding:.68rem 1rem;border:1px solid transparent;font-size:.9rem;font-weight:680;line-height:1;text-decoration:none!important;transition:transform 150ms ease,border-color 150ms ease,background-color 150ms ease,box-shadow 150ms ease}.dr-button:hover{transform:translateY(-1px)}.dr-button-primary{background:var(--dr-brand);color:#fff!important;box-shadow:0 6px 18px rgb(194 65 12/.2)}.dr-button-primary:hover{background:var(--dr-brand-hover)}.dark .dr-button-primary{color:#1c1917!important}.dr-button-secondary{background:var(--dr-surface);color:var(--dr-ink)!important;border-color:var(--dr-border-strong);box-shadow:var(--dr-shadow-sm)}.dr-button-secondary:hover{border-color:var(--dr-product-accent)}.dr-family-strip{display:flex;align-items:center;gap:.35rem;margin:0 0 2rem;padding:.4rem;width:fit-content;max-width:100%;overflow-x:auto;border:1px solid var(--dr-border);border-radius:.85rem;background:var(--dr-surface-subtle);scrollbar-width:none}.dr-family-strip::-webkit-scrollbar{display:none}.dr-family-strip .dr-family-current,.dr-family-strip a{display:inline-flex;align-items:center;min-height:2rem;padding:.42rem .68rem;border-radius:.56rem;white-space:nowrap;color:var(--dr-muted)!important;font-size:.78rem;font-weight:650;text-decoration:none!important}.dr-family-strip a:hover{color:var(--dr-ink)!important;background:var(--dr-surface)}.dr-family-strip .dr-family-current{color:#fff!important;background:var(--dr-product-accent);box-shadow:var(--dr-shadow-sm)}.dark .dr-family-strip .dr-family-current{color:#0c0a09!important}.card{border-color:var(--dr-border)!important;border-radius:var(--dr-radius-md)!important;background:var(--dr-surface)!important;box-shadow:var(--dr-shadow-sm);transition:transform 160ms ease,box-shadow 160ms ease,border-color 160ms ease!important}.card:hover{transform:translateY(-2px);border-color:var(--dr-product-accent)!important;box-shadow:var(--dr-shadow-md)}[data-component-part=card-title]{letter-spacing:-.012em}[data-component-part=card-icon]{color:var(--dr-product-accent)!important}.callout{border-radius:var(--dr-radius-md)!important}footer{border-top-color:var(--dr-border)!important}:where(a, button, input, select, textarea):focus-visible{outline:3px solid var(--dr-product-accent)!important;outline-offset:3px!important}@media (max-width:768px){.dr-hero-kicker+h1{font-size:clamp(2.35rem,13vw,3.55rem)!important}.dr-hero-actions{display:grid;grid-template-columns:1fr}.dr-button,.dr-family-strip{width:100%}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.card,.dr-button{transition:none!important}.card:hover,.dr-button:hover{transform:none}}"}],"page":{"pagePath":"use-cases/lan-relay","slug":"/use-cases/lan-relay","pageMetadata":{"title":"Use case: One LAN gateway, multiple services","description":"Use one DRLink Agent as the relay for two independent internal servers.","href":"/use-cases/lan-relay"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Use one DRLink Agent as the relay for two independent internal servers.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`publish-multiple-internal-lan-services-through-one-agent`,children:`Publish multiple internal LAN services through one Agent`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Outcome:`}),` A single Agent Host acts as a relay for one internal SSH host and one internal HTTPS application. The destination machines do not each need their own Agent.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example:`}),` Agent Host at 10.20.0.10 can reach SSH host 10.20.0.21:22 and HTTPS host 10.20.0.22:443. The Agent makes outbound connectivity to the DRLink Server.`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-1-—-check-lan-and-enrollment`,children:`Step 1 — check LAN and enrollment`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-guided-menu.png?fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=5752f997527236ce70218caf77a3dc4a`,alt:`Real Data Relay Link CLI capture — Agent Host menu: choose 1 to manage its Remote Services; 3 opens ConfigurationBundle.`,\"data-og-width\":`2040`,width:`2040`,\"data-og-height\":`991`,height:`991`,\"data-path\":`images/cli-captures/agent-guided-menu.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-guided-menu.png?w=280\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=7fff112c92a617005ad51f1bacc065a8 280w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-guided-menu.png?w=560\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=8ff96dbcbd1929915700f35070a32a1b 560w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-guided-menu.png?w=840\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=2235323f7af8ebde44228906e63e6921 840w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-guided-menu.png?w=1100\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=977759dc5cba58df1790305e184a355a 1100w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-guided-menu.png?w=1650\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=a4bce73be9e823489f812194dfbb1be2 1650w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-guided-menu.png?w=2500\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=8ece3cbc9b2306dd540f49bd009b4791 2500w`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Figure 1. Agent Host menu: choose 1 to manage its Remote Services; 3 opens ConfigurationBundle. CLI output example; sensitive addresses and hostnames are masked.`})}),`\n`,_jsxs(_components.p,{children:[`First verify that gateway `,_jsx(_components.strong,{children:`10.20.0.10`}),` can reach both target IPs/ports. For a new Agent select the `,_jsx(_components.strong,{children:`two LAN targets`}),` in Zero-Touch below. Do not use SSH only to publish the gateway’s own SSH unnecessarily. Prepare LAN routing/firewalls separately.`]}),`\n`,_jsx(Heading,{level:`2`,id:`new-gateway-enroll-both-services-with-zero-touch`,children:`New gateway: enroll both services with Zero-Touch`}),`\n`,_jsxs(_components.p,{children:[`On the Server run `,_jsx(_components.code,{children:`set enrollment zero-touch`}),`, select `,_jsx(_components.strong,{children:`Linux`}),`, name/describe the host and choose `,_jsx(_components.strong,{children:`Choose Remote Services`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Selection`}),_jsx(_components.th,{children:`Service ID`}),_jsx(_components.th,{children:`Target host`}),_jsx(_components.th,{children:`Target port`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Add SSH`}),_jsx(_components.td,{children:`lan-ssh`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`10.20.0.21`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`22`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Add HTTPS`}),_jsx(_components.td,{children:`lan-web`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`10.20.0.22`}),_jsx(_components.td,{\"data-numeric\":`true`,children:`443`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Enter the target’s existing OS username for SSH, add both services, then `,_jsx(_components.strong,{children:`Finish`}),`. Run the generated command once on the `,_jsx(_components.strong,{children:`gateway`}),`; Objects, Remote Services and public endpoints are automatic. On the Agent inspect `,_jsx(_components.code,{children:`show remote-services`}),` and each actual service name, then continue at `,_jsx(_components.strong,{children:`Step 4`}),`. Steps 2–3 below are only for manual additions to an existing Agent.`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-2-—-describe-both-destinations-and-services`,children:`Step 2 — describe both destinations and services`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/service-object-type.png?fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=42a9c0489cf532fba96595426ad4f46d`,alt:`Real Data Relay Link CLI capture — Service Object type choices: 1 SSH/TCP 22, 3 HTTPS/TCP 443, or 6 Fixed TCP as needed.`,\"data-og-width\":`2040`,width:`2040`,\"data-og-height\":`875`,height:`875`,\"data-path\":`images/cli-captures/service-object-type.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/service-object-type.png?w=280\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=b473f211ec8bf903b2a6d7fb491f58fd 280w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/service-object-type.png?w=560\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=702e6b27f78a34d745efb69dfde957e3 560w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/service-object-type.png?w=840\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=f1c6d687fb9d7def832fe67458649756 840w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/service-object-type.png?w=1100\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=8c21065218c5d21d567216ac5efe22f6 1100w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/service-object-type.png?w=1650\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=1dcc00f5c17e9367e520b822d5a5d7db 1650w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/service-object-type.png?w=2500\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=cafb88b37beeab9559e7295c90f2d61e 2500w`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Figure 2. Service Object type choices: 1 SSH/TCP 22, 3 HTTPS/TCP 443, or 6 Fixed TCP as needed. CLI output example; sensitive addresses and hostnames are masked.`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/network-object-created.png?fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=e854966ca5d57fe25e13c96627b0c57f`,alt:`Real Data Relay Link CLI capture — Real Network Object creation confirmation; this alone does not publish a Remote Service.`,\"data-og-width\":`2040`,width:`2040`,\"data-og-height\":`797`,height:`797`,\"data-path\":`images/cli-captures/network-object-created.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/network-object-created.png?w=280\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=440dfc04cf575adeea6ebc140c262ce5 280w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/network-object-created.png?w=560\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=6c348983470bbcd7f6a7d0017da1d40a 560w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/network-object-created.png?w=840\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=d4aff2df3251534e116df441e2e0ff87 840w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/network-object-created.png?w=1100\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=0b400f320f43909835a72ae9d1f99a64 1100w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/network-object-created.png?w=1650\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=581a57a7e11a77cafad641beef807f25 1650w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/network-object-created.png?w=2500\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=d60f93491cb4db7a614ec8ff4e09f978 2500w`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Figure 3. Real Network Object creation confirmation; this alone does not publish a Remote Service. CLI output example; sensitive addresses and hostnames are masked.`})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Server REPL:`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`set network-object lan-ssh-host type ip value 10.20.0.21`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`set network-object lan-web-host type ip value 10.20.0.22`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`set service-object ssh type tcp port 22`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`set service-object web-https type tcp port 443`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`show network-objects`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`show service-objects`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Each Network Object is `,_jsx(_components.strong,{children:`one destination`}),`. A Network Group or CIDR range is not a valid Remote Service destination.`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-3-—-create-two-remote-services-on-the-gateway`,children:`Step 3 — create two Remote Services on the gateway`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-services.png?fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=adfc77e440bd1beeb16212314f989462`,alt:`Real Data Relay Link CLI capture — Captured Remote Services inventory: distinguish DEGRADED from DISABLED; a listed endpoint is not proof of live traffic.`,\"data-og-width\":`2040`,width:`2040`,\"data-og-height\":`1107`,height:`1107`,\"data-path\":`images/cli-captures/agent-services.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-services.png?w=280\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=66f5015e3c059cff75fbf0102822fc74 280w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-services.png?w=560\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=c5b890519dc4baff883c21a63f226aae 560w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-services.png?w=840\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=6e6bc1284e2f9cd8ff1987b1c4d81a0d 840w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-services.png?w=1100\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=9187bd53d683573f8560bfa4081baac0 1100w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-services.png?w=1650\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=a0e2d03fadfba5374b21fa97ca1b045b 1650w, https://mintcdn.com/data-relay/RzAl7zFhuZCRSIKj/images/cli-captures/agent-services.png?w=2500\u0026fit=max\u0026auto=format\u0026n=RzAl7zFhuZCRSIKj\u0026q=85\u0026s=edaf2b61a45dd5053da58c2a5b424a7c 2500w`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`Figure 4. Captured Remote Services inventory: distinguish DEGRADED from DISABLED; a listed endpoint is not proof of live traffic. CLI output example; sensitive addresses and hostnames are masked.`})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Gateway Agent REPL:`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`show status`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`set remote-service lan-ssh destination lan-ssh-host service ssh enabled`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`set remote-service lan-web destination lan-web-host service web-https enabled`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`show remote-service lan-ssh`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`show remote-service lan-web`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Each service has its own stable Server endpoint. An Agent can own more than one Remote Service; the target does not have to be the Agent itself.`}),`\n`,_jsx(Heading,{level:`2`,id:`step-4-—-test-both-real-applications`,children:`Step 4 — test both real applications`}),`\n`,_jsxs(_components.p,{children:[`From the approved `,_jsx(_components.strong,{children:`outside workstation`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`ssh`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -p`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ssh-public-por`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`t`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`actual-ssh-use`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`r`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`@`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`drlink-public-hos`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`t`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For HTTPS, create/confirm the DNS and application certificate for the `,_jsx(_components.strong,{children:`publicly used host name`}),`, then open in a browser:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://\u003ccertificate-matching-public-host>:\u003cweb-public-port>/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Expected: SSH reaches `,_jsx(_components.strong,{children:`10.20.0.21:22`}),` and the browser reaches `,_jsx(_components.strong,{children:`10.20.0.22:443`}),`. DRLink passes through backend application TLS; it does not replace that host’s certificate. Do not bypass invalid certificate validation to claim success.`]}),`\n`,_jsx(Heading,{level:`2`,id:`step-5-—-check-isolation`,children:`Step 5 — check isolation`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Server REPL:`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`show managed-host \u003cgateway-managed-host-name> remote-services`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`show remote-access`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`system audit`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Confirm that there are only two intended Remote Services. Set a narrow Remote Access WHITELIST for the gateway and each selected service if the endpoint must not be broadly reachable. Do not assume an existing Rule creates a third tunnel.`}),`\n`,_jsx(Heading,{level:`2`,id:`recovery-/-cleanup`,children:`Recovery / cleanup`}),`\n`,_jsxs(_components.p,{children:[`If one destination fails, the other service can remain operational. On the gateway, use `,_jsx(_components.code,{children:`system diagnostics`}),` and `,_jsx(_components.code,{children:`system synchronize`}),`; fix the target service or LAN route. To retire an individual mapping, use `,_jsx(_components.code,{children:`unset remote-service lan-ssh`}),` or `,_jsx(_components.code,{children:`unset remote-service lan-web`}),` on the owning Agent after reviewing any service interruption. Do not delete the gateway’s Managed Host just to remove one mapping.`]}),`\n`,_jsx(Heading,{level:`2`,id:`current-behavior-check-—-2026-10-28`,children:`Current behavior check — 2026-10-28`}),`\n`,_jsx(_components.p,{children:`A reachable LAN target may legitimately be saved DEGRADED until current runtime verification succeeds. The owning Agent is the Relay Host; never create the Remote Service on the Server. Destination + Service duplication on that Agent is rejected.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/drlink/cli-reference`,children:`Current CLI inventory`}),` · `,_jsx(_components.a,{href:`/reference/mcp-validation`,children:`MCP compatibility`})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Use case: One LAN gateway, multiple services","description":"Use one DRLink Agent as the relay for two independent internal servers.","href":"/use-cases/lan-relay"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Publish multiple internal LAN services through one Agent","slug":"publish-multiple-internal-lan-services-through-one-agent","depth":1,"children":[]},{"title":"Step 1 — check LAN and enrollment","slug":"step-1-—-check-lan-and-enrollment","depth":2,"children":[]},{"title":"New gateway: enroll both services with Zero-Touch","slug":"new-gateway-enroll-both-services-with-zero-touch","depth":2,"children":[]},{"title":"Step 2 — describe both destinations and services","slug":"step-2-—-describe-both-destinations-and-services","depth":2,"children":[]},{"title":"Step 3 — create two Remote Services on the gateway","slug":"step-3-—-create-two-remote-services-on-the-gateway","depth":2,"children":[]},{"title":"Step 4 — test both real applications","slug":"step-4-—-test-both-real-applications","depth":2,"children":[]},{"title":"Step 5 — check isolation","slug":"step-5-—-check-isolation","depth":2,"children":[]},{"title":"Recovery / cleanup","slug":"recovery-/-cleanup","depth":2,"children":[]},{"title":"Current behavior check — 2026-10-28","slug":"current-behavior-check-—-2026-10-28","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"data-relay","siteName":"DataRelay Link","title":"Use case: One LAN gateway, multiple services - DataRelay Link","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/use-cases/lan-relay","matchLevel":0},"ko":{"href":"/ko/use-cases/lan-relay","matchLevel":1}}},"lastModified":"2026-10-29T02:38:38.017Z","gitLastModified":"2026-10-29T02:38:30.000Z","originalFileLocation":"use-cases/lan-relay.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Use one DRLink Agent as the relay for two independent internal servers.\">\u003cmeta data-mint-head name=\"application-name\" content=\"DataRelay Link\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/data-relay/gMMMsFWCyqO9qwwH/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/data-relay/gMMMsFWCyqO9qwwH/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/data-relay/gMMMsFWCyqO9qwwH/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/data-relay/gMMMsFWCyqO9qwwH/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/data-relay/gMMMsFWCyqO9qwwH/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/data-relay/gMMMsFWCyqO9qwwH/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/data-relay/gMMMsFWCyqO9qwwH/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/data-relay/gMMMsFWCyqO9qwwH/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/data-relay/gMMMsFWCyqO9qwwH/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Use case: One LAN gateway, multiple services - DataRelay Link\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use one DRLink Agent as the relay for two independent internal servers.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"DataRelay Link\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://link.datarelay.run/use-cases/lan-relay\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://data-relay.mintlify.app/_mintlify/api/og/v2?division=Practical+Use+Cases\u0026amp;title=Use+case%3A+One+LAN+gateway%2C+multiple+services\u0026amp;description=Use+one+DRLink+Agent+as+the+relay+for+two+independent+internal+servers.\u0026amp;theme=60d049ab3c70b24e2c2b6ae4\u0026amp;signature=223aa96b77bba4c5e441485a3d7a4f098f6002b0a56a41c2b415cd8963169e08\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Use case: One LAN gateway, multiple services - DataRelay Link\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use one DRLink Agent as the relay for two independent internal servers.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://data-relay.mintlify.app/_mintlify/api/og/v2?division=Practical+Use+Cases\u0026amp;title=Use+case%3A+One+LAN+gateway%2C+multiple+services\u0026amp;description=Use+one+DRLink+Agent+as+the+relay+for+two+independent+internal+servers.\u0026amp;theme=60d049ab3c70b24e2c2b6ae4\u0026amp;signature=223aa96b77bba4c5e441485a3d7a4f098f6002b0a56a41c2b415cd8963169e08\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/data-relay/gMMMsFWCyqO9qwwH/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"DataRelay Link\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#C2410C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://link.datarelay.run/use-cases/lan-relay\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/use-cases/lan-relay.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://link.datarelay.run/use-cases/lan-relay\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://link.datarelay.run/ko/use-cases/lan-relay\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://link.datarelay.run/use-cases/lan-relay\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://link.datarelay.run/#organization\",\"name\":\"DataRelay Link\",\"url\":\"https://link.datarelay.run\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/data-relay/QdSvVfPZ7NEJSOWl/logo/light.svg?fit=max\u0026auto=format\u0026n=QdSvVfPZ7NEJSOWl\u0026q=85\u0026s=888463e35ab49f73f9b174030b3263d6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://link.datarelay.run#website\",\"name\":\"DataRelay Link\",\"url\":\"https://link.datarelay.run\",\"publisher\":{\"@id\":\"https://link.datarelay.run/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://link.datarelay.run/use-cases/lan-relay#webpage\",\"url\":\"https://link.datarelay.run/use-cases/lan-relay\",\"name\":\"Use case: One LAN gateway, multiple services\",\"description\":\"Use one DRLink Agent as the relay for two independent internal servers.\",\"dateModified\":\"2026-10-29T02:38:30.000Z\",\"isPartOf\":{\"@id\":\"https://link.datarelay.run#website\"},\"breadcrumb\":{\"@id\":\"https://link.datarelay.run/use-cases/lan-relay#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://link.datarelay.run/use-cases/lan-relay#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Practical Use Cases\",\"item\":\"https://link.datarelay.run/use-cases/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Use case: One LAN gateway, multiple services\",\"item\":\"https://link.datarelay.run/use-cases/lan-relay\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://link.datarelay.run/use-cases/lan-relay#article\",\"headline\":\"Use case: One LAN gateway, multiple services\",\"name\":\"Use case: One LAN gateway, multiple services\",\"description\":\"Use one DRLink Agent as the relay for two independent internal servers.\",\"url\":\"https://link.datarelay.run/use-cases/lan-relay\",\"mainEntityOfPage\":{\"@id\":\"https://link.datarelay.run/use-cases/lan-relay#webpage\"},\"dateModified\":\"2026-10-29T02:38:30.000Z\",\"publisher\":{\"@id\":\"https://link.datarelay.run/#organization\"},\"isPartOf\":{\"@id\":\"https://link.datarelay.run#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"DataRelay Link\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"DataRelay Link","nav":{"global":null,"languages":[{"language":"en","groups":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"DataRelay Link","href":""},{"title":"What is DataRelay Link?","sidebarTitle":"What is DataRelay Link?","href":"/getting-started/overview"},{"title":"Concepts \u0026 Mental Model","sidebarTitle":"Concepts \u0026 Mental Model","icon":"diagram-project","href":"/getting-started/concepts"},{"title":"OCI Free Tier Server Preparation","sidebarTitle":"OCI Free Tier Server","icon":"cloud","href":"/getting-started/oci-free-tier-server"},{"title":"OCI Network and VM","sidebarTitle":"OCI Network \u0026 VM","icon":"cloud","href":"/getting-started/oci-network-vm"},{"title":"Install DataRelay Link on OCI","sidebarTitle":"Install DataRelay Link","icon":"server","href":"/getting-started/oci-drlink-install"},{"title":"Quick Start","href":"/getting-started/quickstart"},{"title":"Server Installation","href":"/getting-started/server-installation"},{"title":"Linux Agent Host","sidebarTitle":"Linux Agent Host","href":"/getting-started/linux-client"},{"title":"macOS Agent Host","sidebarTitle":"macOS Agent Host","href":"/getting-started/macos-client"},{"title":"Windows Agent Host","sidebarTitle":"Windows Agent Host","href":"/getting-started/windows-client"}]},{"group":"Practical Use Cases","icon":"list-check","pages":[{"title":"Scenario Playbooks","sidebarTitle":"Use Cases","href":"/use-cases/index"},{"title":"Use case: Remote SSH through NAT","description":"Enroll one Linux host and reach only its SSH service through the DRLink Server.","href":"/use-cases/remote-ssh"},{"title":"Use case: One LAN gateway, multiple services","href":"/use-cases/lan-relay"},{"title":"Use case: Private HTTPS console","description":"Access an internal HTTPS management application through a controlled Remote Service.","href":"/use-cases/private-web"},{"title":"Use case: Office-only Remote Access","href":"/use-cases/office-allowlist"},{"title":"Use case: Fixed TCP remote database","href":"/use-cases/fixed-tcp-database"},{"title":"Use case: Ubuntu APT in a restricted network","href":"/use-cases/ubuntu-updates"},{"title":"Use case: Git and HTTPS API from a restricted host","href":"/use-cases/github-egress"},{"title":"Use case: Read-only AI / MCP access","href":"/use-cases/ai-readonly"},{"title":"Use case: AI Server files, Git and jobs","href":"/use-cases/ai-server-control"},{"title":"Use case: Enroll multiple branch hosts","href":"/use-cases/bulk-onboarding"},{"title":"Use case: ConfigurationBundle safely","href":"/use-cases/configuration-bundle"},{"title":"Use case: Backup and restore","href":"/use-cases/backup-recovery"}]},{"group":"Managed Hosts \u0026 Objects","icon":"network-wired","pages":[{"title":"Managed Host Enrollment","sidebarTitle":"Managed Host Enrollment","href":"/guides/enrollment"},{"title":"Zero-Touch Enrollment","href":"/guides/zero-touch"},{"title":"Objects \u0026 Groups","sidebarTitle":"Objects \u0026 Groups","href":"/guides/groups"}]},{"group":"Remote Services \u0026 Access","icon":"arrow-right-to-bracket","pages":[{"title":"SSH","href":"/guides/ssh"},{"title":"Remote Services","sidebarTitle":"Remote Services","href":"/guides/services"},{"title":"HTTP \u0026 HTTPS","href":"/guides/http-https"},{"title":"Custom TCP \u0026 LAN Targets","href":"/guides/custom-tcp-lan"},{"title":"Remote Access","href":"/guides/remote-access"}]},{"group":"Internet Access","icon":"globe","pages":[{"title":"Internet Access","href":"/guides/internet-access"}]},{"group":"AI Access","icon":"robot","pages":[{"title":"AI Access \u0026 MCP","href":"/guides/ai-access"},{"title":"Claude \u0026 ChatGPT MCP Setup","href":"/guides/mcp-clients"},{"title":"MCP Tool Reference","href":"/reference/mcp-tools"},{"title":"MCP Compatibility","href":"/reference/mcp-validation"}]},{"group":"CLI \u0026 Configuration","icon":"terminal","pages":[{"title":"drlink Guide","href":"/drlink/overview"},{"title":"CLI Reference","href":"/drlink/cli-reference"},{"title":"ConfigurationBundle","href":"/drlink/configuration-bundle"}]},{"group":"Deployment","icon":"route","pages":[{"title":"Deployment Modes","href":"/deployment/modes"},{"title":"Firewall \u0026 NAT","href":"/deployment/firewall-nat"},{"title":"DNS \u0026 Public Hostname","href":"/deployment/dns-hostname"}]},{"group":"Operations","icon":"screwdriver-wrench","pages":[{"title":"Operations Overview","sidebarTitle":"Operations Overview","icon":"screwdriver-wrench","href":"/operations/maintenance"},{"title":"Updates","href":"/operations/updates"},{"title":"Backup \u0026 Restore","href":"/operations/backup-restore"},{"title":"Diagnostics","href":"/operations/diagnostics"},{"title":"Lifecycle Semantics","href":"/operations/lifecycle"},{"title":"Troubleshooting","href":"/troubleshooting/overview"},{"title":"Feedback","href":"/feedback/index"}]},{"group":"Security \u0026 Reference","icon":"shield-halved","pages":[{"title":"Security Overview","href":"/security/overview"},{"title":"Architecture","sidebarTitle":"Architecture","icon":"sitemap","href":"/reference/architecture"},{"title":"DataRelay Link and Managed Alternatives","sidebarTitle":"Compare Alternatives","href":"/reference/alternatives"},{"title":"Supported Platforms","href":"/reference/platforms"},{"title":"Network Ports","href":"/reference/network-ports"},{"title":"Version \u0026 Updates","href":"/reference/release-status"},{"title":"Glossary","sidebarTitle":"Glossary","icon":"book-open","href":"/reference/glossary"},{"title":"Known Limits","href":"/reference/limitations"},{"title":"License","sidebarTitle":"License","icon":"scale-balanced","href":"/reference/license"}]}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/use-cases/lan-relay"}]}]},"basePath":"","title":"Use case: One LAN gateway, multiple services - DataRelay Link","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BG6oD64b.js","lightbox-handle-r17bVUz3.js"]}