123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 |
- <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
- <channel>
- <title>EdgeVPN – Documentation</title>
- <link>https://mudler.github.io/edgevpn/docs/</link>
- <description>Recent content in Documentation on EdgeVPN</description>
- <generator>Hugo -- gohugo.io</generator>
-
- <atom:link href="https://mudler.github.io/edgevpn/docs/index.xml" rel="self" type="application/rss+xml" />
-
-
-
-
-
-
-
- <item>
- <title>Docs: CLI</title>
- <link>https://mudler.github.io/edgevpn/docs/getting-started/cli/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://mudler.github.io/edgevpn/docs/getting-started/cli/</guid>
- <description>
-
-
- <p>To start the VPN, simply run <code>edgevpn</code> without any argument.</p>
- <p>An example of running edgevpn on multiple hosts:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#8f5902;font-style:italic"># on Node A</span>
- $ <span style="color:#000">EDGEVPNTOKEN</span><span style="color:#ce5c00;font-weight:bold">=</span>.. edgevpn --address 10.1.0.11/24
- <span style="color:#8f5902;font-style:italic"># on Node B</span>
- $ <span style="color:#000">EDGEVPNTOKEN</span><span style="color:#ce5c00;font-weight:bold">=</span>.. edgevpn --address 10.1.0.12/24
- <span style="color:#8f5902;font-style:italic"># on Node C ...</span>
- $ <span style="color:#000">EDGEVPNTOKEN</span><span style="color:#ce5c00;font-weight:bold">=</span>.. edgevpn --address 10.1.0.13/24
- ...
- </code></pre></div><p>&hellip; and that&rsquo;s it! the <code>--address</code> is a <em>virtual</em> unique IP for each node, and it is actually the ip where the node will be reachable to from the vpn. You can assign IPs freely to the nodes of the network, while you can override the default <code>edgevpn0</code> interface with <code>IFACE</code> (or <code>--interface</code>)</p>
- <p><em>Note</em>: It might take up time to build the connection between nodes. Wait at least 5 mins, it depends on the network behind the hosts.</p>
- <p>The VPN takes several options, below you will find a reference for the most important features:</p>
- <h2 id="generate-a-network-token">Generate a network token</h2>
- <p>EdgeVPN works by generating tokens (or network configuration files) that are shared between different machines.</p>
- <p>Every token is unique and identifies the network itself: there is no central server setup, and no IP address is specified in config files.</p>
- <p>To generate a new network token, just run <code>edgevpn -g -b</code>:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn -g -b
- b3RwOgogIGRodDoKICAgIGludGVydmFsOiA5MDAwCiAgICBrZXk6IDRPNk5aUUMyTzVRNzdKRlJJT1BCWDVWRUkzRUlKSFdECiAgICBsZW5ndGg6IDMyCiAgY3J5cHRvOgogICAgaW50ZXJ2YWw6IDkwMDAKICAgIGtleTogN1hTUUNZN0NaT0haVkxQR0VWTVFRTFZTWE5ORzNOUUgKICAgIGxlbmd0aDogMzIKcm9vbTogWUhmWXlkSUpJRlBieGZDbklLVlNmcGxFa3BhVFFzUk0KcmVuZGV6dm91czoga1hxc2VEcnNqbmFEbFJsclJCU2R0UHZGV0RPZGpXd0cKbWRuczogZ0NzelJqZk5XZEFPdHhubm1mZ3RlSWx6Zk1BRHRiZGEKbWF4X21lc3NhZ2Vfc2l6ZTogMjA5NzE1MjAK
- </code></pre></div><p>A network token needs to be specified for all later interactions with edgevpn, in order to connect and establish a network connection between peers.</p>
- <p>For example, to start <code>edgevpn</code> in API mode:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn api --token &lt;token&gt; <span style="color:#8f5902;font-style:italic"># or alternatively using $EDGEVPNTOKEN</span>
- INFO edgevpn Copyright <span style="color:#ce5c00;font-weight:bold">(</span>C<span style="color:#ce5c00;font-weight:bold">)</span> 2021-2022 Ettore Di Giacinto
- This program comes with ABSOLUTELY NO WARRANTY.
- This is free software, and you are welcome to redistribute it
- under certain conditions.
- INFO Version: v0.8.4 commit:
- INFO Starting EdgeVPN network
- INFO Node ID: 12D3KooWRW4RXSMAh7CTRsTjX7iEjU6DEU8QKJZvFjSosv7zCCeZ
- INFO Node Addresses: <span style="color:#ce5c00;font-weight:bold">[</span>/ip6/::1/tcp/38637 /ip4/192.168.1.234/tcp/41607 /ip4/127.0.0.1/tcp/41607<span style="color:#ce5c00;font-weight:bold">]</span>
- INFO Bootstrapping DHT
- ⇨ http server started on <span style="color:#ce5c00;font-weight:bold">[</span>::<span style="color:#ce5c00;font-weight:bold">]</span>:8080
- </code></pre></div><p>Alternatively a network configuration file can be specified with <code>--config</code> or <code>EDGEVPNCONFIG</code>.</p>
- <p>As the token is a network configuration file encoded in base64, using a token or a config is equivalent:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ <span style="color:#000">EDGEVPNTOKEN</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#204a87;font-weight:bold">$(</span>edgevpn -g <span style="color:#000;font-weight:bold">|</span> tee config.yaml <span style="color:#000;font-weight:bold">|</span> base64 -w0<span style="color:#204a87;font-weight:bold">)</span>
- </code></pre></div><h2 id="api">API</h2>
- <p>While starting in VPN mode, it is possible <em>also</em> to start in API mode by specifying <code>--api</code>.</p>
- <h2 id="dhcp">DHCP</h2>
- <p>Note: Experimental feature!</p>
- <p>Automatic IP negotiation is available since version <code>0.8.1</code>.</p>
- <p>DHCP can be enabled with <code>--dhcp</code> and <code>--address</code> can be omitted. If an IP is specfied with <code>--address</code> it will be the default IP.</p>
- <h2 id="ipv6-experimental">IPv6 (experimental)</h2>
- <p>Node: Very experimental feature! Highly unstable!</p>
- <p>Very provisional support for IPv6 is available using static addresses only. Currently only one address is supported per interface, dual stack is not available.
- For more information, checkout <a href="https://github.com/mudler/edgevpn/issues/15">issue #15</a></p>
- <p>IPv6 can be enabled with <code>--address fd:ed4e::&lt;IP&gt;/64</code> and <code>--mtu &gt;1280</code>.</p>
- </description>
- </item>
-
- <item>
- <title>Docs: GUI</title>
- <link>https://mudler.github.io/edgevpn/docs/getting-started/gui/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://mudler.github.io/edgevpn/docs/getting-started/gui/</guid>
- <description>
-
-
- <p>A Desktop GUI application (alpha) for Linux is available <a href="https://github.com/mudler/edgevpn-gui">here</a>.</p>
- <p>Note the GUI doesn&rsquo;t require the CLI to be installed. It will automatically prompt to download the latest available version, and offer a version management option.</p>
- <table>
- <thead>
- <tr>
- <th style="text-align:center">Dashboard</th>
- <th style="text-align:center">Connections index</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td style="text-align:center"><img src="https://user-images.githubusercontent.com/2420543/147854909-a223a7c1-5caa-4e90-b0ac-0ae04dc0949d.png" alt="edgevpn-gui-2"></td>
- <td style="text-align:center"><img src="https://user-images.githubusercontent.com/2420543/147854904-09d96991-8752-421a-a301-8f0bdd9d5542.png" alt="edgevpn-3"></td>
- </tr>
- <tr>
- <td style="text-align:center"><img src="https://user-images.githubusercontent.com/2420543/147854907-1e4a4715-3181-4dc2-8bc0-d052b3bf46d3.png" alt="edgevpn-gui"></td>
- <td></td>
- </tr>
- </tbody>
- </table>
- </description>
- </item>
-
- <item>
- <title>Docs: Tunnel connections</title>
- <link>https://mudler.github.io/edgevpn/docs/concepts/overview/services/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://mudler.github.io/edgevpn/docs/concepts/overview/services/</guid>
- <description>
-
-
- <h2 id="forwarding-a-local-connection">Forwarding a local connection</h2>
- <p>EdgeVPN can also be used to expose local(or remote) services without establishing a VPN and allocating a local tun/tap device, similarly to <code>ngrok</code>.</p>
- <h3 id="exposing-a-service">Exposing a service</h3>
- <p>If you are used to how Local SSH forwarding works (e.g. <code>ssh -L 9090:something:remote &lt;my_node&gt;</code>), EdgeVPN takes a similar approach.</p>
- <p>A Service is a generalized TCP service running in a host (also outside the network). For example, let&rsquo;s say that we want to expose a SSH server inside a LAN.</p>
- <p>To expose a service to your EdgeVPN network then:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn service-add <span style="color:#4e9a06">&#34;MyCoolService&#34;</span> <span style="color:#4e9a06">&#34;127.0.0.1:22&#34;</span>
- </code></pre></div><p>To reach the service, EdgeVPN will setup a local port and bind to it, it will tunnel the traffic to the service over the VPN, for e.g. to bind locally to <code>9090</code>:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn service-connect <span style="color:#4e9a06">&#34;MyCoolService&#34;</span> <span style="color:#4e9a06">&#34;127.0.0.1:9090&#34;</span>
- </code></pre></div><p>with the example above, &lsquo;sshing into <code>9090</code> locally would forward to <code>22</code>.</p>
- </description>
- </item>
-
- <item>
- <title>Docs: WebUI and API</title>
- <link>https://mudler.github.io/edgevpn/docs/getting-started/api/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://mudler.github.io/edgevpn/docs/getting-started/api/</guid>
- <description>
-
-
- <p>The API has a simple webUI embedded to display network informations.</p>
- <p>To access the web interface, run in the console:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn api
- </code></pre></div><p>with either a <code>EDGEVPNCONFIG</code> or <code>EDGEVPNTOKEN</code>.</p>
- <table>
- <thead>
- <tr>
- <th style="text-align:center">Dashboard (Dark mode)</th>
- <th style="text-align:center">Dashboard (Light mode)</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td style="text-align:center"><img src="https://user-images.githubusercontent.com/2420543/163020448-8e9238c1-3b6d-435d-9b25-7729d8779ebd.png" alt="Screenshot 2021-10-31 at 00-12-16 EdgeVPN - Machines index"></td>
- <td style="text-align:center"><img src="https://user-images.githubusercontent.com/2420543/163020460-e18c07d7-8426-4992-aab3-0b2fd90279ae.png" alt="Screenshot 2021-10-31 at 23-03-26 EdgeVPN - Machines index"></td>
- </tr>
- </tbody>
- </table>
- <table>
- <thead>
- <tr>
- <th style="text-align:center">DNS</th>
- <th style="text-align:center">Machine index</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td style="text-align:center"><img src="https://user-images.githubusercontent.com/2420543/163020465-3d481da4-4912-445e-afc0-2614966dcadf.png" alt="Screenshot 2021-10-31 at 23-03-44 EdgeVPN - Services index"></td>
- <td style="text-align:center"><img src="https://user-images.githubusercontent.com/2420543/163020462-7821a622-8c13-4971-8abe-9c5b6b491ae8.png" alt="Screenshot 2021-10-31 at 23-03-59 EdgeVPN - Files index"></td>
- </tr>
- </tbody>
- </table>
- <table>
- <thead>
- <tr>
- <th style="text-align:center">Services</th>
- <th style="text-align:center">Blockchain index</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td style="text-align:center"><img src="https://user-images.githubusercontent.com/2420543/163021285-3c5a980d-2562-4c10-b266-7e99f19d8a87.png" alt="Screenshot 2021-10-31 at 23-04-12 EdgeVPN - Users connected"></td>
- <td style="text-align:center"><img src="https://user-images.githubusercontent.com/2420543/163020457-77ef6e50-40a6-4e3b-83c4-a81db729bd7d.png" alt="Screenshot 2021-10-31 at 23-04-20 EdgeVPN - Blockchain index"></td>
- </tr>
- </tbody>
- </table>
- <p>In API mode, EdgeVPN will connect to the network without routing any packet, and without setting up a VPN interface.</p>
- <p>By default edgevpn will listen on the <code>8080</code> port. See <code>edgevpn api --help</code> for the available options</p>
- <p>API can also be started together with the vpn with <code>--api</code>.</p>
- <h2 id="api-endpoints">API endpoints</h2>
- <h3 id="get">GET</h3>
- <h4 id="apiusers"><code>/api/users</code></h4>
- <p>Returns the users connected to services in the blockchain</p>
- <h4 id="apiservices"><code>/api/services</code></h4>
- <p>Returns the services running in the blockchain</p>
- <h4 id="apidns"><code>/api/dns</code></h4>
- <p>Returns the domains registered in the blockchain</p>
- <h4 id="apimachines"><code>/api/machines</code></h4>
- <p>Returns the machines connected to the VPN</p>
- <h4 id="apiblockchain"><code>/api/blockchain</code></h4>
- <p>Returns the latest available blockchain</p>
- <h4 id="apiledger"><code>/api/ledger</code></h4>
- <p>Returns the current data in the ledger</p>
- <h4 id="apiledgerbucket"><code>/api/ledger/:bucket</code></h4>
- <p>Returns the current data in the ledger inside the <code>:bucket</code></p>
- <h4 id="apiledgerbucketkey"><code>/api/ledger/:bucket/:key</code></h4>
- <p>Returns the current data in the ledger inside the <code>:bucket</code> at given <code>:key</code></p>
- <h4 id="apipeergate"><code>/api/peergate</code></h4>
- <p>Returns peergater status</p>
- <h3 id="put">PUT</h3>
- <h4 id="apiledgerbucketkeyvalue"><code>/api/ledger/:bucket/:key/:value</code></h4>
- <p>Puts <code>:value</code> in the ledger inside the <code>:bucket</code> at given <code>:key</code></p>
- <h4 id="apipeergatestate"><code>/api/peergate/:state</code></h4>
- <p>Enables/disables peergating:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#8f5902;font-style:italic"># enable</span>
- $ curl -X PUT <span style="color:#4e9a06">&#39;http://localhost:8080/api/peergate/enable&#39;</span>
- <span style="color:#8f5902;font-style:italic"># disable</span>
- $ curl -X PUT <span style="color:#4e9a06">&#39;http://localhost:8080/api/peergate/disable&#39;</span>
- </code></pre></div><h3 id="post">POST</h3>
- <h4 id="apidns-1"><code>/api/dns</code></h4>
- <p>The endpoint accept a JSON payload of the following form:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-json" data-lang="json"><span style="color:#000;font-weight:bold">{</span> <span style="color:#204a87;font-weight:bold">&#34;Regex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;&lt;regex&gt;&#34;</span><span style="color:#000;font-weight:bold">,</span>
- <span style="color:#204a87;font-weight:bold">&#34;Records&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
- <span style="color:#204a87;font-weight:bold">&#34;A&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2.2.2.2&#34;</span><span style="color:#000;font-weight:bold">,</span>
- <span style="color:#204a87;font-weight:bold">&#34;AAAA&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;...&#34;</span><span style="color:#000;font-weight:bold">,</span>
- <span style="color:#000;font-weight:bold">},</span>
- <span style="color:#000;font-weight:bold">}</span>
- </code></pre></div><p>Takes a regex and a set of records and registers them to the blockchain.</p>
- <p>The DNS table in the ledger will be used by the embedded DNS server to handle requests locally.</p>
- <p>To create a new entry, for example:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ curl -X POST http://localhost:8080/api/dns --header <span style="color:#4e9a06">&#34;Content-Type: application/json&#34;</span> -d <span style="color:#4e9a06">&#39;{ &#34;Regex&#34;: &#34;foo.bar&#34;, &#34;Records&#34;: { &#34;A&#34;: &#34;2.2.2.2&#34; } }&#39;</span>
- </code></pre></div><h3 id="delete">DELETE</h3>
- <h4 id="apiledgerbucketkey-1"><code>/api/ledger/:bucket/:key</code></h4>
- <p>Deletes the <code>:key</code> into <code>:bucket</code> inside the ledger</p>
- <h4 id="apiledgerbucket-1"><code>/api/ledger/:bucket</code></h4>
- <p>Deletes the <code>:bucket</code> from the ledger</p>
- <h2 id="binding-to-a-socket">Binding to a socket</h2>
- <p>The API can also be bound to a socket, for instance:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn api --listen <span style="color:#4e9a06">&#34;unix://&lt;path/to/socket&gt;&#34;</span>
- </code></pre></div><p>or as well while running the vpn:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn api --api-listen <span style="color:#4e9a06">&#34;unix://&lt;path/to/socket&gt;&#34;</span>
- </code></pre></div>
- </description>
- </item>
-
- <item>
- <title>Docs: DNS</title>
- <link>https://mudler.github.io/edgevpn/docs/concepts/overview/dns/</link>
- <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>
-
- <guid>https://mudler.github.io/edgevpn/docs/concepts/overview/dns/</guid>
- <description>
-
-
-
- <div class="pageinfo pageinfo-warning">
- <p>Experimental feature!</p>
- </div>
- <h2 id="dns-server">DNS Server</h2>
- <p>A DNS Server is available but disabled by default.</p>
- <p>The DNS server will resolve DNS queries using the blockchain as a record and will forward unknown domains by default.</p>
- <p>It can be enabled by specifying a listening address with <code>--dns</code>. For example, to bind to default <code>53</code> port locally, run in the console:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">edgevpn --dns <span style="color:#4e9a06">&#34;127.0.0.1:53&#34;</span>
- </code></pre></div><p>To turn off dns forwarding, specify <code>--dns-forwarder=false</code>. Optionally a list of DNS servers can be specified multiple times with <code>--dns-forward-server</code>.</p>
- <p>The dns subcommand has several options:</p>
- <pre tabindex="0"><code> --dns value DNS listening address. Empty to disable dns server [$DNSADDRESS]
- --dns-forwarder Enables dns forwarding [$DNSFORWARD]
- --dns-cache-size value DNS LRU cache size (default: 200) [$DNSCACHESIZE]
- --dns-forward-server value List of DNS forward server (default: &quot;8.8.8.8:53&quot;, &quot;1.1.1.1:53&quot;) [$DNSFORWARDSERVER]
- </code></pre><p>Nodes of the VPN can start a local DNS server which will resolve the routes stored in the chain.</p>
- <p>For example, to add DNS records, use the API as such:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ curl -X POST http://localhost:8080/api/dns --header <span style="color:#4e9a06">&#34;Content-Type: application/json&#34;</span> -d <span style="color:#4e9a06">&#39;{ &#34;Regex&#34;: &#34;foo.bar&#34;, &#34;Records&#34;: { &#34;A&#34;: &#34;2.2.2.2&#34; } }&#39;</span>
- </code></pre></div><p>The <code>/api/dns</code> routes accepts <code>POST</code> requests as <code>JSON</code> of the following form:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-json" data-lang="json"><span style="color:#000;font-weight:bold">{</span> <span style="color:#204a87;font-weight:bold">&#34;Regex&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;&lt;regex&gt;&#34;</span><span style="color:#000;font-weight:bold">,</span>
- <span style="color:#204a87;font-weight:bold">&#34;Records&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#000;font-weight:bold">{</span>
- <span style="color:#204a87;font-weight:bold">&#34;A&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;2.2.2.2&#34;</span><span style="color:#000;font-weight:bold">,</span>
- <span style="color:#204a87;font-weight:bold">&#34;AAAA&#34;</span><span style="color:#000;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;...&#34;</span><span style="color:#000;font-weight:bold">,</span>
- <span style="color:#000;font-weight:bold">},</span>
- <span style="color:#000;font-weight:bold">}</span>
- </code></pre></div><p>Note, <code>Regex</code> accepts regexes which will match the DNS requests received and resolved to the specified entries.</p>
- </description>
- </item>
-
- <item>
- <title>Docs: Sending and receiving files</title>
- <link>https://mudler.github.io/edgevpn/docs/concepts/overview/files/</link>
- <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>
-
- <guid>https://mudler.github.io/edgevpn/docs/concepts/overview/files/</guid>
- <description>
-
-
- <h2 id="sending-and-receiving-files">Sending and receiving files</h2>
- <p>EdgeVPN can be used to send and receive files between hosts via p2p with the <code>file-send</code> and <code>file-receive</code> subcommand.</p>
- <p>Sending and receiving files, as services, don&rsquo;t establish a VPN connection.</p>
- <h3 id="sending">Sending</h3>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn file-send --name unique-id --path /src/path
- </code></pre></div><h3 id="receiving">Receiving</h3>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn file-receive --name unique-id --path /dst/path
- </code></pre></div>
- </description>
- </item>
-
- <item>
- <title>Docs: Peerguardian</title>
- <link>https://mudler.github.io/edgevpn/docs/concepts/overview/peerguardian/</link>
- <pubDate>Wed, 05 Jan 2022 00:00:00 +0000</pubDate>
-
- <guid>https://mudler.github.io/edgevpn/docs/concepts/overview/peerguardian/</guid>
- <description>
-
-
-
- <div class="pageinfo pageinfo-warning">
- <p>Experimental feature!</p>
- </div>
- <h2 id="peerguardian">Peerguardian</h2>
- <p>PeerGuardian is a mechanism to prevent unauthorized access to the network if tokens are leaked or either revoke network access.</p>
- <p>In order to enable it, start edgevpn nodes adding the <code>--peerguradian</code> flag.</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">edgevpn --peerguardian
- </code></pre></div><p>To turn on peer gating, specify also <code>--peergate</code>.</p>
- <p>Peerguardian and peergating has several options:</p>
- <pre tabindex="0"><code> --peerguard Enable peerguard. (Experimental) [$PEERGUARD]
- --peergate Enable peergating. (Experimental) [$PEERGATE]
- --peergate-autoclean Enable peergating autoclean. (Experimental) [$PEERGATE_AUTOCLEAN]
- --peergate-relaxed Enable peergating relaxation. (Experimental) [$PEERGATE_RELAXED]
- --peergate-auth value Peergate auth [$PEERGATE_AUTH]
- --peergate-interval value Peergater interval time (default: 120) [$EDGEVPNPEERGATEINTERVAL]
- </code></pre><p>When the PeerGuardian and Peergater are enabled, a VPN node will only accepts blocks from authorized nodes.</p>
- <p>Peerguardian is extensible to support different mechanisms of authentication, we will see below specific implementations.</p>
- <h2 id="ecdsa-auth">ECDSA auth</h2>
- <p>The ECDSA authentication mechanism is used to verify peers in the blockchain using ECDSA keys.</p>
- <p>To generate a new ECDSA keypair use <code>edgevpn peergater ecdsa-genkey</code>:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn peergater ecdsa-genkey
- Private key: <span style="color:#000">LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1JSGNBZ0VCQkVJQkhUZnRSTVZSRmlvaWZrdllhZEE2NXVRQXlSZTJSZHM0MW1UTGZlNlRIT3FBTTdkZW9sak0KZXVPbTk2V0hacEpzNlJiVU1tL3BCWnZZcElSZ0UwZDJjdUdnQndZRks0RUVBQ09oZ1lrRGdZWUFCQUdVWStMNQptUzcvVWVoSjg0b3JieGo3ZmZUMHBYZ09MSzNZWEZLMWVrSTlEWnR6YnZWOUdwMHl6OTB3aVZxajdpMDFVRnhVCnRKbU1lWURIRzBTQkNuVWpDZ0FGT3ByUURpTXBFR2xYTmZ4LzIvdEVySDIzZDNwSytraFdJbUIza01QL2tRNEIKZzJmYnk2cXJpY1dHd3B4TXBXNWxKZVZXUGlkeWJmMSs0cVhPTWdQbmRnPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo</span><span style="color:#ce5c00;font-weight:bold">=</span>
- Public key: <span style="color:#000">LS0tLS1CRUdJTiBFQyBQVUJMSUMgS0VZLS0tLS0KTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFCbEdQaStaa3UvMUhvU2ZPS0syOFkrMzMwOUtWNApEaXl0MkZ4U3RYcENQUTJiYzI3MWZScWRNcy9kTUlsYW8rNHROVkJjVkxTWmpIbUF4eHRFZ1FwMUl3b0FCVHFhCjBBNGpLUkJwVnpYOGY5djdSS3g5dDNkNlN2cElWaUpnZDVERC81RU9BWU5uMjh1cXE0bkZoc0tjVEtWdVpTWGwKVmo0bmNtMzlmdUtsempJRDUzWT0KLS0tLS1FTkQgRUMgUFVCTElDIEtFWS0tLS0tCg</span><span style="color:#ce5c00;font-weight:bold">==</span>
- </code></pre></div><p>For example, to add a ECDSA public key, use the API as such from a node which is already trusted by PeerGuardian:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ curl -X PUT <span style="color:#4e9a06">&#39;http://localhost:8080/api/ledger/trustzoneAuth/ecdsa_1/LS0tLS1CRUdJTiBFQyBQVUJMSUMgS0VZLS0tLS0KTUlHYk1CQUdCeXFHU000OUFnRUdCU3VCQkFBakE0R0dBQVFBL09TTjhsUU9Wa3FHOHNHbGJiellWamZkdVVvUAplMEpsWUVzOFAyU3o1TDlzVUtDYi9kQWkrVFVONXU0ZVk2REpGeU50dWZjK2p0THNVTTlPb0xXVnBXb0E0eEVDCk9VdDFmRVNaRzUxckc4MEdFVjBuQTlBRGFvOW1XK3p4dmkvQnd0ZFVvSTNjTDB0VTdlUGEvSGM4Z1FLMmVOdE0KeDdBSmNYcWpPNXZXWGxZZ2NkOD0KLS0tLS1FTkQgRUMgUFVCTElDIEtFWS0tLS0tCg==&#39;</span>
- </code></pre></div><p>Now the private key can be used while starting new nodes:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#000">PEERGATE_AUTH</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#34;{ &#39;ecdsa&#39; : { &#39;private_key&#39;: &#39;LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1JSGNBZ0VCQkVJQkhUZnRSTVZSRmlvaWZrdllhZEE2NXVRQXlSZTJSZHM0MW1UTGZlNlRIT3FBTTdkZW9sak0KZXVPbTk2V0hacEpzNlJiVU1tL3BCWnZZcElSZ0UwZDJjdUdnQndZRks0RUVBQ09oZ1lrRGdZWUFCQUdVWStMNQptUzcvVWVoSjg0b3JieGo3ZmZUMHBYZ09MSzNZWEZLMWVrSTlEWnR6YnZWOUdwMHl6OTB3aVZxajdpMDFVRnhVCnRKbU1lWURIRzBTQkNuVWpDZ0FGT3ByUURpTXBFR2xYTmZ4LzIvdEVySDIzZDNwSytraFdJbUIza01QL2tRNEIKZzJmYnk2cXJpY1dHd3B4TXBXNWxKZVZXUGlkeWJmMSs0cVhPTWdQbmRnPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=&#39; } }&#34;</span>
- $ edgevpn --peerguardian --peergate
- </code></pre></div><h2 id="enablingdisabling-peergating-in-runtime">Enabling/Disabling peergating in runtime</h2>
- <p>Peergating can be disabled in runtime by leveraging the api:</p>
- <h3 id="query-status">Query status</h3>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ curl -X GET <span style="color:#4e9a06">&#39;http://localhost:8080/api/peergate&#39;</span>
- </code></pre></div><h3 id="enable-peergating">Enable peergating</h3>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ curl -X PUT <span style="color:#4e9a06">&#39;http://localhost:8080/api/peergate/enable&#39;</span>
- </code></pre></div><h3 id="disable-peergating">Disable peergating</h3>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ curl -X PUT <span style="color:#4e9a06">&#39;http://localhost:8080/api/peergate/disable&#39;</span>
- </code></pre></div><h2 id="starting-a-new-network">Starting a new network</h2>
- <p>To init a new Trusted network, start nodes with <code>--peergate-relaxed</code> and add the neccessary auth keys:</p>
- <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">$ edgevpn --peerguardian --peergate --peergate-relaxed
- $ curl -X PUT <span style="color:#4e9a06">&#39;http://localhost:8080/api/ledger/trustzoneAuth/keytype_1/XXX&#39;</span>
- </code></pre></div>
- <div class="alert alert-primary" role="alert">
- <h4 class="alert-heading">Note</h4>
- It is strongly suggested to use a local store for the blockchain with PeerGuardian. In this way nodes persist locally auth keys and you can avoid starting nodes with `&ndash;peergate-relaxed'
- </div>
- </description>
- </item>
-
- <item>
- <title>Docs: Contributing</title>
- <link>https://mudler.github.io/edgevpn/docs/contribution-guidelines/</link>
- <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
-
- <guid>https://mudler.github.io/edgevpn/docs/contribution-guidelines/</guid>
- <description>
-
-
- <h2 id="contributing-to-edgevpn">Contributing to EdgeVPN</h2>
- <p>Contribution guidelines for the EdgeVPN project are on the <a href="https://github.com/mudler/edgevpn/blob/master/CONTRIBUTING.md">Github repository</a>. Here you can find some heads up for contributing to the documentation website.</p>
- <h2 id="contributing-to-the-docs-website">Contributing to the Docs website</h2>
- <h3 id="we-develop-with-github">We Develop with Github</h3>
- <p>We use <a href="https://github.com/mudler/edgevpn">github to host code</a>, to track issues and feature requests, as well as accept pull requests.</p>
- <p>We use <a href="https://gohugo.io/">Hugo</a> to format and generate our website, the
- <a href="https://github.com/google/docsy">Docsy</a> theme for styling and site structure,
- and Github Actions to manage the deployment of the site.
- Hugo is an open-source static site generator that provides us with templates,
- content organisation in a standard directory structure, and a website generation
- engine. You write the pages in Markdown (or HTML if you want), and Hugo wraps them up into a website.</p>
- <p>All submissions, including submissions by project members, require review. We
- use GitHub pull requests for this purpose. Consult
- <a href="https://help.github.com/articles/about-pull-requests/">GitHub Help</a> for more
- information on using pull requests.</p>
- <h3 id="any-contributions-you-make-will-be-under-the-software-license-of-the-repository">Any contributions you make will be under the Software License of the repository</h3>
- <p>In short, when you submit code changes, your submissions are understood to be under the same License that covers the project. Feel free to contact the maintainers if that&rsquo;s a concern.</p>
- <h3 id="updating-a-single-page">Updating a single page</h3>
- <p>If you&rsquo;ve just spotted something you&rsquo;d like to change while using the docs, Docsy has a shortcut for you:</p>
- <ol>
- <li>Click <strong>Edit this page</strong> in the top right hand corner of the page you want to modify.</li>
- <li>If you don&rsquo;t already have an up to date fork of the project repo, you are prompted to get one - click <strong>Fork this repository and propose changes</strong> or <strong>Update your Fork</strong> to get an up to date version of the project to edit. The appropriate page in your fork is displayed in edit mode.</li>
- </ol>
- <h3 id="quick-start-with-a-local-checkout">Quick start with a local checkout</h3>
- <p>Here&rsquo;s a quick guide to updating the docs with a git local checkout. It assumes you&rsquo;re familiar with the
- GitHub workflow and you&rsquo;re happy to use the automated preview of your doc
- updates:</p>
- <ol>
- <li>Fork the <a href="https://github.com/mudler/edgevpn">the repo</a> on GitHub.</li>
- <li>Make your changes, if are related to docs
- to see the preview run <code>make serve</code> from the <code>docs</code> dir, then browse to <a href="http://localhost:1313">localhost:1313</a></li>
- <li>If you&rsquo;re not yet ready for a review, add &ldquo;WIP&rdquo; to the PR name to indicate
- it&rsquo;s a work in progress.</li>
- <li>Continue updating your doc and pushing your changes until you&rsquo;re happy with
- the content.</li>
- <li>When you&rsquo;re ready for a review, add a comment to the PR, and remove any
- &ldquo;WIP&rdquo; markers.</li>
- <li>When you are satisfied send a pull request (PR).</li>
- </ol>
- <h3 id="license">License</h3>
- <p>By contributing, you agree that your contributions will be licensed under the project Licenses.</p>
- </description>
- </item>
-
- </channel>
- </rss>
|