VyOS est un système d'exploitation open-source basé sur Débian, spécialement conçu pour fonctionner comme un routeur réseau et une plateforme de gestion des réseaux. Il est utilisé pour déployer des fonctions réseau avancées telles que le routage, la commutation, les VPN, la gestion des pare-feu, la translation d'adresses réseau (NAT), et bien plus encore. VyOS offre une alternative open-source aux routeurs propriétaires commerciaux comme ceux de Cisco ou Juniper, tout en fournissant une flexibilité et une personnalisation élevées. Principales fonctionnalités de VyOS :
Routage statique et dynamique: Prend en charge des protocoles de routage dynamique comme OSPF, BGP, RIP, et le routage statique.
Pare-feu: Intègre un pare-feu stateful pour surveiller et contrôler les connexions réseau. Supporte la translation d'adresses réseau (NAT) et les VPN (IPsec, OpenVPN, WireGuard).
Qualité de service (QoS) et Traffic Shaping: Permet de définir des priorités de trafic (QoS) et de gérer la bande passante via le traffic shaping.
VLAN (Virtual Local Area Network): Support complet des VLANs pour segmenter les réseaux et améliorer la gestion du trafic.
VPN: Prise en charge de IPsec, OpenVPN, WireGuard, et L2TP pour établir des connexions VPN sécurisées.
Proxy: Support du proxy Squid pour la gestion du trafic web et la mise en cache.
DHCP (Dynamic Host Configuration Protocol): Serveur DHCP pour l'attribution automatique d'adresses IP aux dispositifs réseau.
DNS (Domain Name System): Serveur DNS intégré pour la gestion des noms de domaine et la résolution d'adresses IP.
Monitoring et gestion: Prend en charge des outils de monitoring comme syslog et Loki pour la surveillance du réseau et l’analyse du trafic.
Créer une image personnalisée à partir du code source disponible sur GitHub.
Installation
Chaque installation de Vyos débute par un démarrage en mode live. Pour faire une installation permanente, il faut exécuter la commande install image dans le terminal et suivre les instructions suivantes :
vyos@vyos:~$ install image
Welcome to the VyOS install program. This script
will walk you through the process of installing the
VyOS image to a local hard drive.
Would you like to continue? (Yes/No) [Yes]: Yes
Probing drives: OK
Looking for pre-existing RAID groups...none found.
The VyOS image will require a minimum 2000MB root.
Would you like me to try to partition a drive automatically
or would you rather partition it manually with parted? If
you have already setup your partitions, you may skip this step
Partition (Auto/Parted/Skip) [Auto]:
I found the following drives on your system:
sda 4294MB
Install the image on? [sda]:
This will destroy all data on /dev/sda.
Continue? (Yes/No) [No]: Yes
How big of a root partition should I create? (2000MB - 4294MB) [4294]MB:
Creating filesystem on /dev/sda1: OK
Done!
Mounting /dev/sda1...
What would you like to name this image? [1.2.0-rolling+201809210337]:
OK. This image will be named: 1.2.0-rolling+201809210337
Copying squashfs image...
Copying kernel and initrd images...
Done!
I found the following configuration files:
/opt/vyatta/etc/config.boot.default
Which one should I copy to sda? [/opt/vyatta/etc/config.boot.default]:
Copying /opt/vyatta/etc/config.boot.default to sda.
Enter password for administrator account
Enter password for user 'vyos':
Retype password for user 'vyos':
I need to install the GRUB boot loader.
I found the following drives on your system:
sda 4294MB
Which drive should GRUB modify the boot partition on? [sda]:
Setting up grub: OK
Done!
vyos@vyos:~$ reboot
Proceed with reboot? (Yes/No) [No] Yes
Après le redémarrage, nous pouvons changer le mot de passe par défaut :
vyos@vyos:~$ conf
vyos@vyos:~$ set system login user vyos authentication plaintext-password 'mdp'
New password:
Retype new password:
vyos@vyos:~$ commit
vyos@vyos:~$ save
Saving configuration to '/config/config.boot'...
Done
vyos@vyos:~$ exit
Par défaut le clavier est en Qwerty. Pour le mettre en français voici la commande :
sudo loadkey fr
Configuration
VyOS permet de configurer le système via un script. C'est ce que nous allons faire pour permettre la reproductibilité et la modification simple de la configuration.
Pour obtenir la Default Gateway, il suffit de faire un ipconfig sur un pc qui est connecté sur le même réseau :
Afin de ne pas avoir de soucis concernant l'ip que la box a attribué par DHCP au vyos, nous allons accéder à notre box et ajouter un bail DHCP static :
Pour créer une configuration persistante, nous allons créer un fichier et l'éditer grâce à la commande suivante :
vi config-ipv4-vyos-iron.sh
#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
configure
# URL de mise a jour
set system update-check url https://raw.githubusercontent.com/vyos/vyos-nightly-build
/refs/heads/current/version.json
# Configuration du système
set system host-name 'iron'
set system name-server 1.1.1.1
set service ssh port 22
set system option keyboard-layout fr
# Configuration d'une adresse IPv4 statique pour l'interface WAN
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'WAN'
# Configuration de la passerelle par défaut
set protocols static route 0.0.0.0/0 next-hop 192.168.1.254
# Configuration de l'interface VLAN
set interfaces ethernet eth1 vif 60 address 10.125.0.254/24
set interfaces ethernet eth1 vif 60 description 'VLAN 60 - PA'
# Configuration du NAT
set nat source rule 10 outbound-interface name eth0
set nat source rule 10 translation address 192.168.1.48
# Configuration du DHCP
# DHCP pour VLAN 60 - PA
set service dhcp-server shared-network-name VLAN60 subnet 10.125.0.0/24 range 0
start 10.125.0.100
set service dhcp-server shared-network-name VLAN60 subnet 10.125.0.0/24 range 0
stop 10.125.0.200
set service dhcp-server shared-network-name VLAN60 subnet 10.125.0.0/24 option
default-router 10.125.0.254
set service dhcp-server shared-network-name VLAN60 subnet 10.125.0.0/24 option
name-server 1.1.1.1
set service dhcp-server shared-network-name VLAN60 subnet 10.125.0.0/24 lease '86400'
set service dhcp-server shared-network-name VLAN60 subnet 10.125.0.0/24 subnet-id '60'
# Configuration du DNS Forwarding pour utiliser 1.1.1.1
set service dns forwarding listen-address 10.125.0.254
set service dns forwarding name-server 1.1.1.1
set service dns forwarding allow-from 10.125.0.0/24
# Firewall
## Global action
set firewall global-options state-policy established action 'accept'
set firewall global-options state-policy invalid action 'drop'
set firewall global-options state-policy related action 'accept'
# Commit and Save configuration
commit
save
Une fois la configuration terminée, nous allons pouvoir l'appliquer :
sg vyattacfg -c ./config-ipv4-vyos-iron.sh
Liaison avec Netbird
Pour intégrer notre routeur vyos à Netbird, nous allons devoir générer une clé sur Netbird via l'onglet Setup Keys:
Pour rentre persistante la liaison avec Netbird, nous allons suivre cette documentation utilisant la conteneurisation :
Ajout de l'image netbird :
add container image netbirdio/netbird:latest
Verification de l'upload de l'image :
run show container image
Nous allons créer un dossier où va se situer le conteneur :
sudo mkdir -p /config/containers/netbirdManganese
Maintenant, nous allons de nouveau éditer notre fichier de configuration pour créer notre conteneur :
# Liaison avec Netbird
set container name netbirdPA allow-host-networks
set container name netbirdPA capability 'net-admin'
set container name netbirdPA capability 'net-raw'
set container name netbirdPA image 'netbirdio/netbird:latest'
set container name netbirdPA volume NB_PATH destination '/etc/netbird'
set container name netbirdPA volume NB_PATH source '/config/containers/netbirdPA'
set container name netbirdPA environment NB_MANAGEMENT_URL value "https://netbird.daniel-thomas.fr/"
set container name netbirdManganese environment NB_SETUP_KEY value 'VALUE'
Éxecution de la configuration :
sg vyattacfg -c ./config-ipv4-vyos-iron.sh
Si la liaison s'est bien effectué, le routeur va apparaitre dans les Peers Netbird
Mise à jour
Dans notre configuration, nous avons ajouté l'URL permettant de mettre à jour la version de vyos :
# URL de mise a jour
set system update-check url https://raw.githubusercontent.com/vyos/vyos-nightly
-build/refs/heads/current/version.json
Pour mettre à jour notre système, nous allons donc utiliser cette commande :
add system image latest
Vyos prend en charge le rollback de version si jamais nous souhaitons revenir sur une version antérieure.