How to Wiki Database (change log) http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
5.0 KiB

====== An alternative client Popura ======
Popura is an alternative [[..:yggdrasil]] Network client.
Popura uses the same Yggdrasil's core API internally, but adds some useful and experimental features which the original client lacks.
Popura's features:
* Automatic Internet peering
* Advertising /64 prefix to LAN
* Meshname naming system
* DHT crawling method in Admin API
By default, it works just like the original yggdrasil client, all features must be enabled manually.
Popura adds new command line flags and config file sections to control those features.
Download the most recent version of Popura here https://github.com/popura-network/Popura/releases.
===== Autopeering =====
Popura has a built-in peer list. If there are no Internet peers configured, it picks a single random peer out of ten with least latency.
If a picked peer goes offline, Popura picks another one, so it's effectively "autohealing".
To enable automatic Internet peering, run yggdrasil with -autopeer command line flag.
By default, peer list is compiled from the public-peers repository https://github.com/yggdrasil-network/public-peers/.
===== Router advertisement =====
Popura is able to advertise a /64 prefix to LAN clients for stateless IPv6 address autoconfiguration ([[wp>IPv6#Stateless_address_autoconfiguration_(SLAAC)|SLAAC]]).
While it is generally encouraged that nodes run the software locally, to provide end-to-end cryptographic sessions and participate in routing, this is not always practical. Some network devices will inevitably be unable to run user code, but may still provide IPv6 connectivity. Users may also prefer to avoid running the software on an otherwise compatible system, perhaps to provide guest access or to avoid any overhead to battery powered devices. To that end, it is each node is assigned a /64 prefix in parallel to their address. A node acting as a router may advertise this prefix just as they would any other ordinary IPv6 network.
This may be best illustrated by example. Suppose a node has generated the address: 200:1111:2222:3333:4444:5555:6666:7777. Then the node may also use addresses from the prefix: 300:1111:2222:3333::/64 (note the 200 changed to 300, a separate /8 is used for prefixes, but the rest of the first 64 bits are the same).
This feature currently works on Linux systems. Support for other operating systems might be added later, if there will be a demand for it.
Make sure to enable IPv6 packet forwarding:
''sudo sysctl -w net.ipv6.conf.all.forwarding=1''
An example [[wp>RAdv]] section in Popura's config:
<code> RAdv:
{
Enable: true
Interface: eth0
SetGatewayIP: true
}
</code>
Interface is LAN network interface, for example `wlan0` or `eth0`.
SetGatewayIP option automatically adds an IP address to the //Interface//.
===== Meshname =====
[[https://github.com/zhoreeq/meshname/blob/master/protocol.md|Meshname]] is a universal naming system for all IPv6-based meshnets, including CJDNS and Yggdrasil
Having a naming system is a common requirement for deploying preexisting decentralized applications. I.e., applications for e-mail, XMPP and ActivityPub require domain names for server to server communications.
Self-organized networks like CJDNS and Yggdrasil Network use public-key cryptography for IP address allocation. Every network node owns a globally unique IPv6 address. Binary form of that address can be encoded with base32 notation for deriving a globally unique name space managed by that node.
Since there is no need for a global authority or consensus, such a naming system will reliably work in any network split scenarios.
Meshname implementation in Popura is a local DNS server that can both host and resolve "meshname" domains.
It is recommended to configure meshname as an upstream DNS server for the regular DNS server, like [[wp>dnsmasq]] or [[wp>bind]].
To generate a sample meshname config for your Yggdrasil node, run:
''yggdrasil -meshnameconf $(yggdrasil -useconffile /etc/yggdrasil.conf -address)''
An example meshname section in Popura's config:
<code>
Meshname:
{
Config:
{
aicrxoqgun7siwm42akzfsox7m:
[
aicrxoqgun7siwm42akzfsox7m.ygg AAAA 205:1bba:6a3:7f24:599c:d015:92c9:d7fb
_xmpp-client._tcp.aicrxoqgun7siwm42akzfsox7m.ygg. 86400 IN SRV 5 0 5222 xmpp.aicrxoqgun7siwm42akzfsox7m.ygg.
_xmpp-server._tcp.aicrxoqgun7siwm42akzfsox7m.ygg. 86400 IN SRV 5 0 5269 xmpp.aicrxoqgun7siwm42akzfsox7m.ygg.
xmpp.aicrxoqgun7siwm42akzfsox7m.ygg. AAAA 305:1bba:6a3:7f24::23
]
}
Enable: true
Listen: "[::1]:53535"
}
</code>
An example dnsmasq configuration that uses meshname as an upstream server:
''
port=53
domain-needed
bogus-priv
server=/meshname/::1#53535
server=/ygg/::1#53535
server=8.8.8.8
''
===== DHTCrawl =====
A DHTCrawl method is added to the AdminAPI. It does a recursive DHTPing crawling over all known Yggdrasil nodes and collects their NodeInfo.
To enable DHTCrawl method, run yggdrasil with `-dhtcrawler` command line flag.
====== References ======
Git repository: https://github.com/popura-network/Popura