Bonjour,
J'ai un serveur (192.168.4.6) avec deux cartes réseaux:
192.168.4.0/24 (device: lan)
192.168.1.0/24 (device: adsl)
Je souhaite accéder depuis le lan au modem adsl, dont l'ip ($modem) vaut 192.168.1.2.
Depuis la passerelle, j'ai bien accès au modem.
Par contre, depuis le client 192.168.4.10, je voudrais faire quelque chose comme :
curl 192.168.4.6:1111
qui me renverrait sur 192.168.1.2:80
J'ai autorisé en INPUT la machine 192.168.4.10:
iptables -A INPUT -i lan -s 192.168.4.10 -j ACCEPT
J'accepte également ce qui vient du modem
iptables -A INPUT -s "$modem" -j ACCEPT
En OUTPUT, j'ai une policy par défaut qui est d'accepter (sans autre rêgle).
iptables -P OUTPUT ACCEPT
Ensuite, je passe au nat pour réécrire le header ip et lui donner la bonne destination:
iptables -t nat -I PREROUTING -j DNAT -i lan -p TCP --dport 1111 --to-destination "$modem":80
J'ai lu qu'il fallait faire ça également:
iptables -t nat -A POSTROUTING -j MASQUERADE
Évidemment, ça ne fonctionne pas.
Avec un iptables -L -t nat -vxn , je vois que je passe dans les deux régles nat.
Pouvez-vous me dire ce qui manque ?
Merci.
# ipforwarding desactivé sur la passerelle ?
Posté par NeoX . Évalué à 4. Dernière modification le 13 novembre 2014 à 17:37.
Les regles INPUT (OUTPUT) ne servent que pour les flux qui arrivent(sortent) sur la passerelle, elles n'ont pas d'impactent sur les flux qui traversent la passerelle.
Tu as donc autorisé le poste client (4.10) à se connecter à la passerelle (pour le ssh par exemple)
Tu as autorisé la box internet à se connecter à la passerelle (pour la telemaintenance, pourquoi pas)
Mais nul part tu n'as autorisé la traversée de la passerelle.
Dans un premier temps pour tout forwarder ce serait un
iptables -A FORWARD -j ACCEPT
encore faut-il que l'ip_forward soit actif sur la passerelle,
que donne, sur la passerelle, les commandes :
si tu as des zeros à chacune de ces commandes, c'est que l'ip forward n'est pas activé, donc ca ne marchera pas.
tu peux commencer par un simple
echo 1>/proc/sys/net/ipv4/ip_forwarding
pour voir si cela resoud ton souci,
si oui, alors tu peux mettre le reglage en dur dans le fichier /etc/sysctl.conf
net.ipv4.ip_forwarding=1
il s'activera automatiquement au prochain demarrage
[^] # Re: ipforwarding desactivé sur la passerelle ?
Posté par jseb . Évalué à 2.
Merci pour ta réponse très détaillée.
J'avais fait l'impasse sur FORWARD, pensant que vu que je me connectais à ip_passerelle:1111, c'était INPUT qui était concerné.
Grâce à ta réponse, j'ai compris qu'en réalité, la chaine PREROUTING réécrit tout de suite l'entête transformant en FORWARD ce qui était INPUT.
pour le FORWARD, j'ai donc fait comme ça:
Et le retour depuis le modem se fait grâce au générique:
Ça marche très bien maintenant, et tu m'as enlevé une jolie épine du pied.
Discussions en français sur la création de jeux videos : IRC libera / #gamedev-fr
[^] # Re: ipforwarding desactivé sur la passerelle ?
Posté par NeoX . Évalué à 3.
content que ca ait pu t'aider.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.