This commit is contained in:
2024-02-04 09:30:42 +03:00
parent 7772dba774
commit c27f202368
56 changed files with 710 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
# install VM
Lets now launch a VM on our Zero-OS environment
See (little bit outdated tutorial) https://manual.grid.tf/weblets/weblets_vm.html
You will need an SSH key before deploying see
- [https://manual.grid.tf/getstarted/ssh_guide/ssh_openssh.html](https://manual.grid.tf/getstarted/ssh_guide/ssh_openssh.html)
## make sure your SSH key is in your account
![](img/sshkey.png)
see [https://dashboard.bknd1.ninja.tf/#/deploy/sshkey](https://dashboard.bknd1.ninja.tf/#/deploy/sshkey)
Get your ssh key into your account, it will be used when deploying a VM.
## install VM
![](img/install_vm.png)
[https://dashboard.bknd1.ninja.tf/#/deploy/vms](https://dashboard.bknd1.ninja.tf/#/deploy/vms)
select micro vm
![](img/vm_deply_param.png)
- note: we chose 2 virtual cores, 4 GB mem
- note: we did manual selection of 3node, in this case we used the one we just installed 6323
we can immediately see how much resources available
the network is automatically on planetary network.
> click on deploy
This typically will take couple of minutes first time.
![](img/myvm2.png)
after install you will see this which means VM was succesfully deployed.
The planetary network is 300:61cd:2f3d:a1b4:368f:5eed:3651:ff1c see the result.

View File

@@ -0,0 +1,138 @@
# Planetary network
In this example we will use the planetary network to connect to deployed workloads, planetary network is based on yggdrasil and is the pre-decessor of the new Mycelium which will be part of our TFGrid starting with TFGrid 3.13 (end Q1 2024).
see [https://manual.grid.tf/getstarted/planetarynetwork.html](https://manual.grid.tf/getstarted/planetarynetwork.html)
install yggdrassil [https://yggdrasil-network.github.io/installation.html](https://yggdrasil-network.github.io/installation.html) on your OS
## osx example
```
sudo yggdrasil -useconf /etc/yggdrasil.conf -loglevel debug
```
## example configuration
see /etc/yggdrasil.conf
notice the list of peers as has been added to support the ThreeFold network, best to add these:
```ts
{
# Your private key. DO NOT share this with anyone!
PrivateKey: 978dbff757bb8d2d24af474b40130a57c3.....
# List of connection strings for outbound peer connections in URI format,
# e.g. tls://a.b.c.d:e or socks://a.b.c.d:e/f.g.h.i:j. These connections
# will obey the operating system routing table, therefore you should
# use this section when you may connect via different interfaces.
Peers: [
tcp://gent01.grid.tf:9943
tcp://gent02.grid.tf:9943
tcp://gent03.grid.tf:9943
tcp://gent04.grid.tf:9943
tcp://gent01.test.grid.tf:9943
tcp://gent02.test.grid.tf:9943
tcp://gent01.dev.grid.tf:9943
tcp://gent02.dev.grid.tf:9943
tcp://gw291.vienna1.greenedgecloud.com:9943
tcp://gw293.vienna1.greenedgecloud.com:9943
tcp://gw294.vienna1.greenedgecloud.com:9943
tcp://gw297.vienna1.greenedgecloud.com:9943
tcp://gw298.vienna1.greenedgecloud.com:9943
tcp://gw299.vienna2.greenedgecloud.com:9943
tcp://gw300.vienna2.greenedgecloud.com:9943
tcp://gw304.vienna2.greenedgecloud.com:9943
tcp://gw306.vienna2.greenedgecloud.com:9943
tcp://gw307.vienna2.greenedgecloud.com:9943
tcp://gw309.vienna2.greenedgecloud.com:9943
tcp://gw313.vienna2.greenedgecloud.com:9943
tcp://gw324.salzburg1.greenedgecloud.com:9943
tcp://gw326.salzburg1.greenedgecloud.com:9943
tcp://gw327.salzburg1.greenedgecloud.com:9943
tcp://gw328.salzburg1.greenedgecloud.com:9943
tcp://gw330.salzburg1.greenedgecloud.com:9943
tcp://gw331.salzburg1.greenedgecloud.com:9943
tcp://gw333.salzburg1.greenedgecloud.com:9943
tcp://gw422.vienna2.greenedgecloud.com:9943
tcp://gw423.vienna2.greenedgecloud.com:9943
tcp://gw424.vienna2.greenedgecloud.com:9943
tcp://gw425.vienna2.greenedgecloud.com:9943
]
# List of connection strings for outbound peer connections in URI format,
# arranged by source interface, e.g. { "eth0": [ "tls://a.b.c.d:e" ] }.
# Note that SOCKS peerings will NOT be affected by this option and should
# go in the "Peers" section instead.
InterfacePeers: {}
# Listen addresses for incoming connections. You will need to add
# listeners in order to accept incoming peerings from non-local nodes.
# Multicast peer discovery will work regardless of any listeners set
# here. Each listener should be specified in URI format as above, e.g.
# tls://0.0.0.0:0 or tls://[::]:0 to listen on all interfaces.
Listen: []
# Configuration for which interfaces multicast peer discovery should be
# enabled on. Each entry in the list should be a json object which may
# contain Regex, Beacon, Listen, and Port. Regex is a regular expression
# which is matched against an interface name, and interfaces use the
# first configuration that they match gainst. Beacon configures whether
# or not the node should send link-local multicast beacons to advertise
# their presence, while listening for incoming connections on Port.
# Listen controls whether or not the node listens for multicast beacons
# and opens outgoing connections.
MulticastInterfaces: [
{
Regex: en.*
Beacon: true
Listen: true
Port: 0
Priority: 0
Password: ""
}
{
Regex: bridge.*
Beacon: true
Listen: true
Port: 0
Priority: 0
Password: ""
}
]
# List of peer public keys to allow incoming peering connections
# from. If left empty/undefined then all connections will be allowed
# by default. This does not affect outgoing peerings, nor does it
# affect link-local peers discovered via multicast.
AllowedPublicKeys: []
# Local network interface name for TUN adapter, or "auto" to select
# an interface automatically, or "none" to run without TUN.
IfName: auto
# Maximum Transmission Unit (MTU) size for your local TUN interface.
# Default is the largest supported size for your platform. The lowest
# possible value is 1280.
IfMTU: 65535
# By default, nodeinfo contains some defaults including the platform,
# architecture and Yggdrasil version. These can help when surveying
# the network and diagnosing network routing problems. Enabling
# nodeinfo privacy prevents this, so that only items specified in
# "NodeInfo" are sent back if specified.
NodeInfoPrivacy: false
# Optional node info. This must be a { "key": "value", ... } map
# or set as null. This is entirely optional but, if set, is visible
# to the whole network on request.
NodeInfo: {}
}
```

View File

@@ -0,0 +1,43 @@
## Connect
Our planetary network addr is 300:61cd:2f3d:a1b4:368f:5eed:3651:ff1c
You can go to yggdrasil network map to see its working
- [http://[21e:e795:8e82:a9e2:ff48:952d:55f2:f0bb]/](http://[21e:e795:8e82:a9e2:ff48:952d:55f2:f0bb]/)
If you see a map then you know yggdrasil is working.
### Connect to our VM
```bash
ssh root@300:61cd:2f3d:a1b4:368f:5eed:3651:ff1c
```
The ipaddr is the one we got from the install before.
The first login will take 10-30 sec because the SSH components will be downloaded on the fly in the VM thanks to our flist approach.
![](img/ssh_access.png)
it worked we are now to our local vm
lets install some software components
```bash
apt update
apt install nettools-ping
ping 8.8.8.8
```
Now we can see how our VM running the ZOS we installed is able to go outside.
### traffic is local
![](img/pinglocal.png)
less than 4ms clearly this is a local conncection, this is cool this means the planetary network connected me directly from my node to this node, amazing.
we now have a network on top of the Internet, a overlay Internet Network.

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

View File

@@ -0,0 +1,110 @@
{
# Your private key. DO NOT share this with anyone!
PrivateKey: 978dbff757bb8d2d24af474b40130a57c3749001db....
# List of connection strings for outbound peer connections in URI format,
# e.g. tls://a.b.c.d:e or socks://a.b.c.d:e/f.g.h.i:j. These connections
# will obey the operating system routing table, therefore you should
# use this section when you may connect via different interfaces.
Peers: [
tcp://gent01.grid.tf:9943
tcp://gent02.grid.tf:9943
tcp://gent03.grid.tf:9943
tcp://gent04.grid.tf:9943
tcp://gent01.test.grid.tf:9943
tcp://gent02.test.grid.tf:9943
tcp://gent01.dev.grid.tf:9943
tcp://gent02.dev.grid.tf:9943
tcp://gw291.vienna1.greenedgecloud.com:9943
tcp://gw293.vienna1.greenedgecloud.com:9943
tcp://gw294.vienna1.greenedgecloud.com:9943
tcp://gw297.vienna1.greenedgecloud.com:9943
tcp://gw298.vienna1.greenedgecloud.com:9943
tcp://gw299.vienna2.greenedgecloud.com:9943
tcp://gw300.vienna2.greenedgecloud.com:9943
tcp://gw304.vienna2.greenedgecloud.com:9943
tcp://gw306.vienna2.greenedgecloud.com:9943
tcp://gw307.vienna2.greenedgecloud.com:9943
tcp://gw309.vienna2.greenedgecloud.com:9943
tcp://gw313.vienna2.greenedgecloud.com:9943
tcp://gw324.salzburg1.greenedgecloud.com:9943
tcp://gw326.salzburg1.greenedgecloud.com:9943
tcp://gw327.salzburg1.greenedgecloud.com:9943
tcp://gw328.salzburg1.greenedgecloud.com:9943
tcp://gw330.salzburg1.greenedgecloud.com:9943
tcp://gw331.salzburg1.greenedgecloud.com:9943
tcp://gw333.salzburg1.greenedgecloud.com:9943
tcp://gw422.vienna2.greenedgecloud.com:9943
tcp://gw423.vienna2.greenedgecloud.com:9943
tcp://gw424.vienna2.greenedgecloud.com:9943
tcp://gw425.vienna2.greenedgecloud.com:9943
]
# List of connection strings for outbound peer connections in URI format,
# arranged by source interface, e.g. { "eth0": [ "tls://a.b.c.d:e" ] }.
# Note that SOCKS peerings will NOT be affected by this option and should
# go in the "Peers" section instead.
InterfacePeers: {}
# Listen addresses for incoming connections. You will need to add
# listeners in order to accept incoming peerings from non-local nodes.
# Multicast peer discovery will work regardless of any listeners set
# here. Each listener should be specified in URI format as above, e.g.
# tls://0.0.0.0:0 or tls://[::]:0 to listen on all interfaces.
Listen: []
# Configuration for which interfaces multicast peer discovery should be
# enabled on. Each entry in the list should be a json object which may
# contain Regex, Beacon, Listen, and Port. Regex is a regular expression
# which is matched against an interface name, and interfaces use the
# first configuration that they match gainst. Beacon configures whether
# or not the node should send link-local multicast beacons to advertise
# their presence, while listening for incoming connections on Port.
# Listen controls whether or not the node listens for multicast beacons
# and opens outgoing connections.
MulticastInterfaces: [
{
Regex: en.*
Beacon: true
Listen: true
Port: 0
Priority: 0
Password: ""
}
{
Regex: bridge.*
Beacon: true
Listen: true
Port: 0
Priority: 0
Password: ""
}
]
# List of peer public keys to allow incoming peering connections
# from. If left empty/undefined then all connections will be allowed
# by default. This does not affect outgoing peerings, nor does it
# affect link-local peers discovered via multicast.
AllowedPublicKeys: []
# Local network interface name for TUN adapter, or "auto" to select
# an interface automatically, or "none" to run without TUN.
IfName: auto
# Maximum Transmission Unit (MTU) size for your local TUN interface.
# Default is the largest supported size for your platform. The lowest
# possible value is 1280.
IfMTU: 65535
# By default, nodeinfo contains some defaults including the platform,
# architecture and Yggdrasil version. These can help when surveying
# the network and diagnosing network routing problems. Enabling
# nodeinfo privacy prevents this, so that only items specified in
# "NodeInfo" are sent back if specified.
NodeInfoPrivacy: false
# Optional node info. This must be a { "key": "value", ... } map
# or set as null. This is entirely optional but, if set, is visible
# to the whole network on request.
NodeInfo: {}
}