Le contexte
Je voulais réserver l’interface Proxmox et un terminal web à mon réseau local.
Dans Nginx Proxy Manager, rien de plus simple : une Access List qui autorise
le LAN, et un deny all ajouté automatiquement.
L’interface affichait bien « LAN Only » sur les hôtes… et pourtant, depuis la 4G, la page de connexion Proxmox s’affichait toujours.
Le diagnostic
Les logs d’accès montraient des requêtes venant d’une IP publique avec un code 200 :
tail -f /data/logs/proxy-host-*_access.log
Et la configuration générée ne contenait aucune directive allow ou deny :
grep -n "allow\|deny" /data/nginx/proxy_host/*.conf
La cause
Pour que la console noVNC de Proxmox fonctionne, j’avais mis un bloc
location / { … } complet dans l’onglet Advanced de l’hôte.
NPM écrit normalement les règles de l’Access List dans son propre location /.
Quand on en définit un soi-même, NPM ne génère plus le sien… et les règles
disparaissent avec, sans le moindre avertissement.
La correction
Ajouter les règles directement dans le bloc personnalisé :
location / {
allow 192.168.0.0/24; # votre LAN
deny all;
proxy_pass https://IP_DU_PROXMOX:8006;
# … reste de la configuration
}
Le piège suivant : se bloquer soi-même
Depuis le LAN, le nom de domaine résout vers l’IP publique. La requête fait un aller-retour par la box, qui remplace l’IP source par la sienne : NPM refuse donc l’accès.
Solution : un enregistrement DNS local (Pi-hole) qui fait pointer ces noms directement vers l’IP de NPM.
À retenir
- Un
location /dans Advanced = l’Access List de NPM ne s’applique plus. - Toujours tester depuis l’extérieur (4G) après avoir restreint un accès.
- Un service « LAN only » a besoin d’un DNS local, sinon on s’enferme dehors.