====== 2020/08/15 (Hub infra) ======
FIXME À relire et peaufiner.
* Pad de la journée : https://pad.computhings.be/p/neutrinet-infra-15-08-2020
* Copie (merde, même proplème) : https://pad.faimaison.net/p/neutrinet-infra-15-08-2020
* Copie : https://pads.domainepublic.net/p/neutrinet-infra-15-08-2020
===== A faire =====
* créer nos utilisateur unix/proxmox/ilo
* changé les mdp root/admin/....
* créer les vm edge
* config bgp
* créer les script pour les hook de vzdump https://pve.proxmox.com/pve-docs/vzdump.1.html#vzdump_configuration
===== Présences =====
tharyrok, ptr_here, tierce et hgo
===== Numérotation des VMs dans Proxmox =====
Les VMs de 110 à 199 sont des VM à !!! NE PAS DÉPLACER !! et c'est pour cette raison que leur storage est sur /local et /data.
Et c'est surtout parce que c'est les routeurs edges01 et edges02 et il y aura aussi les pfsenses de la futur infra qui NE DOIVENT PAS être déplacés.
Les VMs de 300 à 899 c'est pour Neutrinet (future nouvelle infra), même si on est pas sur que ça nous laissera assez de n° de VM :p
Les VMs au-dessus de 900 c'est pour d'autres usages comme les amis, les labos, etc…
Par exemple, les VMs qu'on va ramener de i3D seront dans les 900 parce que c'est « l'ancienne infra » qu'on finira par supprimer.
===== Copier les iso =====
Télécharger debian installation ISO, et mettre dans le bon repertoire pour que proxmox les retrouve (local, nam et bour)
```
nam # cd /var/lib/vz/template/iso/
nam # wget … une image iso non-free …
```
===== Provisionner edge01 =====
3 interfaces reseau
vmbr0:vlan40 WAN
vmbr1 switch connection v verixi
et une autre dans le reseau management (vmbr0:vlan10)
boot 1GB ext2
root partition 9.2GB
512 MB swap
===== nettoyage réseau =====
==== configurer les ilo via ipmtool ====
On va utiliser ipmitool depuis nam et bour pour parler à leur iLo et pouvoir configurer leur vlan10 et leurs ips.
Sur nam et bour / installer outil pour gerer l'iLo depuis le host
```
# apt install ipmitool
# ipmitool lan print
...
IP Address : 192.168.12.62 # pas la bonne ip, on va la changer
...
```
ipmitool gère des « channels » (iLo c'est channel 2, iDrac −de Dell− c'est le 1 … mais on sait pas trop pourquoi)
On va les mettre dans le vlan10, fixer une ip statique, un masque, lui demander de répondre au ping (arp) et le redémarrer à chaud.
Il sera sur le vlan10 parceque sur topi on avait dit que l'interface 3 et 4 était « untag vlan10 ».
```
# ipmitool lan set 2 ipsrc static # fixe une ip statique
# ipmitool lan set 2 ipaddr 10.0.10.112 # définir l'ip
# ipmitool lan set 2 netmask 255.255.255.0 # définir le masque
# ipmitool lan set 2 defgw ipaddr 10.0.10.254 # définir une gateway qui existe pas encore
# ipmitool lan set 2 arp respond on # répondre au ping
# ipmitool mc reset warm # reboot du iLo pour qu'il prenne en compte la nouvelle config
# ipmitool lan print
...
IP Address : 10.0.10.112
...
```
On fera l'ipv6 plus tard parce que on a encore pas mal de choses à faire.
pour nam la meme chose
```
root@nam:~# ipmitool lan print
...
IP Address : 10.0.10.111
```
Pour pouvoir afficher les interfaces web des Proxmox (ou accéder aux iLo), n'ayant pas d'ip publiques (et c'est bien normal puisqu'on vient de changer de plage IP) pour les iLo et les Proxmox, on peut utiliser cette commande:
```
ssh 192.168.12.214 -p22 -ltharyrok -D 1337 #.214 sera un jour l'ip de edge01 ou edge02
```
le -D permet d'ouvrir un proxy socks que l'on configure dans firefox (on lui dit de passer par ce proxy) et cela permet d'accéder au vlan de management, pour gérer les iLo.
Et donc, dans Firefox, on accède à l'iLo via la 10.0.10.111 !
==== on nettoie le réseau de nam ====
On retire l'IP statique du vmbr1, parce que cette interface est pour la connexion avec Verixi, et on ne veut pas que les serveurs physique aient une adresse IP publique. Pour rappel, on passera par les VMs edge
On retire aussi la config local (192.168.12.213 et .214) de nam et bour.
```
iface vmbr1 inet manual
```
Du coup on aura plus accès à la machine et il faudra passer par un proxy sock.
===== Configuration des edges01 et edges02 =====
Sur les deux premières VMs faites ce matin, on va mettre les IPv4 et v6 reçues de Verixi sur nos deux routeurs virtuels.
On ajoute les ips 192.168.12.213 et .214 et aussi les IPs de Verixi dans la config reseau de edge01, edge02
les interfaces réseau sont nommées ens18, ens19, ens20 par defaut dans proxmox (ens18 is the name of interface inside the vm. (because proxmox add the interface on pci slot 18).)
En gros, voir ```/etc/networx/interfaces``` sur edge01 et edge01, c'est le seul fichier adapté pour le moment.
==== installation de bird (BGP) ====
Sur edge01 et edge02 …
```
# apt install bird
```
Dans la config BGÉ, par convention, on prend l'ipv4 (publique) de la machine en tant que « router id ».
root@edge-02:~# birdc show proto
BIRD 1.6.6 ready.
name proto table state since info
device1 Device master up 11:16:16
kernel1 Kernel master up 11:16:16
neutrinet Static master up 11:16:16
neutrinet_vpn Static master up 11:16:16
verixi BGP master start 11:16:16 Connect Socket: No route to host
root@edge-02:~# ip r s
default via 192.168.12.254 dev ens18
10.0.10.0/24 dev ens20 proto kernel scope link src 10.0.10.52
62.112.29.90/31 dev ens18 proto kernel scope link src 62.112.29.91
80.67.181.0/28 dev ens19 proto kernel scope link src 80.67.181.3
80.67.181.0/24 dev ens19 proto bird scope link
80.67.181.128/25 via 80.67.181.11 dev ens19 proto bird
192.168.12.0/24 dev ens18 proto kernel scope link src 192.168.12.128
maintenant config ipv6
bird6 est compris dans le package bird
edition de /etc/bird/bird6.conf
root@edge-02:~# systemctl enable bird6
Synchronizing state of bird6.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable bird6
root@edge-02:~# systemctl restart bird6
root@edge-02:~# ip -6 r s
::1 dev lo proto kernel metric 256 pref medium
2001:913:1000::/40 dev ens19 proto kernel metric 256 pref medium
2001:913:1f00::/40 via 2001:913:1000::11 dev ens19 proto bird metric 1024 pref medium
2001:913:1000::/36 dev ens18 proto bird metric 1024 pref medium
2a00:1528:3201:5::24/126 dev ens18 proto kernel metric 256 pref medium
2a02:578:857c:c01::/64 dev ens18 proto kernel metric 256 expires 7082sec pref medium
fd97:cbaf:f4d3:32a9::/64 dev ens20 proto kernel metric 256 pref medium
fe80::/64 dev ens20 proto kernel metric 256 pref medium
fe80::/64 dev ens19 proto kernel metric 256 pref medium
fe80::/64 dev ens18 proto kernel metric 256 pref medium
default via fe80::cece:1eff:fecd:ddb8 dev ens18 proto ra metric 1024 expires 1682sec mtu 1492 hoplimit 255 pref medium
root@edge-02:~#
==== installation de keepalived ====
Pour les IPs flottantes ( 80.67.181.1 et 2001:913:1000::1 pour le WAN et aussi 10.0.10.1 et fd97:cbaf:f4d3:32a9:10::1 pour le MAN) entre les edge01 et edge02.
On se dit qu'il nous manque un réseau SHOW pour faire un jour un WAN-MAN-SHOW ! ^_^
Sur edge01 et edge02 donc…
```
# apt install keepalived
# nano /etc/keepalived/keepalived.conf
# systemctl enable keepalived
# systemctl start keepalived
# ip a # pour voir si les ipv4 et ipv6 apparaîttent
```
check_bird : check si bird daemon tourne, en lui envoyant un SIGUSR1 (?) par la commande killall -0 bird;
Et voir le contenu du fichier ```/etc/keepalived/keepalived.conf``` pour les détails.
Pour le « priority 150 » on préfère que edge01 (edge02 est à « priority 100 ») soit prioritaire parce que si demain on avait deux interconnections différentes (une verixi et une cogent par exemple), Verixi nous demandera de privilégier la connexion de Verixi (ou la moins cher pour nous comme pour eux)
==== NAT et forwarding de packets ====
( C'est avec sysctl qu'on parle de forwarding et si c'était elle.. on parle de Nath ^_^ )
```
# nano /etc/sysctl.conf
```
On fixe ```inet.ipv4.ip_forward=1``` et ```net.ipv6.conf.all.forwarding=1``` sinon Debian ne fonctionne pas comme routeur.
```
# sysctl -p # pour appliquer les changements
```
Et maintenant on paramètre le firewall (iptables étant déprécié, on utilis nftables)
```
# nano /etc/nftables.conf # nano dispose d'une colloration syntaxique pour nftables, ce qui est bien pratique
```
On (disons… tharyrok) a bien dû cherche un peu pour les chaines my_forward et my_nat
```
…
chain my_forward {
type filter hook forward priority 0; policy drop;
ip saddr 80.67.181.0/24 accept comment "Allow Neutrinet to Internet"
ip6 saddr 2001:913:1000::/36 accept comment "Allow Neutrinet to Internet"
ip daddr 80.67.181.0/24 accept comment "Allow Internet to Neutrinet"
ip6 daddr 2001:913:1000::/36 accept comment "Allow Internet to Neutrinet"
ip saddr 10.0.10.0/24 accept comment "Allow Management to Internet"
ip daddr 10.0.10.0/24 ct state related,established accept comment "Allow Internet To Management"
counter drop
}
…
table ip my_nat {
chain postrouting {
type nat hook postrouting priority 0;
# Masquerade outgoing traffic
ip saddr 10.0.10.0/24 oif ens18 snat 192.168.12.127
}
}
```
Et on install sshguard pour ban les tentatives de brute force sur ssh.
```
# apt install sshguard
```
Et il rajoutera des entrées dans nft.
```
# nft list ruleset # pour lister les règles appliquées
```
Pour que les keepalived (VRRP) puissent continuer à se parler, nous avons également ajouter les règles suivantes dans le nftables sur les deux routeurs.
```
ip protocol vrrp accept comment "Accept VRRP"
ip protocol ah accept comment "Accept ah (vrrp auth)"
```
==== appliquer les settings reseau ====
reboot pour appliquer tout ces settings reseau
TODO!! on a oublie de installer qemu-agent dans les VM (donc la commande shutdown de Proxmox ne marche pas)
Sur chaque VMs, il faut donc installer qemu-agent.
```
# apt install qemu-agent
```
on passe par topi pour pouvoir acceder au reseaux configure' (config local ssh proxyjump)
TODO!! on a oublie de faire le setup du resolv.conf (à faire quand on sera à la blue)
nameserver 80.67.169.12
nameserver 80.67.169.40
===== Configuration de ssh local =====
Pour avoir accès à toutes les machines depuis un PC et fair tourner ansilbe.
En passant par topi comme proxy jump.
En ajoutant les ip 10.0.10.x de nam et bour dans son propre /etc/hosts.
En ajoutant l'ip 192.168.12:217 de topi dans son propre /etc/hosts.
En configurant ssh (~/.ssh/config) pour y mettre le proxyjump.
https://gitlab.domainepublic.net/Neutrinet/infra/-/blob/master/group_vars/all
===== Placement physique des nouveaux serveurs =====
On éteint ce qui tourne chez i3D pour un faire un backup avec les outils de Proxmox, koolox.
On se met en route vers 16h00 à 4 dans la pitite voiture de Eve, avec tobi, nam et bour dans le coffre.
Trop mignon. ^_^
À partir d'ici on a pas pris le temps de prendre des notes, mais en résumé…
* arrivé sur place tranquillou,
* installation du matos physique dans l'armoir, peinard,
* on allume et on est content parcqu'on ping, sans peine,
* tiens… noooooon… mais pourquoi le backup de la vm du VPM s'arrète à 20% avec une i/o error m(.
* on panique pas,
* une idée salvatrice : ```# ddrescue vm-107-disk-0.qcow2 clone-vm-107-disk-0.qcow2```
* on laisse faire la **magie de [[https://www.gnu.org/software/ddrescue/ddrescue_fr.html|gddrescue]]**
* pendant se temps on _(mais devinez qui?)_ dit à Verixi qu'on est paré à migrer
* tiens… il y avait aussi bird qui tournait encore sur troll… mais quel troll celui-là !
* on allume depuis chez Verixi … et merci _(vous savez probablement qui)_ … ça fonctionne 8-)
* on chipote un peu pour les ipv6 qui s'annonce depuis edge-02 mais par edge-01… une connerie… comme toujours ^_^
* on commence un rsync pendant ce temps on _(mais devinez qui?)_ dit à Verixi qu'on est prêt·e·snc des backups des vms entre i3d et bxl _(±60meg/s, c'est peace)_
* on béni l'auteur de gddresue
* on commence la restauration des
===== Migrer l'annonce des sessions BGP =====
Tiens ? Infra i3d reste joignable par edge-router (avec son interface ip i3d)
==== Calendrier déménagement ====
* Avant le 8 : mail + mattermost aux membres à propos des changements d'IP (8/8) et du déménagement (15/8)
* Samedi 8 : déménagement logique (IPs) + pitit downtime
* Avant le 15 : mail + mattermost aux membres à propos du déménagement physique
* Samedi 15 : déménagement physique chez Verixi + long downtime
* Samedi 22 : rien à voir, déménagement des triplettes
* Avant le (5 jours ouvrables avant access) : enregistrer la plaque de la voiture et les cartes d'identités chez i3d
* Avant le 31 : récupérer les serveurs chez i3d
* Avant la fête : mail, mattermost, pigeons, sémaphores, radio et on fait la fête
* Après le 31 : double pendaison de crémaillère, méga fiesta, etc et ramener tous les anciens et les anciennes de NeutriCorp
==== Reste à faire =====
* le soucis avec keepalived
* le backup automatique (proxmox + rsync)
* la HA dans proxmox
* la nsftab (pour keepalived)
* le ipv6 management qu'il faudrait isoler
* Récupérer les serveur de i3d
* on prévoit le lundi 24 août 2015
* Enregistrer la voiture
* récupérer le code de l’armoire
* faire des record dns pour les edges, mais c'est plus esthétique qu'autre chose
{{tag>infra}}