Catégorie : Technique

TEK Arena > Technique

Récupération de la configuration matérielle par défaut d’une VM dans vSphere

Vous êtes-vous déjà demandé comment et où l’interface utilisateur vSphere génère la configuration matérielle par défaut de la machine virtuelle après avoir sélectionné un système d’exploitation invité spécifique lors de l’assistant de création de machine virtuelle ?

La réponse est assez simple en demandant à la plate-forme vSphere et bien sûr, cela est fourni en tant qu’API que tout client logiciel peut utiliser, y compris notre propre interface utilisateur vSphere !

Cela se fait grâce à l’ API EnvironmentBrowser pour interroger la liste des systèmes d’exploitation invités pris en charge et la compatibilité du matériel virtuel. En plus de ces informations, nous pouvons également demander à la plate-forme vSphere quelle est la configuration matérielle par défaut pour tous les systèmes d’exploitation invités pris en charge à l’aide de l’ API QueryConfigOption .

Pour démontrer comment utiliser l’API QueryConfigOption, voici deux fonctions PowerCLI simples qui peuvent être trouvées dans cet exemple:

Fonction  Get-VMHardwareVersion {
 paramètre (
[ Paramètre ( Obligatoire = $true )][ Chaîne ] $ClusterName
)
 
 $cluster  =  Get-Cluster  $ClusterName
 $envBrowser  =  Get-View  $cluster .ExtensionData.EnvironmentBrowser
 
 $envBrowser .QueryConfigOptionDescriptor ().key
}
 
Fonction  Get-VMHardwareConfig {
 paramètre (
[ Paramètre ( Obligatoire = $true )][ Chaîne ] $ClusterName ,
[ Paramètre ( Obligatoire = $true )][ Chaîne ] $VMHardwareVersion
)
 
 $cluster  =  Get-Cluster  $ClusterName
 $vmhost  =  $cluster  |  Get-VMHost  | sélectionner - Premier 1
 $envBrowser  =  Get-View  $cluster .ExtensionData.EnvironmentBrowser
 
 $vmHardwareConfigs  =  $envBrowser .QueryConfigOption ( $VMHardwareVersion , $vmhost .ExtensionData.MoRef )
 $vmHardwareConfigs .GuestOSDescriptor
}

Avant de pouvoir récupérer la configuration matérielle de la machine virtuelle pour un système d’exploitation invité spécifique, nous devons spécifier la compatibilité matérielle de la machine virtuelle prise en charge. Pour ce faire, vous pouvez utiliser la fonction Get-VMHardwareVersion et spécifier le cluster vSphere souhaité pour interroger ces informations, comme indiqué dans la capture d’écran ci-dessous.

$ClusterName = "MainHost1-Cluster"
Get-VMHardwareVersion -ClusterName $ClusterName

Une fois que nous avons la liste des versions des compatibilités matérielles des VM prises en charge, nous pouvons utiliser la fonction Get-VMHardwareConfig et spécifier le cluster vSphere souhaité et la version de compatibilité matérielle VM pour récupérer la liste de tous les systèmes d’exploitation invités et leurs configurations matérielles par défaut.

$results = Get-VMHardwareConfig -ClusterName $ClusterName -VMHardwareVersion "vmx-10"
$results

Les résultats de cette fonction sont un tableau de tous les systèmes d’exploitation invités. il suffit de filtrer davantage les résultats en désactivant par exemple la propriété Id ou FullName

VMWare et Appliances virtuelles ESXi imbriquées

VMWare et Appliances virtuelles ESXi imbriquées

Voici toutes les appliances virtuelles Nested ESXi actuellement disponibles au téléchargement. Cette page sera mise à jour périodiquement, veuillez revenir ici si vous avez des questions concernant la version de l’appareil.

Pour ceux qui préfèrent utiliser les appliances virtuelles ESXi imbriquées à l’aide de ma bibliothèque de contenu Nested ESXi vSphere, abonnez-vous simplement à :

  • https://download3.vmware.com/software/vmw-tools/lib.json

La norme et les câbles USB

USB est l’abréviation de « Universal Serial Bus » ou « Bus Universel en Série ». Il s’agit du type de connexion standard dont sont dotés beaucoup d’ordinateurs et divers périphériques.

Avant l’USB, il existait d’autres connecteurs, de l’ADB au FireWire et au SCSI, chacun avec ses propres caractéristiques.

Comme c’est le cas pour de nombreuses normes, l’USB n’a cessé de s’améliorer et d’offrir de nouvelles fonctionnalités.

Les différentes vitesses USB

Les vitesses USB sont d’abord assez simple à comprendre, rappelez-vous qu’un mégaoctet est huit fois plus grand qu’un mégabit (Mb). Dans les détails :

  • L’USB 1.1 (Full-Speed) pouvait atteindre 12 mégabits par seconde (12Mbps), ce qui équivaut à 0,125 mégaoctet par seconde (Mbps).  
  • L’USB 2.0 (Hi-Speed) a une vitesse de 480 Mbps, soit 60 MBps.  
  • L’USB 3.0 (Super-Speed) a atteint de nouveaux sommets avec 5 gigabits par seconde (5Gbps), soit 625 MBps ou 5 000 Mbps.  

Cette dernière norme s’est diversifiée, la preuve en est avec sa version 3.1 et ses deux variantes : USB 3.1 Gen 1, identique à USB 3.0 SuperSpeed, à 5 000 Mbps, et USB 3.1 Gen 2, SuperSpeed+, à 10 000 Mbps.

L’USB 3.2 est uniquement destiné à l’USB-C, et non à l’USB-A. Il ressemble à l’USB 3.1, en proposant une vitesse maximale de 10 Gbps. 

Il est sujet à trois taux de transfert :  

  • USB 3.2 Gen 1 : USB SuperSpeed à 5 Gbps. 
  • USB 3.2 Gen 2 : USB SuperSpeed+ à 10 Gbps. 
  • USB 3.2 Gen 2×2 : USB SuperSpeed+ à 20 Gbps. 

Un connecteur USB-C dispose de quatre paires de broches pour transmettre et recevoir les données.

Thunderbolt

Le Thunderbolt 3 (T3) variante produit par Apple, ressemble au USB-C, néanmoins il est beaucoup plus rapide (40,000 Mbps) et performant. Il fournit des données PCI Express pour les disques durs, les disques SSD et les cartes graphiques, ainsi que la fonctionnalité DisplayPort.

Il s’agit également d’un câble à pair et non d’un câble hôte, il a donc pour but de connecter plusieurs périphériques.

Le Thunderbolt 4 (T4) permet d’utiliser des câbles plus longs (2 m contre 1m pour le T3) et d’autres fonctions intéressantes, telles que la protection des données par accès direct à la mémoire (DMA) et le Hub. Tous les appareils compatibles prennent en charge au moins deux écrans externes 4K, ou un seul écran 8K.

La certification Thunderbolt 4 exige que la bande passante PCIe soit doublée à 32 Gbps.

USB 4 ou 4.0

Déjà présenté en 2019, l’USB 4.0 ou l’USB 4 vise avant tout à simplifier la diversité confuse des différentes spécifications et donc la jungle des appellations. Depuis l’arrivée de l’USB 3.0 et de ses générations suivantes sur les marchés à partir de 2019, on a facilement perdu la vue d’ensemble, car les connecteurs de cette génération étaient tous identiques. Les utilisateurs d’Apple le savent suffisamment. De nouveaux câbles et connecteurs ont dû être achetés. C’était la naissance du connecteur USB Type C. Il a également permis d’améliorer de manière significative la vitesse et la quantité d’électricité.

L’USB tytpe 4 à venir est basé sur le protocole Thunderbolt 3 qui prend en charge un débit allant jusqu’à 40 Gbps. Il a exactement la même apparence que l’USB-C, l’USB 3.2 et les Thunderbolt 3 et 4.  

En plus de sa compatibilité avec le Thunderbolt 3, et sa rétrocompatibilité avec l’USB 3.2, ses spécifications minimales sont les suivantes : 20 Gbps, un écran 4K, une alimentation de 7,5 W, mais il peut aussi gérer jusqu’à 40 Gbps, deux écrans et une alimentation de 100 W.  

Il peut fournir une alimentation d’au moins 15 W aux accessoires et prendre en charge deux écrans 4K ou un seul écran 8K. 

Sinon, il existe aussi d’autres variantes :

  • L’USB4 Gen 2×2 avec une bande passante de 20Gbps.  
  • L’USB4 Gen 3×2 qui atteint 40Gbps, le plus rapide à ce jour. 

L’USB4 peut allouer dynamiquement et intelligemment la bande passante à la vidéo et aux données en fonction des besoins réels.

Nouvelle norme, nouveau logo:

USB 1.1

USB 1.1, développé en 1995, est le standard USB d’origine. Il gère deux vitesses de données : 12 Mbits/s pour les équipements comme les unités disques, qui nécessitent un débit élevé, et 1,5 Mbits/s pour les équipements comme les manettes de jeu, qui utilisent une bande passante bien moindre.

USB 2.0

En 2002, une nouvelle spécification, l’USB 2.0, ou USB 2.0 Hi-Speed, a été largement adoptée par les fabricants. Cette version est compatible à la fois en amont et en aval avec USB 1.1. Elle accélère le débit de la connexion entre le périphérique et le PC de 12 à 480 Mbits/s, soit un débit 40 fois plus rapide !

L’accroissement de bande passante améliore l’emploi de périphériques externes nécessitant des vitesses de transfert élevées, tels que les graveurs de CD/DVD, scanners, appareils photo numériques, équipements vidéo, etc. L’USB 2.0 prend en charge des applications exigeantes, comme la publication sue le Web, dans laquelle plusieurs appareils à haut débit fonctionnent en même temps. L’USB 2.0 est également pris en charge par Windows XP via une mise à jour.

USB 3.0

Le standard USB le plus récent, l’USB 3.0 ou « USB SuperSpeed » apporte de grandes améliorations par rapport à l’USB 2.0. L’USB 3.0 promet un débit allant jusqu’à 4,8 Gbits/s, presque dix fois celui de l’USB 2.0. L’USB 3.0 ajoute un bus physique fonctionnant en parallèle avec le bus 2.0 existant.

  • Connecteurs
    Il comprend la fiche USB plate de type A, mais à l’intérieur, il existe un autre jeu de connecteurs, et le bord de la fiche est bleu au lieu de blanc. La fiche type B a un aspect très différent avec un autre jeu de connecteurs.
  • Câble
    Le câble USB 3.0 comprend neuf conducteurs, soit quatre de plus que le câble USB 2.0 qui en possède une paire pour les données et une paire pour l’alimentation électrique. L’USB 3.0 se sert de deux paires supplémentaires pour les données, pour un total de huit conducteurs, plus un de masse. Ces paires supplémentaires permettent à l’USB 3.0 de prendre en charge le transfert asynchrone bidirectionnel de données en full-duplex au lieu de la méthode d’interrogation de l’USB 2.0 en half-duplex.
  • Plus de puissance
    L’USB 3.0 fournit 50% plus de puissance que l’USB 2.0 (150 mA contre 100 mA) aux dispositifs non configurés et jusqu’à 80% plus de puissance (900 mA contre 500 mA) aux appareils configurés. L’USB 3.0 gère aussi mieux l’énergie que l’USB 2.0 qui maintient l’alimentation quand le câble n’est pas utilisé.

Les caractéristiques USB définissent la vitesse et le fonctionnement du câble.

USB 2.0

C’est en 2002 que l’USB 2.0 (High-Speed) a été commercialisé. Cette version est rétrocompatible avec l’USB 1.1. Elle augmente la vitesse de connexion entre le périphérique et le PC de 12 Mo/s à 480 Mo/s, soit 40 fois supérieure à l’USB 1.1. Le nom du port comprend la mention « Enhanced », « Enhanced Host » ou « Universal Host ».

USB 3.1 Gen 1 (aussi appelé USB 3.0)

L’USB 3.0 (SuperSpeed) (2008) améliore les performances de l’USB 2.0. L’USB 3.0 peut atteindre une vitesse de 4,8 Go/s, soit 10 fois plus rapide que l’USB 2.0. L’USB 3.0 ajoute un bus physique actif en parallèle au bus 2.0 existant. L’USB 3.0 est rétrocompatible avec l’USB 2.0. Le nom du port indique USB 3.0.

USB 3.1 Gen 2

L’USB 3.1 (SuperSpeed+) offre une bande passante de 10 Go/s, un débit effectif de 3,4 Go/s et une alimentation de 900 mA en aval. A la différence de l’USB 2.0, la version 3.1 Gen 2 fonctionne en full duplex. La norme USB 3.1 Gen 2 est rétrocompatible avec les modèles 3.1 Gen 1 (ou 3.0) et USB 2.0.

Quels sont les différents types de raccords USB ?

USB Type A

  • On les trouve généralement côté hôte (PC, clavier, serveur, hub, câbles et petits périphériques)
  • Forme rectangulaire avec quatre broches en ligne
  • Raccord bleu facilement reconnaissable

USB Type B

  • Généralement utilisé sur les périphériques et autres appareils disposant d’un câble d’alimentation, comme les imprimantes
  • Format carré avec coins arrondis d’un côté
  • Quatre broches, une dans chaque coin.

USB Mini Type B

  • Forme rectangulaire avec cinq broches
  • Généralement utilisé sur les appareils photo et autres petits dispositifs

Micro Type-B avec câble 2.0

  • Appareils mobiles et portables
  • Forme rectangulaire avec cinq broches de 500 mA

USB Micro Type-B avec câble 3.1 Gen 1 (ou 3.0)

  • Appareils mobiles et portables
  • Alimentation de 900 mA

USB Type C

  • Compatible avec l’hôte et le périphérique. Les raccords sont les mêmes des deux côtés. Forme oblongue.
  • Compatible avec les modes alternés pour le transfert de données et autres à travers le raccord et le câble
  • Peut être fixé à un n’importe quel port. Le fonctionnement est défini par le matériel.
  • Prise réversible (haut ou bas)
  • Port réversible avec 24 broches. Fixation rapide et facile.
  • Débit jusqu’à 40 Go/s sur quatre voies de 10 Go/s chacune
  • Peut fournir ou consommer du courant et produire jusqu’à 100 W
  • Résiste à 10 000 cycles.
  • Rétrocompatible
Cartographie des connecteurs USB

Installer et configurer modsecurity 3.0 pour Nginx sur Fedora Server

Un petit article court pour expliquer aux amateurs de sécurité en herbe (perdus sur le plateau des Millevaches) comment installer le module modsecurity NGINX, par défaut dans la version payante NGINX+

NTP et Chrony en conteneur

NTP et Chrony en conteneur

La mise en conteneur d’environnement est classique de nos jours et est indiscutablement nécessaire.

Certains, se sont maintes fois heurtés à un mur sous formes d’insultes systèmes en installant le service de temps sous Linux; et notamment sous CentOS/RedHat.

Poursuivre la lecture « NTP et Chrony en conteneur »
Les Matrices de compatibilités OS

Les Matrices de compatibilités OS

Pour réaliser notre devoir de bon consultant, nous sommes bien souvent en train de puiser via notre moteur de recherche préféré les bons liens pour rechercher les bonnes informations.
Je vous propose un certains nombre de liens officiels, qui je suis sur, vous aiderons à votre quête d’informations.

Poursuivre la lecture « Les Matrices de compatibilités OS »

Installation de VyOS sur KVM/Qemu

VyOS est un système d’exploitation de routeur et firewall opensource. Vous trouverez leur site ici. On le retrouve dans les clouds AWS, Azure… et bien évidemment sur KVM. Très pratique, avec OpenVSwitch, il fait partie des petits blocs d’infra qui vous font économiser beaucoup d’heures de recherche et d’argent… Il s’interconnecte avec par exemple une « Azure VNet Gateway », Wireguard, GRE, BGP over IKEv2/IPsec. L’OS consomme moins de 512M de RAM et prend quelques centaines de Mo de place en stockage.

Installation de l’OS

On va chercher la bonne image sur la bonne page du site de l’éditeur. Je suis sympa, je vous mets l’url. Dans mon infra de test KVM/libvirt, j’ai un switch virtuel (OpenVSwitch) sur une IP WAN (ext-br-network) et un réseau isolé (internal). On va créer une nouvelle VM dans libvirt :

virt-install -n vyos_r1 \
   --ram 4096 \
   --vcpus 2 \
   --cdrom /var/lib/libvirt/images/vyos-1.3-rolling-202012041912-amd64.iso \
   --os-type linux \
   --os-variant debian10 \
   --network network=ext-br-network,model=virtio \ # c'est un réseau sur mon OpenVSwitch sur le WAN 
   --network network=internal,model=virtio \ # c'est un réseau isolé
   --graphics vnc,port=5999 \
   --hvm \
   --virt-type kvm \
   --disk path=/var/lib/libvirt/images/vyos_r1.qcow2,bus=virtio,size=8 \
   --noautoconsole

On entre dans l’OS, on change les locales et on installe l’OS (ou pas, dans ce cas il est chargé en ram et il faut créer une image avec les scripts de configuration)

sudo loadkeys fr
sudo dpkg-reconfigure keyboard-configuration
install image

Configuration simple avec deux cartes réseau

configure
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth1 address '192.168.200.254/24'
set service ssh port '22' # à partir de là le routeur est accessible en ssh, donc la conf peut-être terminée via SSH, Ansible
set nat source rule 100 outbound-interface 'eth0'
set nat source rule 100 source address '192.168.200.0/24'
set nat source rule 100 translation address masquerade
commit
save
exit

show interface
ping 8.8.8.8 interface 192.168.1.80 (en fonction)
ping 8.8.8.8 interface 192.168.200.254

Configuration du DHCP si besoin

set service dhcp-server disabled 'false' # version <~ 1.1.8
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 default-router '192.168.200.254'
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 dns-server '192.168.200.254'
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 domain-name 'internal.domain.tld'
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 lease '86400'
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 start '192.168.200.10' stop '192.168.200.253' # version <~ 1.1.8
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 range 0 start '192.168.200.9'
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 range 0 stop '192.168.200.253'

On configure le DNS forwarding

set service dns forwarding cache-size '0'
#set service dns forwarding listen-on 'eth1' # version <~ 1.1.8
set service dns forwarding listen-address '192.168.200.254'
set service dns forwarding allow-from '192.168.200.0/24'
set service dns forwarding name-server '8.8.8.8'
set service dns forwarding name-server '8.8.4.4'

Voilà, à ce niveau le routeur est fonctionnel !

Mise en place des firewalls

set firewall name OUTSIDE-IN default-action 'drop'
set firewall name OUTSIDE-IN rule 10 action 'accept'
set firewall name OUTSIDE-IN rule 10 state established 'enable'
set firewall name OUTSIDE-IN rule 10 state related 'enable'

set firewall name OUTSIDE-LOCAL default-action 'drop'
set firewall name OUTSIDE-LOCAL rule 10 action 'accept'
set firewall name OUTSIDE-LOCAL rule 10 state established 'enable'
set firewall name OUTSIDE-LOCAL rule 10 state related 'enable'
set firewall name OUTSIDE-LOCAL rule 20 action 'accept'
set firewall name OUTSIDE-LOCAL rule 20 icmp type-name 'echo-request'
set firewall name OUTSIDE-LOCAL rule 20 protocol 'icmp'
set firewall name OUTSIDE-LOCAL rule 20 state new 'enable'
set firewall name OUTSIDE-LOCAL rule 30 action 'drop'
set firewall name OUTSIDE-LOCAL rule 30 destination port '22'
set firewall name OUTSIDE-LOCAL rule 30 protocol 'tcp'
set firewall name OUTSIDE-LOCAL rule 30 recent count '4'
set firewall name OUTSIDE-LOCAL rule 30 recent time '60'
set firewall name OUTSIDE-LOCAL rule 30 state new 'enable'
set firewall name OUTSIDE-LOCAL rule 31 action 'accept'
set firewall name OUTSIDE-LOCAL rule 31 destination port '22'
set firewall name OUTSIDE-LOCAL rule 31 protocol 'tcp'
set firewall name OUTSIDE-LOCAL rule 31 state new 'enable'

et on applique la configuration à la carte réseau :

set interfaces ethernet eth0 firewall in name 'OUTSIDE-IN'
set interfaces ethernet eth0 firewall local name 'OUTSIDE-LOCAL'

Automatisation

On peut exécuter un script pour automatiser la configuration, il doit être appelé par le groupe vyattacfg avec la commande switch group sg, ce qui donne :

sg vyattacfg -c ./conf-network.sh

#!/bin/vbash
source /opt/vyatta/etc/functions/script-template
configure
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth1 address '192.168.200.254/24'
set service ssh port '22'
set nat source rule 100 outbound-interface 'eth0'
set nat source rule 100 source address '192.168.200.0/24'
set nat source rule 100 translation address masquerade
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 default-router '192.168.200.254'
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 dns-server '192.168.200.254'
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 domain-name 'internal.domain.tld'
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 lease '86400'
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 range 0 start '192.168.200.9'
set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 range 0 stop '192.168.200.253'
set service dns forwarding cache-size '0'
set service dns forwarding listen-address '192.168.200.254'
set service dns forwarding allow-from '192.168.200.0/24'
set service dns forwarding name-server '8.8.8.8'
commit
save
exit

Autre solution « maison », un vieux script des familles qui permet de tout faire depuis l’hyperviseur :

#!/bin/bash
name="vyos_r1"
user="vyos"
password="vyos"
dns_ip="192.168.1.34"

function main() {
  launch
  sleep 40
  install
  sleep 10
  config
}

function launch() {
  sudo virt-install -n $name \
   --ram 4096 \
   --vcpus 2 \
   --cdrom /var/lib/libvirt/images/vyos-1.3-rolling-202012041912-amd64.iso \
   --os-type linux \
   --os-variant debian10 \
   --network network=ext-br-network,model=virtio \
   --network network=internal,model=virtio \
   --graphics vnc,port=5999 \
   --hvm \
   --virt-type kvm \
   --disk path=/var/lib/libvirt/images/$name.qcow2,bus=virtio,size=8 \
   --noautoconsole
}

function install() {
  sudo expect <<EOF
  set timeout 600
  spawn virsh console $name
  expect "Escape character is ^] (Ctrl + ])" {send "\n"}
  expect "vyos login:" {send "$user\r"}
  expect "Password:" {send "$password\r"}
  expect "vyos:~" {send "install image\r"}   expect "Would you like to continue? (Yes/No): " {send "Yes\n"}
  expect "Partition (Auto/Parted/Skip):" {send "Auto\n"}   expect "Install the image on?:" {send "\n"}
  expect "Continue? (Yes/No):" {send "Yes\n"}   expect "How big of a root partition should I create? (2000MB - 8589MB):" {send "8589MB\n"}
  expect "What would you like to name this image?:" {send "\n"}   expect "Which one should I copy to vda?:" {send "\n"}
  expect "Enter password for user 'vyos':" {send "$password\n"}
  expect "Retype password for user 'vyos':" {send "$password\n"}
  expect "Which drive should GRUB modify the boot partition on?:" {send "\n"}   expect "vyos:~" {send "sudo reboot\r"}
  expect "Are you sure you want to reboot this system?" {send "Yes\r"}
EOF
}

function config() {
  sudo virsh start $name
  sleep 50
  sudo expect <<EOF
  set timeout 600
  spawn virsh console $name
  expect "Escape character is ^] (Ctrl + ])" {send "\n"}
  expect "vyos login:" {send "$user\r"}
  expect "Password:" {send "$password\r"}
  send "sudo loadkeys fr\r"
  send "configure\r"
  send "set interfaces ethernet eth0 address dhcp\r"
  send "set interfaces ethernet eth1 address '192.168.200.254/24'\r"
  send "set service ssh port '22'\r"
  send "set nat source rule 100 outbound-interface 'eth0'\r"
  send "set nat source rule 100 source address '192.168.200.0/24'\r"
  send "set nat source rule 100 translation address masquerade\r"
  send "set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 default-router '192.168.200.254'\r"
  send "set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 dns-server '192.168.200.254'\r"
  send "set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 domain-name 'internal.domain.tld'\r"
  send "set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 lease '86400'\r"
  send "set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 range 0 start '192.168.200.9'\r"
  send "set service dhcp-server shared-network-name LAN subnet 192.168.200.0/24 range 0 stop '192.168.200.253'\r"
  send "set service dns forwarding cache-size '0'\r"
  send "set service dns forwarding listen-address '192.168.200.254'\r"
  send "set service dns forwarding allow-from '192.168.200.0/24'\r"
  send "set service dns forwarding name-server '$dns_ip'\r"
  send "commit\r"
  send "save\r"
  send "exit\r"
EOF
}
main
exit 0

Et voilà, un routeur fonctionnel avec un seul script… Pensez à modifier ce script pour durcir la sécurité d’accès au routeur en changeant le second mot de passe et en modifiant la config ssh pour accepter les clés. Je mets le lien vers les blueprints de VyOS (notamment dans des environnements Cloud) :

https://docs.vyos.io/en/latest/configexamples/index.html

@+