OVH Cloud OVH Cloud

SNAT avec IPTABLES

25 réponses
Avatar
Mardaga Stephan
Bonjour,

je n'arrive pas à faire fonctionner un serveur Debian Woody 2.4.18-bf2 en
SNAT.

Le ping envoyé du PC2 (192.168.1.2) vers le PC1 (192.168.0.1), passe bien à
travers le serveur mais l'adresse source reste la même (vérifier avec
sniffer) et donc le ping ne reçoit pas de réponse.

Ce que je ne comprends pas : dans la table nat, la destination reste
0.0.0.0/0 que je mette dans la commande iptables -o eth0 ou -o 192.168.0.50.

Y a un truc que je ne dois pas saisir et j'ai besoin de votre aide.

merci d'avance,

Stephan


Voici la config :
1. ip_forward = 1
2. lsmod :
Module Size Used by Not tainted
ipt_MASQUERADE 1216 1 (autoclean)
iptable_nat 12660 1 [ipt_MASQUERADE]
ip_conntrack 12684 1 [ipt_MASQUERADE iptable_nat]
ip_tables 10432 4 [ipt_MASQUERADE iptable_nat]
3. la commande :
/sbin/iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth0 -j MASQUERADE
4. la table NAT :
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.1.0/24 0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

La plate-forme :

---- PC 1---- 192.168.0.x ----Eth0 DEBIAN Eth1------ 192.168.1.x ------ PC
2

Ifconfig de la Debian:
eth0 Link encap:Ethernet HWaddr 00:A0:24:AC:EC:32
inet addr:192.168.0.50 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:263 errors:0 dropped:0 overruns:0 frame:0
TX packets:354 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:28988 (28.3 KiB) TX bytes:32801 (32.0 KiB)
Interrupt:11 Base address:0xc000

eth1 Link encap:Ethernet HWaddr 00:60:8C:00:5B:BE
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:172 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:18222 (17.7 KiB) TX bytes:1746 (1.7 KiB)
Interrupt:10 Base address:0x300



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

10 réponses

1 2 3
Avatar
Mardaga Stephan
>
Un truc que je ne comprend pas : pourquoi faire du NAT, alors qu'un
simple routage semblerait suffire?



Pour sûr !
Je prépare une config pour raccorder le serveur linux avec un patte sur
internet et une autre sur le réseau local.
L'exemple donné est une plate-forme de test.
La partie 192.168.0.x de eth0 devra dans l'avenir se connecter sur un modem
câble.

Stephan



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Charles Plessy
On Wed, Aug 25, 2004 at 11:54:05AM +0200, Mardaga Stephan wrote :
>
> Un truc que je ne comprend pas : pourquoi faire du NAT, alors qu'un
> simple routage semblerait suffire?
>
Pour sûr !
Je prépare une config pour raccorder le serveur linux avec un patte sur
internet et une autre sur le réseau local.
L'exemple donné est une plate-forme de test.
La partie 192.168.0.x de eth0 devra dans l'avenir se connecter sur un modem
câble.



Dans ce cas, c'est bien de la mascarade, et pas du SNAT, dont tu as
besoin.

NET2.168.0.0
MASK%5.255.255.0
IFACE=eth0

iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -s $NET/$MASK -o $IFACE -j MASQUERADE

Ceci efface toutes les règles, et met la mascarade en place. Remplace
par les valeurs kivonbien©®. C'est brutal, mais tu n'as pas dit que tu
avais besoin d'un pare-feu ;)

echo 1 > /proc/sys/net/ipv4/ip_forward

Ceci permet le forwarding.

Pour faire les choses à la manière debian :

mettre ip_forward à 1 dans /etc/network/options

et

mettre les script lançant la mascarade dans /etc/network/if-up.d,
avec le bon nom d'interface.

--
Charles


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
François Boisson
> Oui je vide bien la table et fait un networking restart.
Par ailleurs, il y a la commande iptables-save : serait-ce le moyen de
sauver la config qui sera lue à chaque démarrage du serveur ?
Les configs décrites sur le net parlent de script à faire soi-même.




Que donne route -n et iptables -L ?
Avatar
Charles Plessy
> > Oui je vide bien la table et fait un networking restart.
> Par ailleurs, il y a la commande iptables-save : serait-ce le moyen de
> sauver la config qui sera lue à chaque démarrage du serveur ?
> Les configs décrites sur le net parlent de script à faire soi-même.



lidlpenguin|charles|$ sudo iptables-save
# Generated by iptables-save v1.2.9 on Wed Aug 25 19:40:27 2004
*nat
:PREROUTING ACCEPT [1234:241410]
:POSTROUTING ACCEPT [26:1982]
:OUTPUT ACCEPT [26:1982]
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth0 -j MASQUERADE
COMMIT
# Completed on Wed Aug 25 19:40:27 2004
# Generated by iptables-save v1.2.9 on Wed Aug 25 19:40:27 2004
*filter
:INPUT ACCEPT [4276:597403]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3574:258287]
COMMIT
# Completed on Wed Aug 25 19:40:27 2004

=> avec un script maison, comme ce que j'ai posté 1/2 heure, tu as un
truc plus lisible, et tu peux utiliser des variables.

--
Charles


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Baptiste Mathus
Quoting Charles Plessy :
=> avec un script maison, comme ce que j'ai posté 1/2 heure, tu as un
truc plus lisible, et tu peux utiliser des variables.


C'est exactement ce que j'ai fait pour ma connexion ADSL. pppoe est du ppp, donc
lors de l'établissement de la connexion, tous les scripts du répertoire
/etc/ppp/ip-up.d (ou un truc proche) sont exécutés. C'est là que je fais le
echo "1" > ...ip_forward, active le nat et le firewall.

Symétriquement, dans /etc/ppp/ip-down.d je nettoie les tables de netfilter.

@++

--
Baptiste <Batmat> Mathus
Baptiste at Mathus point org
http://batmat.net
---------
You want to use GNU/Linux or Windows ?
You want to spend time or money ?


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
François Boisson
On Wed, 25 Aug 2004 12:50:07 +0200
"Mardaga Stephan" wrote:


>From: "François Boisson"


>Que donne route -n et iptables -L ?

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0
eth1 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0
0 eth0



dans ta commande

/sbin/iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth0 -j
MASQUERADE

Change le eth0 en eth1, ça devrait marcher.

François Boisson
Avatar
François Boisson
On Wed, 25 Aug 2004 12:50:07 +0200
"Mardaga Stephan" wrote:


>From: "François Boisson"



dans ta commande



/sbin/iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth0 -j
MASQUERADE



Change le eth0 en eth1, ça devrait marcher.



Je retire ce que j'ai écrit, j'avais mal lu...

François Boisson
Avatar
François Boisson
On Tue, 24 Aug 2004 22:42:29 +0200
"Mardaga Stephan" wrote:

Bonjour,

je n'arrive pas à faire fonctionner un serveur Debian Woody 2.4.18-bf2
en SNAT.

Le ping envoyé du PC2 (192.168.1.2) vers le PC1 (192.168.0.1), passe
bien à travers le serveur mais l'adresse source reste la même (vér ifier
avec sniffer) et donc le ping ne reçoit pas de réponse.

Ce que je ne comprends pas : dans la table nat, la destination reste
0.0.0.0/0 que je mette dans la commande iptables -o eth0 ou -o
192.168.0.50.

Y a un truc que je ne dois pas saisir et j'ai besoin de votre aide.





Pour ce dernier point, -o ne concerne que l'interface de sortie des
paquets (donc eth0 ici puisque eth0 correspond à 192.168.0.0/24), si tu
veux limiter la destination, il faut faire -d 192.168.0.50

Pour ton problème, je cherche le bug et ne le voit pas, tes règles ont
l'air correctes...

F.B
Avatar
Mardaga Stephan
> Bonjour,

je n'arrive pas à faire fonctionner un serveur Debian Woody 2.4.18-bf2
en SNAT.

Le ping envoyé du PC2 (192.168.1.2) vers le PC1 (192.168.0.1), passe
bien à travers le serveur mais l'adresse source reste la même (vérifier
avec sniffer) et donc le ping ne reçoit pas de réponse.

Ce que je ne comprends pas : dans la table nat, la destination reste
0.0.0.0/0 que je mette dans la commande iptables -o eth0 ou -o
192.168.0.50.

Y a un truc que je ne dois pas saisir et j'ai besoin de votre aide.





Pour ce dernier point, -o ne concerne que l'interface de sortie des
paquets (donc eth0 ici puisque eth0 correspond à 192.168.0.0/24), si tu
veux limiter la destination, il faut faire -d 192.168.0.50



Pour ton problème, je cherche le bug et ne le voit pas, tes règles ont
l'air correctes...



Un moyen serait de pouvoir "tracer" le paquet entrant-sortant style en mode
debug et/ou autres stats disponibles.
Unee idée et/ou des tools ?

Comme la commande #cat /proc/net/ip_conntrack :
icmp 1 26 src2.168.1.2 dst2.168.0.1 type=8 code=0 idQ2
[UNREPLIED] src2.168.0.1 dst2.168.1.2 type=0 code=0 idQ2 use=1
udp 17 26 src2.168.1.2 dst2.168.1.255 sport7 dport7
[UNREPLIED] src2.168.1.255 dst2.168.1.2 sport7 dport7 use=1
tcp 6 431999 ESTABLISHED src2.168.0.1 dst2.168.0.50 sport309
dport" src2.168.0.50 dst2.168.0.1 sport" dport309 [ASSURED]
use=1

où l'on voit bien le paquet ICMP sortir

Stephan




--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Mardaga Stephan
D'abord un merci aux personnes qui m'ont conseillé et qui m'ont permis
d'avancer.

J'ai comme l'impression que je tourne en rond et donc :
1. le problème a été reporté sur le forum de netfilter
http://www.netfilter.org/mailinglists.html#ml-user
2. une page web a été créee avec les détails (config - stats)
http://homeusers.brutele.be/smardaga/masquerade/

J'espère vous faire part d'une solution positive bientôt.

Stef



> Bonjour,
>
> je n'arrive pas à faire fonctionner un serveur Debian Woody 2.4.18-bf2
> en SNAT.
>
> Le ping envoyé du PC2 (192.168.1.2) vers le PC1 (192.168.0.1), passe
> bien à travers le serveur mais l'adresse source reste la même (vérifier
> avec sniffer) et donc le ping ne reçoit pas de réponse.
>
> Ce que je ne comprends pas : dans la table nat, la destination reste
> 0.0.0.0/0 que je mette dans la commande iptables -o eth0 ou -o
> 192.168.0.50.
>
> Y a un truc que je ne dois pas saisir et j'ai besoin de votre aide.
>


>Pour ce dernier point, -o ne concerne que l'interface de sortie des
>paquets (donc eth0 ici puisque eth0 correspond à 192.168.0.0/24), si tu
>veux limiter la destination, il faut faire -d 192.168.0.50

>Pour ton problème, je cherche le bug et ne le voit pas, tes règles ont
>l'air correctes...

Un moyen serait de pouvoir "tracer" le paquet entrant-sortant style en


mode
debug et/ou autres stats disponibles.
Unee idée et/ou des tools ?

Comme la commande #cat /proc/net/ip_conntrack :
icmp 1 26 src2.168.1.2 dst2.168.0.1 type=8 code=0 idQ2
[UNREPLIED] src2.168.0.1 dst2.168.1.2 type=0 code=0 idQ2 use=1
udp 17 26 src2.168.1.2 dst2.168.1.255 sport7 dport7
[UNREPLIED] src2.168.1.255 dst2.168.1.2 sport7 dport7 use=1
tcp 6 431999 ESTABLISHED src2.168.0.1 dst2.168.0.50 sport309
dport" src2.168.0.50 dst2.168.0.1 sport" dport309 [ASSURED]
use=1

où l'on voit bien le paquet ICMP sortir

Stephan




--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact








--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2 3