WIP: feat(vault01/isp): moving to next network architecture #320
No reviewers
Labels
No labels
awaiting
awaiting-author
awaiting
awaiting-reviewer
bot
deployed
Silenced alert
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
DGNum/infrastructure!320
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "vault01-isp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
5520c3295a42b362ae7642b362ae769d7e0bd7bb9d7e0bd7bb11a7950634b2617268914862c4a19e4862c4a19ee8629b18a0e8629b18a06f41f941756f41f94175402f5d090a402f5d090a8082fb82f28082fb82f24bf3af63d44bf3af63d41ae130ddf91ae130ddf98593e515448593e515449c46d8cf3d9c46d8cf3dde086c6217de086c6217730977efeb730977efeba839d8aeeaa839d8aeea4873c939774873c93977cdca7bf5d7WIP: feat(vault01/isp): moving to next network architectureto feat(vault01/isp): moving to next network architectureJe pense que c'est plutôt prêt now.
Le changement c'est le serveur DHCP (oui, seulement ça) : plutôt que d'avoir un serveur par user, on a un unique DHCP (kea) pour tout les user, qui distribue dans toute la range attribué pour les user sans contrainte de préfixe.
Ainsi chaque user à l'impression d'avoir toute la range du /16, même si ce n'est pas vraiment le cas, et ça permet d'avoir beaucoup plus de user, en partant du principe que l’immense majorité des users auront max 3 appareil connecté en simultané, et rare seront ceux qui en ont plus.
Pour éviter les problème de spoofing, le serveur DHCP créer la route vers l'IP attribué dans l'interface du vlan dynamiquement, et la del à la fin du lease.
Pour les traces légal : c'est un changement assez conséquents pour l'identification de la source du traffic, puisqu'on a plus l'information d'appartenance par le seul préfixe, une autre table est donc ajouté dans la db ulogd pour log les leases attribué par kea, et le script à été update en conséquence.
Pour la compatibilité des anciennes trace légal, j'ai fait un script qui peuplera cette table avec les actuel préfixe, en les faisant apparaître comme des leases qui ont duré jusqu'à cette migration. Pour assurer qu'on est pas de problème il faudra assurer que le kea ne se lance pas tant qu'on a pas migré, et que seul kea soit actif après migration.
Il faudrait faire plus de testing aussi, actuellement les tests que j'ai fait ne comportait pas 850 interfaces, et je suis preneur de relecture pour le script hook de kea
cdca7bf5d756a923f5e756a923f5e770a11fdaae70a11fdaae8f52aef9b58f52aef9b591bdaff17d91bdaff17d7ffe44d9e97ffe44d9e9b8042886f4b8042886f484cec55d60(testé avec des container dans https://git.dgnum.eu/lbailly/vxlan-organiser )
84cec55d60f1acf8b794f1acf8b794c0e226472ac0e226472ae9a1fc7693e9a1fc769380ad43093880ad4309386fb5ac5c12feat(vault01/isp): moving to next network architectureto WIP: feat(vault01/isp): moving to next network architecture6fb5ac5c12c6b09d7f18@ -0,0 +208,4 @@nixpkgs.overlays = [(_: super: {kea = super.kea.overrideAttrs (o: {patches = o.patches ++ [ ./0001-fix-multiple-interface-with-same-IP.patch ];Maybe un jour nixpkgs n'aura pas de patchs sur kea
@ -0,0 +262,4 @@after = [ "sys-subsystem-net-devices-enp67s0f0np0.device" ];bindsTo = [ "sys-subsystem-net-devices-enp67s0f0np0.device" ];script = builtins.concatStringsSep "\n" (builtins.map (name: "${lib.getExe pkgs.ethtool} -K enp67s0f0np0 ${name} off") [@ -0,0 +311,4 @@content = ''chain postrouting {type nat hook postrouting priority 100;ip saddr 10.0.0.0/16 ip daddr != 10.0.0.0/16 snat ip to 129.199.195.130-129.199.195.157Ce serait possible de faire une option
startRangeetendRange(ou un autre nom) pour stocker129.199.195.130et129.199.195.157, comme ça quand on changera ça sera plus simple ?Ou alors on (tu) changera bcp de choses quand on aura des vraies adresses
@ -0,0 +485,4 @@name = "netuserctl";runtimeInputs = [ pkgs.systemd ];text = concatStringsSep "\n" (map ({ interfaceName, ... }: ''networkctl "$1" ${interfaceName}'') userVlansc6b09d7f18ec4b97e983ec4b97e98323715a0de323715a0de32f86b65d4f2f86b65d4f4b968b472eView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.