Yggdrasil is a decentralized IPv6 network that offers an additional layer of privacy for peer-to-peer connections.
According to the original README:
Yggdrasil is an early-stage implementation of a fully end-to-end encrypted IPv6 network. It is lightweight, self-arranging, supported on multiple platforms and allows pretty much any IPv6-capable application to communicate securely with other Yggdrasil nodes. Yggdrasil does not require you to have IPv6 Internet connectivity - it also works over IPv4.
Usage purposes
Yggdrasil can be useful in situations when you want to:
- hide your real IP address from other (twister) peers;
- bypass ISPs or global firewalls in censored areas;
- build a custom route to the VPN, I2P or Tor proxy;
- remote access to your home node over NAT;
- create a permanent IPv6 address in the
0200::/7
range (based on the private key) to set up a remote peer or firewall for whitelisting; - run a public peer (accessible to other twister nodes connected to the Yggdrasil network) without needing a dedicated Internet IP address and port forwarding.
important
- Unlike Tor, Yggdrasil is not designed for anonymization; however, it can enhance your routing capabilities when combined with those technologies, but only when configured outside of the twister context!
- The
twister-core
software does not provide any Yggdrasil features by itself, only IPv6 support. This means that using the Yggdrasil network with twister does not ensure that you are connectable only from this network; the application's behavior in this case requires additional audit. - When installing Yggdrasil, make sure your firewall is configured properly, as any service launched on
0.0.0.0
will be visible over NAT, similar to how it would be on the local network. To check which services are listening for external connections, run the commandnetstat -tulpn | grep LISTEN
IPv6 support
If you are using twister-core
from the twisterarmy branch, no additional steps are needed, as it already has the IPv6 enabled out of the box.
However, if you are using the twister-core
from the miguelfreitas branch, you must configure it with the option --enable-ipv6
(see ./configure --help
for details), then rebuild twisterd
.
Usage examples
Connect all peers
By launching twisterd
without additional arguments, you will be able to connect to all network interfaces, including the Yggdrasil one.
If you don't see any connections from the 0200::/7
range yet, visit the community website and find any peer from the list. After that, copy its [host]:port
into the Force connection to peer
field on the web UI Network page.
tip
If you want to remain connectable to all networks while announcing your peer address as Yggdrasil, run twisterd
with the -externalip
argument:
./twisterd -externalip=[HOST]
- to get your current Yggdrasil
[HOST]
, run:sudo yggdrasilctl getself
Connect specified peer only
Run twisterd
with -connect=[HOST]:PORT
argument, where the HOST:PORT
is the target host you want to connect to:
./twisterd -connect=[300:17a8:aabf:108f::33]:28333
note
This option disables finding peers using DNS lookup (-dnsseed
argument will be ignored)
Connect some network only
By default, twisterd
accepts connections from all available network interfaces. This option can be helpful in situations where you are using some proxy that does not support certain address families, such as how yggstack does not support IPv4.
To use only the IPv6 network family, launch twisterd
with the -onlynet=IPv6
flag:
./twisterd -onlynet=IPv6
IPv4
|IPv6
|Tor
- see also./twisterd --help
Connect with proxy
yggstack
yggstack is a proxy server for Yggdrasil that allows you to use this network without installing the full node. It is especially useful in cases where you don't want to grant root access to the Yggdrasil service, as such access is required to operate the network configuration during the startup of a new interface.
According to the README:
Yggstack fills the gap by providing SOCKS5 proxy server and TCP port forwarder functionality similar to TOR router. It also can serve as a standalone network node to connect network segments.
How to use
First, run yggstack
with the following arguments (replace the values with your own):
./yggstack -useconffile path/to/yggdrasil.conf -socks 127.0.0.1:1080
Now start twisterd
with at least the following setup:
./twisterd -proxy=127.0.0.1:1080 -socks=5 -onlynet=IPv6
- the
-socks=5
argument is not necessary, as version5
should be the default (just make sure it is) - it is important to run connection with
-onlynet=IPv6
becauseyggstack
operates with Yggdrasil's IPv6 addresses, whiletwisterd
expects all networks by default (see #16 and onlynet argument usage for details)
Bind on given address
The bind
argument may be useful in cases where you have more than one IPv4 or IPv6 interface, such as when using Yggdrasil alongside an Internet IPv6 connection, or when Yggdrasil is configured with a subnet mask (e.g., [300:17a8:aabf:108f::33]
), and you want to use only that specific interface to launch twisterd
and listen connections on it.
This is also relevant if you are running multiple twisterd
nodes on the same host and want to bind a static address for a specific RPC API configuration.
./twisterd -bind=[HOST]:PORT
- to get your current Yggdrasil
[HOST]
, run:sudo yggdrasilctl getself
note
The bind
option does not decrease your connectivity level; see onlynet option for that purpose!
Firewall examples
Some tips for tuning your iptables
Restrict 0200::/7 range
ufw allow from 0200::/7 to any port 28333
- where
28333
is the port you want to allow for Yggdrasil peers only
Public peers
The twister public peers displayed on the Network page are manually managed to show only those that are actually online.
The following list includes all known peers from that source. Since the Yggdrasil IP address is generated by its owner's private key, it will never expire, and these addresses may come online again at any time. This could be useful when all Internet peers are offline for some reason.
Host | Port, TCP | Port, UDP+TCP | Online |
---|---|---|---|
[300:17a8:aabf:108f::33] | 28333 | 29333 | 2025 |
[301:23b4:991a:634d::33] | 28333 | 29333 | 2023 |
[301:5eb5:f061:678e::33] | 28333 | 29333 | 2023 |
Related software
Some other Yggdrasil-based software you might want to try:
- yggstack - access Yggdrasil through SOCKS proxy without exposing your interface to the network;
- yggmail - end-to-end encrypted email for the mesh networking age;
- Alfis DNS - a peer-to-peer alternative to centralized DNS providers, with native Yggdrasil support, that is also useful for launching a free, independent DNS seeder for the twister network.