Gateway debian (Iptables forwarding)

Bonjour,

J’ai entrepris de mettre un Firewall entre mon routeur WRT54G et ma freebox (freebox n’étant pas en mode routeur).
Pour le moment j’aimerai que sans règle de filtrage les pc de mon lan (donc derrière le routeur) puissent accéder à internet (si je me trompe pas, le FW ne serait dans ce cas qu’une passerelle).

J’avoue que je suis un peu perdu dans le paramétrage que ce soit au niveau de ma debian qu’au niveau du routeur.

Voici ce que j’ai fait pourle moment :
J’ai 2 interfaces réseau eth0 et eth1.
Eth0 est l’interface reliée à la freebox et eth1 celle reliée au routeur WRT54G.
En ce qui concerne eth0 il est plutôt facile de la paramétrer puisqu’il suffit de laisser en dhcp.
Par contre pour eth1 je ne sais pas quoi mettre comme ip/masque; je suppose quelque chose comme 10.0.0.1/24.

Mon routeur à une adresse en 192.168.xx.yy/24
Je l’ai passé en mode “router” et non “gateway” dans le paramétrage avancé.
Le routeur me demande ces info :

  • Internet IP Address
  • Subnet Mask
  • Gateway
  • DNS

Sachant qu’il se trouve en mode “router” et non “gateway” pourquoi faut-il “Internet IP Address” ? (une adresse en 10.0.0.z/24 ?)
Je suppose que pour “gateway” il s’agit de l’ip de eth0 sur la machine debian.

Dans mes essais j’ai bien activer le forwarding ( echo 1 > /proc/sys/net/ipv4/ip_forward ).
Forcement comme je ne sais pas encore comment tout remplir, ça ne fonctionne pas.

Quelqu’un pourrait-il m’aider ?

Merci

Tu n’as pas de réponse car ton titre n’est pas du tout explicite.

C’est surtout que c’est incomprehensible, si j’ai bien compris ça donnerait

Tout d’abord il faut arrêter cette parano consistant à masquer l’adresse d’un réseau interne: Personne ici n’ira te pirater ta machine et savoir ce qu’il y a derrière le 192.168.xx.yy permet d’éviter les périphrases. Le routeur et la debian doivent être sur le même réseau. Ton routeur est à priori prévu pour avoir une entrée qui se configure par DHCP. Le plus simple est donc de mettre un serveur DHCP sur l’interface LAN de ta debian et de mettre le routeur en DHCP.

Le routeur ne présente aucun intérêt par rapport à un switch à ce stade.

En effet le routeur fait un peu office de switch dans ce cas, mais c’est pour avoir le wifi que je l’ai laissé :wink:.

J’ai réussi à aller sur le net avec les PC du lan. Par contre je n’arrive pas à faire en sorte que les serveurs soient accessibles sur le net. Mon serveur web, par exemple, n’est pas du tout accessible.
Pour simplifier la chose, j’ai branche mon serveur web directement à la debian. J’ai beau essayer plusieurs règles iptables, ça ne donne rien.

Voici le script iptables qui me permet de donner accès au net sur PC du lan (ci joint).

#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT


# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Don't forward from the outside to the inside.
iptables -A FORWARD -i eth0 -o eth0 -j REJECT

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

Pour que tout le monde est accès à mon serveur web j’ai essayé ça :

iptables -A FORWARD -p tcp --dport 80 -i eth0 -o eth1 -d $IP_SWEB -j ACCEPT
iptables -A FORWARD -p tcp --sport 80 -i eth1 -o eth0 -s $IP_SWEB -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -i eth1 --dport 80 -j DNAT --to $IP_WEB:80

eth0 : interface internet
eth1 : interface lan

Mais ce n’est pas très probant.

Si quelqu’un a des idées je suis preneur.

Pour simplifier au plus haut point j’ai réduit le script IPTABLES à ça :

#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

#J'accepte tout pour ne pas être bloqué pour le moment
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#Connexion vers serveur web
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.100:80

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

Je pensais qu’avec ça ça passerait, mais ce n’est toujours pas le cas… là je sèche.

Est ce que quelqu’un a une idée ?

Ton serveur n’est pas accessible de ton LAN par contre il est accessible de l’extérieur probablement. Si tu veux, en lisant le fil initié par Ricardo dans T&Astuces sur les parefeu, j’ai fait un script avec des fonctions (cf fin du fil) qui permet de régler ce souci, en gros il te faut faire

# requête venant du LAN
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 80 -j DNAT -i eth1 -d TON_IP_PUBLIC --to 192.168.1.100:80
# requête venant de l'extérieur
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 80 -j DNAT -i eth1 --to 192.168.1.100:80
# +++ NAT sur les requêtes venant du LAN
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 80 -s 192.168.1.0/24 -j MASQUERADE