☄️Nebula V2
Nebula est un outil de réseau superposé évolutif axé sur les performances, la simplicité et la sécurité. Il vous permet de connecter de manière transparente des ordinateurs partout dans le monde. Nebula est portable et fonctionne sous Linux, OSX, Windows, iOS et Android. Nebula intègre un certain nombre de concepts existants tels que le chiffrement, les groupes de sécurité, les certificats, et le tunnel.
Nebula V2
Consultez la page releases pour les téléchargements ou consultez la section Distribution Packages.
- Linux - 64 (nebula-linux-amd64.tar.gz) and 32 bit, arm, and others
- Windows
- MacOS
- Freebsd
Serveur cwwk
Se connecter sur le serveur cwwk Création d’un dossier nebula-v2
1
2
mkdir -p /sharenfs/nebula-v2
cd /sharenfs/nebula-v2
Téléchargement et extraction des binaires nebula : https://github.com/slackhq/nebula/releases/latest
1
2
3
wget https://github.com/slackhq/nebula/releases/download/v1.10.3/nebula-linux-amd64.tar.gz
tar xzvf nebula-linux-amd64.tar.gz
rm nebula-linux-amd64.tar.gz
Autorité Certification (ca.crt)
1
2
# durée 3 ans exprimés en hms (3x365x24) -> -duration 26280h00m00s
./nebula-cert ca -name "Yann Nebula CA V2" -encrypt -duration 26280h00m00s
Vérification
1
./nebula-cert print -json -path ca.crt | jq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[
{
"curve": "CURVE25519",
"details": {
"groups": null,
"isCa": true,
"issuer": "",
"name": "Yann Nebula CA V2",
"networks": null,
"notAfter": "2029-02-08T18:56:50+01:00",
"notBefore": "2026-02-09T18:56:50+01:00",
"unsafeNetworks": null
},
"fingerprint": "68dce...........................................5433557005",
"publicKey": "5b8............................................................32d",
"signature": "c3be4410183c788217e4.................................................2a8a0e",
"version": 2
}
]
Adresse IPV6
RFC4193 IPv6 Generator
Lorsque vous configurez IPv6, vous devrez peut-être configurer votre propre adresse IP locale et non routable Adresses sur votre réseau - similaires aux anciens blocs RFC1918. Adresses RFC-4193 (pas de jeu de mots prévu) ce numéro.
Votre bloc d’adresse IP attribué doit être généré aléatoirement à partir du fc00::/7 bloc. Comme l’IETF n’a pas officialisé fc00::/8, les adresses doivent être attribuées de fd00::/8.
Cela signifie que votre réseau IPv6 résultant ressemblera à: fdxx:xxx:xxx:
et vous aurez
fdxx:xxx:xxx:xxx:0:/64 à travers fdxx:xxxx:xxxx:ffff:/64 comme blocs routables dans votre /48 privé.
Les 40 octets du /48 (xx:xxxx:xxxx) sont censés être générés de manière aléatoire par l’une des nombreuses méthodes suggérées.
Cette page utilise la première méthode suggérée par l’IETF en utilisant l’horodatage actuel plus l’adresse mac, sha1 haché, et les 40 bits inférieurs pour générer votre ULA aléatoire. Par conséquent, si deux organisations ont touché cette page dans la même deuxième, avec la même adresse mac pour générer un ULA, ils pourraient avoir des ULA identiques.
Clés et certificats (hôtes+lighthouse)
Vous pouvez nommer les hôtes comme vous le souhaitez, y compris FQDN. Vous devrez également choisir l’adresse IP nebula pour chaque hôte lors de la génération de son certificat. Dans cet exemple, nous créons un réseau nebula qui utilise le sous-réseau 10.139.110.x/24 et attribuera des adresses IP à chaque hôte depuis ce sous-réseau. Cet exemple démontre également les groupes de nébuleuses, qui peuvent ensuite être utilisés pour définir les règles de circulation dans un réseau de nébuleuses.
Votre réseau IPv6 privé est fda3:4291:71b9::/48 vous donnant accès aux /64s suivants fda3:4291:71b9:0::/64 à travers la fda3:4291:71b9:ffff::/64
Ajouter IPv6 tout en gardant IPv4 (double stack)
1
./nebula-cert sign -ca-crt ca.crt -ca-key ca.key -duration 26232h00m00s -name "vps-5351f610-lighthouse" -networks "10.139.110.1/24,fda3:4291:71b9:2f0a::1/64"
info: Sans passer un -duration XXhXXmXXsdrapeau, les certificats seront valables jusqu’à une seconde avant leur signature CA Expire.
Générateur de certificats clients
1
2
3
4
5
6
7
8
9
10
11
12
# durée 3 ans - 2 jours exprimés en hms (3x365x24)-48 -> -duration 26232h00m00s
# Dans le dossier contenant ca.crt, ca.key et nebula-cert
# Pour désigner ca si nécessaire: sign -ca-crt ca.crt -ca-key ca.key
./nebula-cert sign -duration 26232h00m00s -name "vps-5351f610-lighthouse" -networks "10.139.110.1/24,fda3:4291:71b9:2f0a::1/64"
./nebula-cert sign -duration 26232h00m00s -name "cwwk-nebula" -networks "10.139.110.2/24,fda3:4291:71b9:2f0a::2/64" -groups "servers"
./nebula-cert sign -duration 26232h00m00s -name "vps-1780de45-nebula" -networks "10.139.110.3/24,fda3:4291:71b9:2f0a::3/64" -groups "servers"
./nebula-cert sign -duration 26232h00m00s -name "yannir-nebula" -networks "10.139.110.4/24,fda3:4291:71b9:2f0a::4/64" -groups "servers"
./nebula-cert sign -duration 26232h00m00s -name "iceyan-nebula" -networks "10.139.110.5/24,fda3:4291:71b9:2f0a::5/64" -groups "servers"
./nebula-cert sign -duration 26232h00m00s -name "ouestyan-nebula" -networks "10.139.110.6/24,fda3:4291:71b9:2f0a::6/64" -groups "servers"
./nebula-cert sign -duration 26232h00m00s -name "e6230-nebula" -networks "10.139.110.7/24,fda3:4291:71b9:2f0a::7/64" -groups "laptops"
./nebula-cert sign -duration 26232h00m00s -name "pc1-nebula" -networks "10.139.110.8/24,fda3:4291:71b9:2f0a::8/64" -groups "homes"
./nebula-cert sign -duration 26232h00m00s -name "a528s-nebula" -networks "10.139.110.9/24,fda3:4291:71b9:2f0a::9/64" -groups "mobiles"
Droits en exécution
1
chmod +x gener-certificat-client.sh
Exécution (saisie phrase de passe à chaque certificat)
1
./gener-certificat-client.sh
Vérification certificat
1
./nebula-cert print -path cwwk-nebula.crt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"curve": "CURVE25519",
"details": {
"groups": [
"servers"
],
"isCa": false,
"issuer": "68dc.....................................7005",
"name": "cwwk-nebula",
"networks": [
"10.139.110.2/24",
"fda3:4291:71b9:2f0a::2/64"
],
"notAfter": "2029-02-07T14:24:47+01:00",
"notBefore": "2026-02-10T14:24:47+01:00",
"unsafeNetworks": null
},
"fingerprint": "743............................................................e17",
"publicKey": "127.............................................................851",
"signature": "50305.............................................................................f09",
"version": 2
}
Configurer Nebula
Remarque: Pour les exemples suivants, nous utilisons l’adresse 198.51.100.1 comme ip routable pour un phare fictif. Vous Allez Vous devez remplacer l’adresse IP routable de votre propre phare lors de la création de vos fichiers de configuration Nebula.
Fichiers de configuration
Télécharger un Exemple de configuration. Faire deux copies distinctes de l’exemple de fichier de configuration, un pour votre phare nommé config-lighthouse.yaml, et un que pour chaque hôte non-lighthouse, appelé config.yaml.
1
2
3
curl -o config.yml https://raw.githubusercontent.com/slackhq/nebula/master/examples/config.yml
cp config.yml config-lighthouse.yaml
cp config.yml config.yaml
Nebula pare-feu
Le fichier de configuration d’exemple permet tout le trafic sortant, mais ne permet que des connexions spécifiques à chaque hôte nebula. Vous devez modifier ces paramètres pour autoriser le trafic vers/depuis les hôtes de votre réseau.
1
2
3
4
5
6
7
8
9
10
11
12
13
firewall:
outbound:
# Allow all outbound traffic from this node
- port: any
proto: any
host: any
inbound:
# Allow icmp between any nebula hosts
# proto: any
- port: any
proto: icmp
host: any
Nebula lighthouse
Fichier: config-lighthouse.yaml
Sur l’hôte du phare, vous devrez vous assurer am_lighthouse: trueest fixé. Par défaut le port est 4242 , remplacé par 54254
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Dual-stack configuration (both IPv4 and IPv6 overlay addresses)
static_host_map:
'10.139.110.1': ['xoyaz.xyz:54254']
'fda3:4291:71b9:2f0a::1': ['xoyaz.xyz:54254']
lighthouse:
am_lighthouse: true
listen:
# To listen on only ipv4, use "0.0.0.0"
host: "::"
port: 54254
# Désactiver hosts su le phare lighthouse
# hosts is a list of lighthouse hosts this node should report to and query from
# IMPORTANT: THIS SHOULD BE EMPTY ON LIGHTHOUSE NODES
# IMPORTANT2: THIS SHOULD BE LIGHTHOUSES' NEBULA IPs, NOT LIGHTHOUSES' REAL ROUTABLE IPs
# hosts:
# - "192.168.100.1"
Nebula hôtes
Fichier: config.yaml
Sur les hôtes individuels, assurez-vous que le phare est défini correctement dans le static_host_mapsection, et est ajouté à la phare hostssection.
1
2
3
4
5
6
7
8
static_host_map:
'10.139.110.1': ['xoyaz.xyz:54254']
lighthouse:
am_lighthouse: false
interval: 60
hosts:
- '10.139.110.1' # IPv4 lighthouse
- 'fda3:4291:71b9:2f0a::1' # IPv6 lighthouse
Nebula Android
Téléchargez l’application android Nebula

Installer et ouvrir l’application

Cliquez sur « + » pour ajouter une nouvelle configuration, donner un nom “a528s-nebula” (1) et cliquer sur “Certificate” (2), puis envoyer la clé publique de l’appareil sur votre ordinateur qui contient ca.key en cliquant sur “Share Public Key”, “Nextcloud “

Téléverser le fichier “device.pub” dans un dossier dans la machine qui héberge l’autorité de certification (certificat et clé)
Signez la clé en utilisant ca.key:
1
2
3
4
./nebula-cert sign -duration 26122h00m00s -in-pub device.pub \
-name "a528s-nebula" \
-networks "10.139.110.9/24,fda3:4291:71b9:2f0a::9/64"
# Entrer la passphrase
Cela devrait produire a528s-nebula.crt
Envoyer a528s-nebula.crt et ca.crt sur votre téléphone.
Choose file et Choose a file pour récupérer le certificat a528s-nebula.crt , puis “save”

Changer le name et cliquer sur CA pour récupérer le certificat ca.crt , puis “File”, “Choose file” et save


Clique sur « Hosts », “Add a new entry” définissez l’adresse IP de votre phare (lighthouse), ainsi que son adresse IP publique et son port. Activez l’option « Lighthouse ».

Cliquer 2 fois sur “Save” puis sur “Disconnected” pour activer

Vous pouvez ensuite utiliser l’application Nebula ou les paramètres VPN pour activer Nebula. La connexion prendra quelques secondes, puis vous pourrez accéder à tous les appareils connectés à votre VPN.
Annexe
Génération hôte Nebula
Création d’un bash gener-nebula-v2.sh pour générer les fichiers de configurations Nebula des groupes homes, laptops, servers, lighthouse et mobile
Créer un alias
1
alias nebulaclient='cd $HOME/sharenfs/nebula-v2/; ./client-nebula-v2.sh'

