Table des matières

2020/11/28 (Neutriton) : pfsense

Présences :

Jitsi : https://jitsi.belnet.be/neutriton jitsi client (electron | appimage): https://github.com/jitsi/jitsi-meet-electron > mute with m and vid with v

Météo

Moment informel durant lequel on exprime en peu de mots comment on se sent et si on a une attente forte pour la réunion. Ce n'est pas un moment de discussion mais d'expression individuelle et ce n'est pas obligatoire 🙂

Attente(s) forte(s)

Si l'une ou l'autre personne exprime une attente forte, merci de vous en occuper en priorité ou de la noter dans le hub ou dans un point approprié.

Présentation réseau

analogique: https://files.neutrinet.be/s/btYHNFK7jG6S3Ng draw.io (now diagrams.net):

Présentation pfsense

c joli mais sec Possibilité d'organiser les règles avec des séparateurs alias: mettre un nom sur par exemple un ip ou un groupe des entités pour faire plus lisible (le texte est plus parlant qu'une IP…) ou regrouper et aussi pour évite d'entrer plusieurs fois les mêmes données

Pourquoi pas nftable/iptable

plus facile dans l'interface, comme drag n drop and separators

OPNsense

Réécriture de PfSense, avec un framework plus à jour, et tourne sur HardenedBSD au lieu de BSD Comportement étrange de l'expérience de tharyrok (Ipv6, résolveur DNS qui plantait régulièrement) Proxmox supporte pas bien HardenedBSD C'est subjectif, mais Tharyrok trouve que l'interface web d'OPNsense est moins intuitive que celle de pfsense.

proxmox rappel

machine ids 100 to 199 > non moving (only start stop) car ce sont des machines liées à une interface réseau physique de la machine 900+ > movable : sont des machines qui peuvent être déplacées d'un serveur physique à l'autre en cas de besoin

Installation Pfsense

new id > 121 (on passe à la dizaine supérieure pour différencier les pfsense des edge) pfsense-01.blue.neutri.net resp. name of service . datacenter . domain os = other = bsd hdd = local (no use for ceph) - 10go = even too much | qcow2 | discard for using only really used space 4 cores → pfsense doesn't need much, so 4 cores is already a lot (Neutrinet servers have 32 cores) openvswitch to make use of vlans > use tags (10 = management or 20 is private or new) we don't specify a vlan here, because pfsense will have to access the whole interface (= all vlans) virtio

put iso in /var/lib/vz/templates/iso (default folder on datastore) wget + gzip

change the installation media in the made vms > start

you can chose to install from previously exported config.xml (all config from the pfsense) or fresh

keymap : belgian, just by convention (utile parce qu'on peut avoir besoin de taper quelques commandes avant l'accès à l'interface web) tharyrok had some issues with ufs in the past (corrupted pfsense after reboot), so big preference for zfs https://forum.netgate.com/topic/120393/zfs-vs-ufs-and-power-loss < zillion times better lol Comme configuration ZFS, choix de Stripe (pas de raid) Don't forget to remove the install CD. This can be a problem later if the CD is still there, but the corresponding image doesn't exist anymore : Proxmox could become grumpy. __ pause

Assignation des VLANs

vlan ⇒ yes && choose interface add all vlans on the same interface (in this case 40 = public = WAN, 20=private and 25=new vlan for pfsense communication aka LAN)

La création des VLAN et leur assignation aux interfaces peut se faire par cli ou par interface web.

vlan 10 named management (Contient actuellement les Proxmox, Ceph, les iLo et les Edge, mais cela est temporaire.) vlan 20 named patata ( VLAN sur lequel se connecteront les machines virtuelles.) vlan 25 named interco (VLAN spécifique entre les pfSense pour leur synchronisation) vlan 40 named neutrinet (IP publiques de Neutrinet)

Les descriptions des VLANs sont importantes pour bien voir quoi correspond à quoi en cas de problème et de coup de stress.

Au niveau de l'assignation des interfaces : On a assigné le VLAN40 sur le WAN, le VLAN 25 sur le LAN et les VLAN 20 et 10 sur Opt1 et Opt2. PfSense pré-attribue des règles spécifiques à l'interface LAN et on préfère donc utiliser une interface sans règles pré-établie pour les VM du VLAN 20.

Une difficulté en assignant les interfaces est de perdre l'accès au pfSense. Pour assigner le VLAN40 à la place du VLAN 10 sur le WAN lors de la configuration de pfSense1, la stratégie a été de configurer le pfSense (interface + IP+ règle autorisant l'accès depuis le réseau VLAN20) et d'ajouter temporairement une interface à la machine web pour accéder au pfSense et poursuive la configuration.

Synchronisation et HA

pfsync permits to not lose sessions when one goes down

Un utilisateur spécial pour la synchronisation est créé avec un droit particulier : “system, HA node, synchro”. La synchronisation est ensuite paramétrée dans : “System / High Aviability Sync”. On coche “pfsense transfers state insertion, update and deletion between firewalls”. On choisit l'interface de synchronisation, ici interco avec le VLAN25. Dans le second pfSense, on coche tout dans la liste des choses à synchroniser.

only config xmlrpc on the 1st pfsense and you sync to the second, so always put conf on 1st if the “master” pfsense isn't available, don't create new rules ór keep in mind that new rules will be overwritten once it comes online S'il fallait néanmoins le faire, il faut alors supprimer complètement pfSense1 et faire de pfSense2 le master pour que la synchronisation se fasse vers le nouveau pfSense1.

packages are not sync, have to be installed on both sides manually users are sync

Mises à jour et réinstallation

In case pfsense is corrupted :

  use the install disk
  choose "recover config.xml from a previous install"
  install

To upgrade pfsense : same as recover, but with a newer pfsense image (les mises à jour par la web interface peuvent bugger)

config and packages will be recovered as well

utilisateurs et ssh

We create a new user tharyrok with his ssh public key, then we enable ssh login and force public key auth Don't forget to add a rule in the firewall : Neutrinet, allow port 22

Mise en HA

you create a virtual ip with CARP and put the floating ip 80.67.181.6 and the mask /28 On doit aussi choisir un mot de passe qui répond à certaines contraintes. Le reste est par défaut (une option VHID permettrait d'ajouter plusieurs adresses mais ici on en a qu'une).

On peut ensuite voir dans les status de CARP que le pfsense1 est master et le pfsense2 est en backup. Cela veut dire que le premier pfSense à l'IP.

Pour rendre l'IP flottante accessible, une règle doit être ajoutée dans le firewall. On choisit “single host” ou l'alias de l'ip flottante car si l'on prend Neutrinet address ça sera l'IP déjà assignée à l'interface.

CARP + pfsync makes continuous ICMP : si pfSense1 est désactivé ou arrêté, pfSense2 reprend l'IP. temp disable carp vs carp maintenance mode → maintenance mode stays after reboot / reinstall

Why CARP instead of VRRP ?

pfsense only support CARP

VRRP (keepalived) allows more flexibility in the config

But as we use CARP through pfsense, this doesn't matter

Fin de réunion car il est déjà tard. Tharyrok doit encore nous expliquer comment diagnostiquer certaines erreurs de xmlrpc qui peuvent arriver. Il doit aussi nous expliquer le NAT.

Prochaine réunion

Prochain Neutriton : 12/12 à 14:00 sur l'inventaire

Lieu : https://jitsi.belnet.be/neutriton

Météo de fin

Moment informel durant lequel on exprime en peu de mots comment, à titre personnel, la réunion a été vécue que ce soit positif ou négatif. Si une ou plusieurs tension est née durant la réunion, il est peut-être nécessaire d'envisager l'une ou l'autre réunion pour y remédier.