I.   Présentation

 

VyOS est un routeur virtuel basé sur une image linux permettant logiciellement de faire du routage réseau, à contrario des switch Cisco ou autre qui le font matériellement. Il intègre également un pare-feu et une fonction VPN.

Nous allons voir ici, comment l’installer et faire une première configuration fonctionnelle. Nous ferons cela sous Proxmox pour la création de la machine virtuelle. Deux possibilités s’offrent à nous pour l’infrastructure réseau de VyOS. Soit sur le serveur Proxmox nous avons 2 cartes réseaux, cas le plus simple. Soit nous n’en avons qu’une ce qui implique que le trafic de/vers internet et de/vers les VMs se feront sur la même interface, pour cela il faudra utiliser des VLANs.

 

  

 


II.   Création VM

 

Tout d’abord, commençons par télécharger l’ISO sur le site officiel. A l’heure de la rédaction de l’article nous sommes à la version 1.1.8

Pour la création de la VM, voici ces caractéristiques:

 

        

 

 


III.   Installation

 

L’ISO VyOS est en réalité un live cd, une fois que l’image a bootée vous vous retrouvez avec le login à rentrer.

 

  

 

La commande « install image » est un script automatique qui posera les questions suivantes:

  • Would you like to continue? (Yes/No) [Yes]: [ENTREE]
  • Partition (Auto/Parted/Skip) [Auto]: [ENTREE]
  • Install the image on? [sda]: [ENTREE]
  • This will destroy all data on /dev/sda. Continue? (Yes/No) [No]: YES
  • How big of a root partition should I create? (1000MB – 2147MB) [2147]MB: [ENTREE]
  • What would you like to name this image? [1.1.8]: vyos_1.1.8
  • Which one should I copy to sda? [/config/config.boot]: [ENTREE]
  • Enter password for user ‘vyos’: ****
  • Retype password for user ‘vyos’: ****
  • Which drive should GRUB modify the boot partition on? [sda]: [ENTREE]

 

Il ne reste plus qu’à redémarrer la VM avec la commande « reboot »

 


IV.   Configuration

 

Nous allons configurer VyOS en se basant sur le schéma réseau ci-dessous.

 

 

On rentre dans le mode de configuration de VyOs, cela rappelle le mode « configure terminal » de Cisco

vyos@vyos$ configure
vyos@vyos#

 

On va assigner la configuration réseau à l’interface « ETH1 » qui est dans notre cas l’interface vers « INTERNET ». Ici elle est en DHCP c’est donc notre box (freebox, livebox, etc..) qui fournira l’adresse (NON recommandé en production). On lui assignera un nom également afin de la distinguer facilement.

set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'WAN'

 

On fait de même pour l’interface « ETH1 » qui est celle du LAN

set interfaces ethernet eth1 address '10.1.1.254/24'
set interfaces ethernet eth1 description 'LAN'

 

On active le service SSH sur le port 22 (peut être changé évidement)

set service ssh port '22'

 

Ici on indique que tout le trafic du réseau 10.1.1.0/24 c’est à dire le réseau LAN sera redirigé vers l’interface « ETH0 »

set nat source rule 100 outbound-interface 'eth0'
set nat source rule 100 source address '10.1.1.0/24'
set nat source rule 100 translation address masquerade

 

On configure le serveur DHCP pour l’interface LAN. Le réseau utilisé est le 10.1.1.0/24 avec le routeur qui correspond à l’adresse de l’interface « ETH1 » en 10.1.1.254 qui sera le DNS également. Le nom de domaine sera « reseau-lan », le bail sera de 86400 secondes (1 jour). Enfin les adresses délivrées se feront sur la plage 10.1.1.1 jusqu’à 10.1.1.10

set service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 default-router '10.1.1.254'
set service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 dns-server '10.1.1.254'
set service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 domain-name 'reseau-lan'
set service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 lease '86400'
set service dhcp-server shared-network-name LAN subnet 10.1.1.0/24 start 10.1.1.1 stop '10.1.1.10'

 

On configure un redirecteur DNS, ainsi les requêtes DNS de l’interface « ETH1 » seront transmises vers le serveur DNS 192.168.1.254

set service dns forwarding cache-size '0'
set service dns forwarding listen-on 'eth1'
set service dns forwarding name-server '192.168.1.254'

 

On fait une configuration basique du pare-feu, qui sera appliquée sur l’interface « ETH0 » dans le sens entrant. Par défaut on supprime les paquets (ignore), on crée la règle 10 qui accepte les connexions déjà établies ainsi les nouvelles connexions en relation avec les connexions déjà existantes (un transfert FTP par exemple).

set firewall name WAN-ENTRANT default-action 'drop'
set firewall name WAN-ENTRANT rule 10 action 'accept'
set firewall name WAN-ENTRANT rule 10 state established 'enable'
set firewall name WAN-ENTRANT rule 10 state related 'enable'

 

De même, pour le sens sortant on supprime par défaut les paquets. La règle 10 est identique à la précédente, la règle 20 autorise le protocole icmp (ping) , la 30 bloque les connexions SSH s’il y a eu 4 tentatives en 60 secondes. La règle 31 autorise les connexions SSH.

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

 

Enfin on applique nos deux règles (WAN-ENTRANT & WAN-SORTANT) sur l’interface « ETH0 »

set interfaces ethernet eth0 firewall in name 'WAN-ENTRANT'
set interfaces ethernet eth0 firewall local name 'WAN-SORTANT'

 

On valide les changements. (mais ils ne seront pas actifs après un redémarrage)

vyos@vyos# commit

On sauvegarde la configuration qui sera écrite dans le fichier /config/config.boot

vyos@vyos# save
Saving configuration to '/config/config.boot'...
Done

 

On peut quitter le mode configuration

vyos@vyos# exit
vyos@vyos$

 


V.   Test

 

Il ne vous reste plus qu’à connecter une VM dans le réseau 10.1.1.0/24 et vérifier que vous recevez une adresse IP comprise entre 10.1.1.1 et 10.1.1.10. Puis à faire un ping vers google.fr par exemple pour vérifier la bonne résolution du nom DNS ainsi que la connectivité vers internet (si le ping répond).

 

   

 


VI.   Pour aller plus loin

 

VyOS, dispose d’une commande pour faire de la surveillance, c’est la commande: monitor. Elle permet de surveiller entre autre le DNS, DHCP et les interfaces réseaux…

 

Par exemple, nous pouvons voir ce qu’il se passe lorsque nous faisons notre « ping » vers « google.fr »