VPN #1

Open
opened 2026-03-06 21:27:45 +01:00 by mickael.razzouk · 4 comments

En raison du manque d ip, il nous faut un VPN pour exposé nos services sur les internet.

Etat des lieux:

  • Tunnel site to site IPSEC sur un VPS gratuit oracle

Problème:

  • çà pète tout les 4 matin
  • beaucoup de friction pour les utilisateurs qui doivent devenir un "site"
  • MTU cursed sur tout les cluster qui clc.
En raison du manque d ip, il nous faut un VPN pour exposé nos services sur les internet. Etat des lieux: - Tunnel site to site IPSEC sur un VPS gratuit oracle Problème: - çà pète tout les 4 matin - beaucoup de friction pour les utilisateurs qui doivent devenir un "site" - MTU cursed sur tout les cluster qui clc.
Author
Owner

Setup du site to site depuis le campus de Vaise en local pour avoir acces au routeur avant la création du tunnel.
le site to site est de préférence indépendant du systeme de VPN des user.

On partirais sur un tunnel WG classic.
forwarding enabled
mascarade

Pour le vpn des utilisateurs, faut un autre truc

Setup du site to site depuis le campus de Vaise en local pour avoir acces au routeur avant la création du tunnel. le site to site est de préférence indépendant du systeme de VPN des user. On partirais sur un tunnel WG classic. forwarding enabled mascarade Pour le vpn des utilisateurs, faut un autre truc
Author
Owner

On part sur plusieurs choix:

On part sur plusieurs choix: - wireguard pour le tunel : https://docs.linuxserver.io/images/docker-wireguard/ - on conteneurise tout les composants pour etre indépendant des versions des packets debian donc pouvoir rollback - on utilise nftables pour remplacer iptables : https://www.procustodibus.com/blog/2021/11/wireguard-nftables/
Author
Owner

POC wg

on a poc le site to site wg avec @ednxzu, voici le bilan:

packages:
podman nftables

path de conf:
/etc/wireguard/wg0.conf

docker-compose.yml:

---
services:
  wireguard:
    image: lscr.io/linuxserver/wireguard:latest
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE #optional
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - /etc/wireguard:/config
      - /lib/modules:/lib/modules #optional
    network_mode: host
    restart: unless-stopped

a savoir:
pour enable les log du module wireguard:
echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control

### POC wg on a poc le site to site wg avec @ednxzu, voici le bilan: packages: podman nftables path de conf: /etc/wireguard/wg0.conf docker-compose.yml: ``` --- services: wireguard: image: lscr.io/linuxserver/wireguard:latest container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE #optional environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC volumes: - /etc/wireguard:/config - /lib/modules:/lib/modules #optional network_mode: host restart: unless-stopped ``` a savoir: pour enable les log du module wireguard: `echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control`
mickael.razzouk added spent time 2026-03-14 19:11:54 +01:00
4 hours
mickael.razzouk stopped working 2026-03-14 19:12:15 +01:00
9 seconds
mickael.razzouk deleted spent time 2026-03-14 19:12:35 +01:00
- 9 seconds
mickael.razzouk added spent time 2026-03-14 20:48:33 +01:00
2 hours
Member

Pour frr, une fois que le tunnel est up, on peut demarrer frr sur le router et le VPS "exit node", et etablir une session entre les deux pour advertise les routes derriere le site au vps.

root@vps:~# cat /etc/frr/frr.conf 
frr defaults traditional
hostname vps
!
router bgp 65002
 bgp router-id 100.64.0.1
 no bgp ebgp-requires-policy
 neighbor 100.64.0.2 remote-as 65001
 neighbor 100.64.0.2 description site-router
 !
 address-family ipv4 unicast
  neighbor 100.64.0.2 activate
  neighbor 100.64.0.2 soft-reconfiguration inbound
 exit-address-family
!
root@site-router:~# cat /etc/frr/frr.conf 
frr defaults traditional
hostname site-router
!
router bgp 65001
 bgp router-id 100.64.0.2
 no bgp ebgp-requires-policy
 neighbor 100.64.0.1 remote-as 65002
 neighbor 100.64.0.1 description vps
 !
 address-family ipv4 unicast
  neighbor 100.64.0.1 activate
  neighbor 100.64.0.1 soft-reconfiguration inbound
  network 10.1.0.0/24
 exit-address-family
!

le site-router advertise 10.1.0.0/24, atm toutes les conf sont en dur juste pour prouver que ca marche, ca sera plus dynamique en vrai.

root@site-router:~# cat /etc/frr/daemons 
bgpd=yes
ospfd=no
ospf6d=no
ripd=no
ripngd=no
isisd=no
pimd=no
ldpd=no
nhrpd=no
eigrpd=no
babeld=no
sharpd=no
staticd=yes
pbrd=no
bfdd=no
fabricd=no
vrrpd=no
root@site-router:~# cat /etc/frr/vtysh.conf 
service integrated-vtysh-config

on ajoute aussi ca pour demarrer frr dans le conteneur et pour pouvoir utiliser vtysh dans le conteneur.

coté conteneur, pas grand chose.

root@site-router:~# cat /home/debian/frr/docker-compose.yml 
---
services:
  frr:
    image: quay.io/frrouting/frr:10.5.3
    container_name: frr
    cap_add:
      - NET_ADMIN
      - SYS_ADMIN
      - NET_RAW
    volumes:
      - /etc/frr:/etc/frr
    network_mode: host
    restart: unless-stopped
Pour frr, une fois que le tunnel est up, on peut demarrer frr sur le router et le VPS "exit node", et etablir une session entre les deux pour advertise les routes derriere le site au vps. ``` root@vps:~# cat /etc/frr/frr.conf frr defaults traditional hostname vps ! router bgp 65002 bgp router-id 100.64.0.1 no bgp ebgp-requires-policy neighbor 100.64.0.2 remote-as 65001 neighbor 100.64.0.2 description site-router ! address-family ipv4 unicast neighbor 100.64.0.2 activate neighbor 100.64.0.2 soft-reconfiguration inbound exit-address-family ! ``` ``` root@site-router:~# cat /etc/frr/frr.conf frr defaults traditional hostname site-router ! router bgp 65001 bgp router-id 100.64.0.2 no bgp ebgp-requires-policy neighbor 100.64.0.1 remote-as 65002 neighbor 100.64.0.1 description vps ! address-family ipv4 unicast neighbor 100.64.0.1 activate neighbor 100.64.0.1 soft-reconfiguration inbound network 10.1.0.0/24 exit-address-family ! ``` le site-router advertise 10.1.0.0/24, atm toutes les conf sont en dur juste pour prouver que ca marche, ca sera plus dynamique en vrai. ``` root@site-router:~# cat /etc/frr/daemons bgpd=yes ospfd=no ospf6d=no ripd=no ripngd=no isisd=no pimd=no ldpd=no nhrpd=no eigrpd=no babeld=no sharpd=no staticd=yes pbrd=no bfdd=no fabricd=no vrrpd=no root@site-router:~# cat /etc/frr/vtysh.conf service integrated-vtysh-config ``` on ajoute aussi ca pour demarrer frr dans le conteneur et pour pouvoir utiliser vtysh dans le conteneur. coté conteneur, pas grand chose. ``` root@site-router:~# cat /home/debian/frr/docker-compose.yml --- services: frr: image: quay.io/frrouting/frr:10.5.3 container_name: frr cap_add: - NET_ADMIN - SYS_ADMIN - NET_RAW volumes: - /etc/frr:/etc/frr network_mode: host restart: unless-stopped ```
Sign in to join this conversation.
No milestone
No assignees
2 participants
Notifications
Total time spent: 6 hours
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
banquise/infrastructure#1
No description provided.