Pont - Passerelle - Pb masquerade & Cie...

Résolu
Djef-69 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
Djef-69 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Un petit message désespérée, voila la situation :

je suis en train de me faire un petit reseau perso avec 3 Pc (le détail se trouve plus bas !)

et mon/mes problème : le pc principal accede au net sans aucun probleme(j'écris ce message avec celui-ci!), il accede au server web tout aussi simplement ( ssh/samba passe sans aucun problème ! donc aucun problème avec le pont!).
mais voila, impossible de faire communiquer le server web avec internet, il n'arrive pas a résoudre les adresses... et pourtant il ping mon Pc principal, il ping la passerelle... mais impossible de pinger le net... j'ai tout repris dans tous les sens et je crois que j'en suis au stade ou de toute façon si j'avais un éléphant devant mes yeux je ne le verais pas... si une bonne ame pouvais jetter un petit coup d'oeil et m'indiquer une voie, là je séche lamentablement...

Les détails :

- mon Pc principal : W-xp config ip : 192.168.0.1 passerelle :192.168.0.4

- un server web : Debian Lenny config ip : 192.168.0.2 passerelle : 192.168.0.4
commande route :
dst : passerelle : Genmask : Indic : Iface :
localnet * 255.255.255.0 U eth0
default 192.168.0.4 0.0.0.0 UG eth0

-une passerelle : Debian Lenny config ip :
eth0 : 0.0.0.0 promisc, relié au Pc principal
eth1 : 0.0.0.0 promisc, relié au server Web
un pont entre ces deux interfaces : br0 ip 192.168.0.4
eth2 : ip par dhcp, relié au net...

commande route :
dst : passerelle : Genmask : Indic : Iface:
localnet * 255.255.255.0 U br0
mon.ip.net * 255.255.252.0 U eth2
default ip-1.net... 0.0.0.0 UG eth2

mes règles ip-tables : les principales...pour ne pas trop surchager...
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE -o $INET_IFACE -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s $S_WEB -o $INET_IFACE -j MASQUERADE
$IPTABLES -t nat -A POSTROUTING -s $PC_PERS -o $INET_IFACE -j MASQUERADE

$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT

$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P INPUT ACCEPT
$IPTABLES -t mangle -P FORWARD ACCEPT
$IPTABLES -t mangle -P POSTROUTING ACCEPT

$IPTABLES -A FORWARD -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A FORWARD -i $LAN_IFACE -o $INET_IFACE -j ACCEPT
$IPTABLES -A FORWARD -i $INET_IFACE -o $LAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $INET_IFACE -j tcp_packets
$IPTABLES -A FORWARD -p udp -i $INET_IFACE -j udp_packets
$IPTABLES -A FORWARD -p icmp -i $INET_IFACE -j icmp_packets
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix " frwd !corrsp mort pckets "

4 réponses

mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Je ne domine pas vraiment iptables mais pour que ton serveur apache soit accessible de l'extérieur, il faut que ta passerelle forwarde le port 80 vers le port apache (a priori 80 cf /etc/apache2/ports.conf) de 192.168.0.2.

Exemple sur une livebox, sachant que mon PC a pour IP locale 192.168.1.15 :
Nom  Activé 	 Protocole 	 Du Port 	 Au Port    IP locale 	 Interface
apache 	Oui           TCP 	     80 	 80 	 192.168.1.15 	 ppp0


Client vs serveur

Attention !
Le fait de pouvoir accéder à un serveur extérieur (donc en tant que client) qu'il soit web apache ou autre n'a aucun rapport avec le fait que son propre serveur ssh ou apache soit accessible s'il est derrière un routeur ou une passerelle. Typiquement un utilisateur peut accéder à un serveur apache (donc aller sur le Net) alors qu'il n'en a pas, ou bloque le port 80.

En pratique quand quelqu'un cherche à se connecter sur un serveur chez toi (par exemple apache, donc le port 80) il se connecte sur le port 80 de ton ip publique (dans ton cas il va donc chercher un serveur apache sur ta passerelle même si apache n'est pas installé dessus).

Dans ton cas comme apache n'est pas sur la passerelle ça va afficher dans le navigateur une page d'erreur. Si par contre ta passerelle redirige le port 80 vers la bonne ip locale et le bon port (cf /etc/apache2/ports.list de ton serveur apache, tu mets le numéro de port disponible que tu veux), alors il accèdera à ton serveur.

Plusieurs serveurs apache derrière une passerelle ?

Note que tu peux aussi mettre plusieurs serveur apache (par exemple un sur 192.168.0.1 et un sur 192.168.0.2) écoutant tout deux sur le port 80. Par contre au niveau de ta passerelle il faudra travailler avec deux ports différents (par exemple 80 et 8080) et rediriger par exemple :
- le port 80 vers le port 80 de 192.168.0.1,
- le port 8080 vers le port 80 de 192.168.0.2.

Concrètement un utilisateur extérieur devra alors taper dans un cas http://xx.xx.xx.xx (sous-entendu http://xx.xx.xx.xx:80) ou http://xx.xx.xx.xx:8080 pour joindre le bon serveur apache.

Remarque :
Sur une livebox ce n'est cependant pas possible (on ne peut rediriger un port vers une même valeur de port) mais sur une freebox si. J'imagine qu'avec des iptables c'est également possible. Mais ce n'est pas un problème très grave car il suffit alors de mettre 8080 dans /etc/apache2/ports.conf pour le serveur apache correspondant... Si tu corriges un fichier de configuration apache n'oublie pas de le relancer pour que les modifications soient prises en compte. En root :
/etc/init.d/apache2 restart

Attention

Vérifie aussi au niveau de tes iptables et autres pare feu que tu ne bloques pas les requêtes http venant de l'extérieur.

Pour faire tes tests, il faudrait idéalement te connecter depuis une machine extérieur, car un routeur ou une passerelle traite généralement différement les requêtes internes à un réseau local ou venant de l'extérieur.

Tu peux aussi pour tests te connecter sur une machine en ssh à l'extérieur de ton réseau local, puis depuis cette machine lancer un navigateur sur ton ip publique (w3m, links...).

En espérant que ça t'aide dans tes recherches,
Bonne chance
0
Djef-69 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Salut mamiemando !

Un grand merci opur tous ces détails surtout pour l'interet que tu porte a mes galères, tout ces renseignements me seront fortement utile ! mais le problème est que je n'en suis pas encore là! en fait j'en suis a l'étape d'essayer de faire acceder le server au web, et non l'inverse!


encore merci pour ton implication, pas le temps de creuser plus pour le moment, (en fait je suis en cours là!)
0
mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Tu veux dire qu'actuellement 192.168.0.2 n'arrive pas à accéder au Net ?
Il y a un truc qui me paraît bizarre en fait mais je ne suis pas experte sur les ponts réseau, c'est que tes deux interfaces eth0 et eth1 appartiennent au même sous réseau. Je ne sais pas si ça peut jouer, il faudrait regarder les routes. Est ce que tu peux me copier coller pour chacun des PC le résultat de :
/sbin/route -n
cat /etc/resolv.conf
ping -c2 192.168.0.1
ping -c2 192.168.0.2
ping -c2 192.168.0.4
nslookup www.google.fr

Bonne chance
0
Djef-69 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,

Et bien, merci tout plein, je ne sais que dire.... merci merci merci merci merci merci merci merci merci
merci merci merci merci merci merci merci merci merci merci merci merc imerci merci merci merci merci merci
merci merci merci merci merci merci merci merci merci merci merci merc imerci merci merci merci merci merci
merci merci merci merci merci merci merci merci merci merci merci merc imerci merci merci merci merci merci
et... merci !!!!!

Je m'explique, en fait le problème venais, ....... de mon resolv.conf de mon server web!!!!! qui était
vide, désespérement vide... chose très étrange pourtant je pensais avoir correctement configuré mon
fichier interfaces... je l'avais vérifié une bonne vingtaine de foi... sans allez plus loin, quand je disais que je ne
serais pas capable de voir un éléphant même s'il était sous mon nez ! j'étais en deça de la vérité !
Même pas été capable de faire le lien, impossible de résoudre... fichier résolv.conf, chose très étrange
qu'il soit vidé alors que je ne suis même pas en dhcp... du coup je l'ai remplis a la main, retiré les droits d'écriture dessus et depuis, oh merveille !!! ça marche!!! bonheur!!!

Autrement, pour info, le pont est justement fait pour relier deux reseaux appartenant au même sous-reseau,
il est totalement transparent, se contentant de "faire passer les datagrammes", ce qui donne le grand avantage de
pouvoir relier deux reseau sans intégralement transformer la configuration des deux reseau reliés il intervient majoritairement au niveau 2 : liaison du proto ip.
il est possible en plus de faire du filtrage sur ce qui est transmis, ce qui offre comme possibilité, dans des configuration différentes de la mienne (je l'ai mis en place plus par volonté de savoir le faire en quelque sorte) de faire un filtrage "invisible", je lui ai attribué un ip pour pouvoir l'utiliser comme passerelle, mais c'est loin d'être indispensable ! dans une configuration ou il se contenterais de faire le passage, donc sans adresse ip attribuée il serais totalement invisible (pas d'adresses sur les cartes réseau, ni sur le pont donc n'apparaissant pas comme intermediaire au tracert!) difficile d'attaquer quelque chose qu'on ne voit pas et auxquel on ne peut donc acceder! et en plus il parait que c'est plus rapide (concerne les couches hautes, moins d'étapes donc!)

Enfin je te remerci aussi pour tous les détails de redirection de port, qui étais la prochaine étape dans la construction de mon réseau perso pour du ssh & autres joyeuserie !

Longue vie a toi

Dav.
0