$./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
| outil | ce que ça fait | quand s’en servir |
|---|---|---|
SSH -L | un port TCP à travers la session | un service, un boulot |
SSH -D | SOCKS, les apps optent | navigateur, client IRC qui parle SOCKS |
SSH TUN / -w | couche 3 via SSH | rarement. TCP-sur-TCP. mal |
| proxy TLS | envelopper ou terminer un port | ./proxies |
| WireGuard | overlay UDP, AllowedIPs est la politique | quand tu as vraiment besoin d’un net, pas juste de SOCKS |
| VPN userspace | pas de module kernel, plus de CPU | si 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.