Accès au LAN en VPN

Bonsoir à tous,

J’ai configuré un serveur VPN (pptp v1.3.4) sous Debian 7.1. Je parviens à me connecter de l’extérieur au serveur mais je n’ai pas accès aux machines de mon LAN.
Le forwarding est activé dans /proc/sys/net/ipv4/ip_forward. Mon firewall est géré par iptables coté client et coté serveur.

Du coté du serveur les règles sont définies comme suit :

#!/bin/bash

### BEGIN INIT INFO
# Provides:          firewall_rules
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

# Vider tables actuelles
iptables -t filter -F

# Vider les règles personnelles
iptables -t filter -X

# Interdire toute connexion entrante et sortante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# ---

# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

# ICMP (Ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# ---

# SSH In
iptables -t filter -A INPUT -p tcp --dport 2222 -j ACCEPT

# SSH Out
iptables -t filter -A OUTPUT -p tcp --dport 2222 -j ACCEPT

# DNS In/Out
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT

# NTP Out
iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

# WWW
iptables -t filter -A INPUT -p tcp --dport http -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport http -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport https -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport https -j ACCEPT

# VPN Connexion
iptables -t filter -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 8245 -j ACCEPT
iptables -t filter -A INPUT -p gre -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 1723 -j ACCEPT
iptables -t filter -A OUTPUT -p gre -j ACCEPT

Je précise que même avec le firewall désactivé sur le serveur et sur le client un simple ping ne passe pas.

Merci d’avance pour vos réponses.

Warri0ux

Salut !

Il manque des règles de forward pour que ton subnet vpn communique avec celui de ton lan :

Par exemple c’est ce que j’ai dans ma conf (règles non exhausitves;) . Il faut du routage avancé entre ton vpn et ton lan

Il manque effectivement des règles dans la chaîne FORWARD pour autoriser des paquets à traverser la machine. Pas besoin de routage avancé mais comme le serveur VPN n’est pas la passerelle par défaut du LAN, il faut aussi que les paquets émis par les machines du LAN à destination du VPN soient routés correctement. Pour cela, il faut ajouter une route pour la plage d’adresses du VPN avec l’adresse du serveur VPN comme passerelle soit sur chaque machine du LAN devant communiquer avec le VPN, soit sur le routeur servant de passerelle par défaut du LAN (en supposant qu’il s’agit d’un vrai routeur sachant router et pas d’une bête “NAT-box”).

Hello,

Je pense qu’on ne se comprend pas sur les termes, pour moi un routage élémentaire se fait avec ip, route, et les tables de routage. Un routage avancé se fait avec iptables ou shorewall

De plus la route élémentaire (selon ma définition) se fait via la conf openvpn (préalablement faite pour ses besoins) qui push les routes, il n’y a pas besoin d’interventions manuelles (sauf exceptions), donc je ne comprends pas ton raisonnement. S’il fallait pusher ses routes a la main a chaque fois ca serait l’enfer…

Du coup est ce que tu peux m’expliquer ton raisonnement Pascal ?

Oui.

Non, pas nécessairement. On peut faire du routage avancé sans iptables (ni shorewall ou équivalents qui ne sont que des générateurs de règles iptables). Par exemple du routage basé sur l’adresse source ou l’interface d’entrée, qui ne nécessite pas de règle iptables mais une simple règle de routage

Mais ici le routage basique, basé sur l’adresse de destination, est suffisant.

Pour les routes à créer sur les deux machines entre lesquelles le VPN est établi. Mais tu conviendras qu’openvpn ne peut pas créer de route sur d’autres machines. Or si d’autres machines du LAN d’un côté ou de l’autre du VPN ont besoin de communiquer à travers le VPN, elles (ou le routeur leur servant de passerelle par défaut) doivent avoir la route qui va bien.

Ai-je été assez clair ?

Hello,

Merci pour les précisions, j’y vois plus clair du coup :wink: