kire@net:~$ uptime depuis 1998 • ddos: armé • vhosts: chargé • identd: actif • bouncer: en ligne • bot: +o et protège #channel

$./vpn

Un shell n’est pas un produit VPN.

Lance WireGuard depuis le compte. C’est permis. On a les ressources. C’est quand même un login Linux, pas un SKU VPN. Le login reste ssh user@kire.net. Les hostnames et les adresses font rire quand ils résolvent à l’envers.

Ce que cette page est. Une comparaison honnête : tunnel SSH contre SOCKS contre WireGuard sur un shell multi-tenant. Un modèle mental minimal à un pair. Des formes de config. Des limites qu’on ne va pas maquiller.

Pour qui. Tu as déjà un shell et une raison pour laquelle un port forward ne fait pas le travail. Si la raison est « je veux un VPN commercial », achète un VPN commercial. Si la raison est « le Wi-Fi du café déteste IRC », commence par ./ssh-forwarding et -D.

$why-a-kire-shell

Toujours allumé, DDoS devant, ident et vhost déjà gérés. Le capot de ton portable n’est toujours pas de l’infrastructure. Rien de tout ça ne transforme le compte en nœud de sortie pour le quartier.

$cheat-sheet

outilce que ça faitquand s’en servir
SSH -Lun port TCP à travers la sessionun service, un boulot
SSH -DSOCKS, les apps optentnavigateur, client IRC qui parle SOCKS
SSH TUN / -wcouche 3 via SSHrarement. TCP-sur-TCP. mal
proxy TLSenvelopper ou terminer un port./proxies
WireGuardoverlay UDP, AllowedIPs est la politiquequand tu as vraiment besoin d’un net, pas juste de SOCKS
VPN userspacepas de module kernel, plus de CPUsi le WG kernel n’est pas là. sois poli sur une machine partagée

$for-beginners

SSH -L déplace un port. SSH -D est un proxy SOCKS : chaque app choisit de s’en servir. WireGuard est un tunnel UDP point à point (ou hub-and-spoke) avec une table de routage à clés crypto. AllowedIPs est cette table. Pense « un pair, un /32 » avant de penser « full tunnel 0.0.0.0/0 ».

Un tunnel suffit quand le client parle SOCKS ou que tu n’avais besoin que d’un port. Un VPN full-tunnel, c’est comme tu fais un trou noir de la session SSH qui a monté le VPN. C’est drôle une fois.

WireGuard kernel veut un module et en général des privilèges qu’un shell partagé ne te donne pas. On ne promet pas CAP_NET_ADMIN. On ne promet pas modprobe wireguard. Les implémentations userspace existent et brûleront plus de CPU. Sur une machine multi-tenant c’est une question de politesse, pas un flex.

Lis l’AUP et demande au staff avant que ça devienne un nœud de sortie, un VPN familial, ou une histoire de bande passante. Pas de VPN à bande passante illimitée. Pas de « j’ai pointé toute la maison dessus ».

$for-people-who-already-know-the-flags

Si wg / wg-quick ne sont pas là, stop. Compile dans $HOME seulement si tu sais déjà que tu as le droit de créer un device tun. Les adresses plus bas sont des exemples, pas une allocation.

Le shell comme pair « serveur »

# /home/user/wg0.conf  — example only
[Interface]
Address = 10.13.37.1/24
ListenPort = 51820
PrivateKey = SHELL_PRIVATE_KEY
# MTU = 1280

[Peer]
PublicKey = LAPTOP_PUBLIC_KEY
AllowedIPs = 10.13.37.2/32

Le portable comme pair client

[Interface]
Address = 10.13.37.2/24
PrivateKey = LAPTOP_PRIVATE_KEY
# DNS = ...   # set it on purpose or not at all

[Peer]
PublicKey = SHELL_PUBLIC_KEY
Endpoint = shell.kire.net:51820
AllowedIPs = 10.13.37.1/32
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0, ::/0, c’est comme tu perds le chemin SSH vers l’endpoint sauf si tu policy-route la vraie adresse du shell hors du tunnel. Ajoute un /32 (et /128) pour kire.net / l’IP assignée via ip rule / Table / FwMark avant de monter le full tunnel. Si tu ne sais pas comment, ne fais pas de full tunnel.

IPv6 : fais-le exprès ou laisse tomber. Un chemin v6 à moitié allumé est une fuite DNS avec des étapes en plus. DNS : si le tunnel est up et que le résolveur stub parle encore au café, tu as fuité. S’il ne parle qu’à travers le tunnel, tu as intérêt à pouvoir encore SSH.

Keepalive 25s, c’est le charme NAT habituel. MTU : commence prudent (1280) si ça cale. Les trous noirs ICMP existent encore.

Userspace contre kernel : le kernel est moins cher. Le userspace (wireguard-go, boringtun, etc.) apparaîtra dans top. Shell partagé. Sois ennuyeux. Un pair. Des AllowedIPs petits. Pas de transit pour les amis.

$dont

  • Sortie VPN publique. NAT de quartier. « Mes amis Discord passent par KIRE. » Non.
  • Open proxy sous un autre nom. Minage. Scanners. Services qui ne sont pas à toi.
  • Supposer root, des modules, ou CAP_NET_ADMIN.
  • Full tunnel sans contournement pour l’endpoint SSH.

Si ce paragraphe t’a surpris, utilise SSH -D et sors.

$smaller-tool

tunnel SSH · proxy TCP/SSL · WireGuard. Le plus petit outil qui fait le travail. Ce n’est en général pas WireGuard.