<p>zrok VPN backend allows for simple host-to-host VPN setup.</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="starting-vpn-server">Starting VPN server<ahref="#starting-vpn-server"class="hash-link"aria-label="Direct link to Starting VPN server"title="Direct link to Starting VPN server"></a></h2>
<p>VPN is shared through the <code>vpn</code> backend of <code>zrok</code> command.</p>
<divclass="codeBlockContainer_Ckt0 theme-code-block"style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><divclass="codeBlockContent_biex"><pretabindex="0"class="prism-code language-text codeBlock_bY9V thin-scrollbar"style="color:#F8F8F2;background-color:#282A36"><codeclass="codeBlockLines_e6Vv"><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">eugene@hermes $ sudo -E zrok share private --headless --backend-mode vpn</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.542] INFO sdk-golang/ziti.(*listenerManager).createSessionWithBackoff: {session token=[589d443c-f59d-4fc8-8c48-76609b7fb402]} new service session</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.705] INFO main.(*sharePrivateCommand).run: allow other to access your share with the following command:</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">zrok access private 3rq7torslq3n</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.705] INFO zrok/endpoints/vpn.(*Backend).Run: started</span><br></span></code></pre><divclass="buttonGroup__atx"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_eSgA"aria-hidden="true"><svgviewBox="0 0 24 24"class="copyButtonIcon_y97N"><pathfill="currentColor"d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgviewBox="0 0 24 24"class="copyButtonSuccessIcon_LjdS"><pathfill="currentColor"d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p><code>sudo</code> or equivalent invocation is required because VPN mode needs to create a virtual network device (<code>tun</code>)
<code>-E</code> option allows <code>zrok</code> to find your zrok configuration files (in your <code>$HOME/.zrok</code>)</p>
<p>By default <code>vpn</code> backend uses subnet <code>10.122.0.0/16</code> and assigns <code>10.122.0.1</code> to the host that stared VPN share.</p>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="vpn-share-reservation">VPN share reservation<ahref="#vpn-share-reservation"class="hash-link"aria-label="Direct link to VPN share reservation"title="Direct link to VPN share reservation"></a></h2>
<p>Share reservation works the same as with other backend types:</p>
<divclass="codeBlockContainer_Ckt0 theme-code-block"style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><divclass="codeBlockContent_biex"><pretabindex="0"class="prism-code language-text codeBlock_bY9V thin-scrollbar"style="color:#F8F8F2;background-color:#282A36"><codeclass="codeBlockLines_e6Vv"><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">eugene@hermes $ zrok reserve private -b vpn</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.297] INFO main.(*reserveCommand).run: your reserved share token is 'k77y2cl7jmjl'</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain"style="display:inline-block"></span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">eugene@hermes $ sudo -E zrok share reserved k77y2cl7jmjl --headless</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.211] INFO main.(*shareReservedCommand).run: sharing target: '10.122.0.1/16'</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.211] INFO main.(*shareReservedCommand).run: using existing backend proxy endpoint: 10.122.0.1/16</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.463] INFO sdk-golang/ziti.(*listenerManager).createSessionWithBackoff: {session token=[22c5708d-e2f2-41aa-a507-454055f8bfcc]} new service session</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.641] INFO main.(*shareReservedCommand).run: use this command to access your zrok share: 'zrok access private k77y2cl7jmjl'</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain"style="display:inline-block"></span><br></span></code></pre><divclass="buttonGroup__atx"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_eSgA"aria-hidden="true"><svgviewBox="0 0 24 24"class="copyButtonIcon_y97N"><pathfill="currentColor"d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgviewBox="0 0 24 24"class="copyButtonSuccessIcon_LjdS"><pathfill="currentColor"d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2class="anchor anchorWithStickyNavbar_LWe7"id="accessing-vpn-share">Accessing VPN share<ahref="#accessing-vpn-share"class="hash-link"aria-label="Direct link to Accessing VPN share"title="Direct link to Accessing VPN share"></a></h2>
<p>Accessing a VPN share works similar to other backends.</p>
<divclass="codeBlockContainer_Ckt0 theme-code-block"style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><divclass="codeBlockContent_biex"><pretabindex="0"class="prism-code language-text codeBlock_bY9V thin-scrollbar"style="color:#F8F8F2;background-color:#282A36"><codeclass="codeBlockLines_e6Vv"><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">eugene@calculon % sudo -E zrok access private --headless k77y2cl7jmjl</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.201] INFO main.(*accessPrivateCommand).run: allocated frontend '50B5hloP1s1X'</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.662] INFO main.(*accessPrivateCommand).run: access the zrok share at the following endpoint: VPN:</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.662] INFO main.(*accessPrivateCommand).run: 10.122.0.1 -> CONNECTED Welcome to zrok VPN</span><br></span><spanclass="token-line"style="color:#F8F8F2"><spanclass="token plain">[ 0.662] INFO zrok/endpoints/vpn.(*Frontend).Run: connected:Welcome to zrok VPN</span><br></span></code></pre><divclass="buttonGroup__atx"><buttontype="button"aria-label="Copy code to clipboard"title="Copy"class="clean-btn"><spanclass="copyButtonIcons_eSgA"aria-hidden="true"><svgviewBox="0 0 24 24"class="copyButtonIcon_y97N"><pathfill="currentColor"d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svgviewBox="0 0 24 24"class="copyButtonSuccessIcon_LjdS"><pathfill="currentColor"d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Starting <code>zrok access</code> to a VPN share creates virtual network device/interface:</p>