Précédent   Forum des professionnels en informatique > Systèmes > Linux > Sécurité
Sécurité Vos questions sur la sécurité sous Linux/Unix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/04/2011, 09h59   #1
Invité régulier
 
Eric
Ingénieur de construction de réseaux
Inscription : avril 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Eric

Informations professionnelles :
Activité : Ingénieur de construction de réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : avril 2011
Messages : 8
Points : 5
Points : 5
Par défaut Iptables: Problème de routage locale

Bonjour,

Je cherche à filtrer une IP source à destination d'une VIP1 (192.168.60.95) pour la rediriger sur une VIP2 (192.168.60.96) en entrée du même serveur.
Pour cela , j'utilise la fonction POSTROUTING d'iptable avec du DNAT.
J'ai également positionné une rêgle FORWARD.

Je ne parviens pas à réaliser cette fonction, tcpdump voit les packets arriver mais ils ne sortent pas d'iptables pour re-rentrer sur la même machine.

Par contre, si je configure en VIP2 une VIP externe à la machine (non locale à la machine), ça fonctionne très bien, tcpdump snif le traffic jusqu'à la destination.

L'ip forwarding est pourtant bien activé.
Les log syslog me donnent:
device eth0 entered promiscuous mode
ip_rt_bug: 192.168.100.41 -> 192.168.60.96


Voici le script:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
iptables -X
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
 
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
 
#
# Initialization de la table NAT
#
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING    ACCEPT
#
# Activation du NAT (logiquement deja active par lvs)
#
echo "  + Activation du NAT"
echo 1 > /proc/sys/net/ipv4/ip_forward
#
# Routage et DNAT en entree
#
iptables -t nat -F PREROUTING
iptables -t nat -A PREROUTING -s 192.168.100.41/32 -p tcp -d 192.168.60.95/32 -j DNAT --to-destination 192.168.60.96
 
iptables -A FORWARD -p tcp -s 192.168.100.41/32 -d 192.168.60.96/32 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 
 
iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT
iptables -A INPUT -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 
iptables -A OUTPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -o lo -j ACCEPT
iptables -A OUTPUT -j ACCEPT
auriez-vous une idée svp ?

Merci d'avance,


Eric
breizho est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 11h49   #2
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
J'ai un peu de mal à comprendre le pourquoi de ce genre de fantaisies mais pourquoi pas.

Tu as essayé de faire des test sans placer les politiques par défaut sur DROP ? Parce qu'il me semble que tu n'autorises pas ce trafic en INPUT
becket est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 19/04/2011, 12h24   #3
Invité régulier
 
Eric
Ingénieur de construction de réseaux
Inscription : avril 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Eric

Informations professionnelles :
Activité : Ingénieur de construction de réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : avril 2011
Messages : 8
Points : 5
Points : 5
Bonjour,

un lvs est installé sur la machine et nous souhaitons faire un loadbalancing différent en fonction de la source , voila le pourquoi de cette fantaisie :-)

Sinon, je pense avoir tout autorisé en INPUT non (iptables -A INPUT -j ACCEPT)? Mais je vais tester ce que tu me dis...
breizho est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 16h52   #4
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
Quand tu dis que ça marche avec une VIP externe, tu veux dire qu'en modifiant 192.168.60.96 par autre chose dans ton script ci-dessus, ça marche (donc seulement les 2 lignes sont modifiées) ?

Code :
1
2
3
iptables -t nat -A PREROUTING -s 192.168.100.41/32 -p tcp -d 192.168.60.95/32 -j DNAT --to-destination 192.168.60.96

iptables -A FORWARD -p tcp -s 192.168.100.41/32 -d 192.168.60.96/32 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/04/2011, 17h04   #5
Invité régulier
 
Eric
Ingénieur de construction de réseaux
Inscription : avril 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Eric

Informations professionnelles :
Activité : Ingénieur de construction de réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : avril 2011
Messages : 8
Points : 5
Points : 5
Oui tout à fait.
En remplaçant 192.168.60.96 (ip local à la machine) par l'IP d'un autre équipement du même réseau ou pas, ça fonctionne.
breizho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 11h15   #6
Invité régulier
 
Eric
Ingénieur de construction de réseaux
Inscription : avril 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Eric

Informations professionnelles :
Activité : Ingénieur de construction de réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : avril 2011
Messages : 8
Points : 5
Points : 5
Alors ça ne fonctionne toujours pas et pourtant j'ai simplifier le script.
J'ai toujours le message d'erreur suivant dans /vr/log/message
Apr 20 10:10:21 lvs01 kernel: [61845.994476] device eth0 entered promiscuous mode
Apr 20 10:10:26 lvs01 kernel: [61850.987717] device eth0 left promiscuous mode


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
iptables -X
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
 
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
 
iptables -t nat -X
iptables -t nat -F
iptables -t nat -P PREROUTING ACCEPT
 
echo "  + Activation du NAT"
echo 1 > /proc/sys/net/ipv4/ip_forward
 
iptables -t nat -F PREROUTING
iptables -t nat -A PREROUTING -s 192.168.100.41/32 -d 192.168.60.95 -j DNAT --to-destination 192.168.60.96
 
iptables -A FORWARD -p tcp -s 192.168.100.41/32 -d 192.168.60.96/32 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 
iptables -A INPUT -j ACCEPT
iptables -A OUTPUT -j ACCEPT

Une idée ?
breizho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 20h32   #7
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Tu peux déjà supprimer ta ligne de forward qui ne sert à rien.
Ensuite, tu peux me dire ce que possède l'adresse vers quoi tu redirige ? Un sous-interface du serveur physique ? Un serveur virtuel ( avec quel soft ? ) ... etc
becket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/04/2011, 11h57   #8
Invité régulier
 
Eric
Ingénieur de construction de réseaux
Inscription : avril 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Eric

Informations professionnelles :
Activité : Ingénieur de construction de réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : avril 2011
Messages : 8
Points : 5
Points : 5
Salut,

oui une sous-interface du serveur physique.
Les flux arrivent sur eth0:0
certains (en fonction de la source) doivent être natés sur eth0:1

le soft en question est lvs et ipvsadm.

le cluster LVS monte automatiquement les interfaces via heartbeat.(cette partie là fonctionne)

Eric
.
breizho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 09h19   #9
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Tu peux donner le résultat de

Code :
1
2
3
4
5
6
7
8
 
ip addr
ip link 
ip rule 
ip route 
iptables -L -n -v
iptables -t nat -L -n -v
iptables -t mangle -L -n -v
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 17h41   #10
Invité régulier
 
Eric
Ingénieur de construction de réseaux
Inscription : avril 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Eric

Informations professionnelles :
Activité : Ingénieur de construction de réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : avril 2011
Messages : 8
Points : 5
Points : 5
Bonjour,

voici le résultat de ces commandes ; le réseau 192.168.100.0 a été remplacé par 192.168.100.0 mais le résultat est le même:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
root@lvs01:/etc# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:56:7e:4f brd ff:ff:ff:ff:ff:ff
    inet 192.168.60.101/24 brd 192.168.60.255 scope global eth0
    inet 192.168.60.95/24 brd 192.168.60.255 scope global secondary eth0:0
    inet 192.168.60.96/24 brd 192.168.60.255 scope global secondary eth0:1
    inet6 fe80::20c:29ff:fe56:7e4f/64 scope link
       valid_lft forever preferred_lft forever
Code :
1
2
3
4
5
6
 
root@lvs01:/etc# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:0c:29:56:7e:4f brd ff:ff:ff:ff:ff:ff
Code :
1
2
3
4
 
root@lvs01:/etc# ip route
192.168.60.0/24 dev eth0  proto kernel  scope link  src 192.168.60.101
default via 192.168.60.100 dev eth0
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
root@lvs01:/etc# iptables -L -n -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
   36  6093 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
  112  6764 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 LOG_DROP   all  --  *      *       0.0.0.0/0            0.0.0.0/0
 
Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 6 level 4 prefix `FORWARD: '
    0     0 ACCEPT     tcp  --  *      *       192.168.10.41        192.168.60.96
    0     0 ACCEPT     tcp  --  *      *       192.168.10.41        192.168.50.0/24
    0     0 ACCEPT     tcp  --  *      *       192.168.50.0/24      192.168.10.0/24
    0     0 LOG_DROP   all  --  *      *       0.0.0.0/0            0.0.0.0/0
 
Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
   36  6093 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
  130 19350 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 LOG_DROP   all  --  *      *       0.0.0.0/0            0.0.0.0/0
 
Chain LOG_DROP (3 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4 prefix `[IPTABLES DROP]:'
    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
root@lvs01:/etc# iptables -t mangle -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
root@lvs01:/etc#

Mon script est le suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
root@lvs01:/etc# vim fw-rules.sh
iptables -t nat -X
iptables -t raw -F
iptables -t raw -X
 
iptables -N LOG_DROP
 
echo " + politique par defaut"
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
 
echo " + PREROUTING"
 
iptables -t nat -P PREROUTING    ACCEPT
iptables -t nat -F PREROUTING
iptables -t nat -A PREROUTING -p tcp -j LOG --log-prefix "PREROUTING: " --log-tcp-options --log-ip-options
iptables -t nat -A PREROUTING -p tcp -s 192.168.10.41 -d 192.168.60.95 --dport 80 -j DNAT --to-destination 192.168.60.96:80
 
 
echo " + LOCALHOST"
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
 
echo " + INPUT "
iptables -A INPUT -p tcp -j ACCEPT
 
echo " + OUTPUT "
iptables -A OUTPUT -j ACCEPT
 
echo " + FORWARD..."
iptables -A FORWARD -p tcp -j LOG --log-prefix "FORWARD: " --log-tcp-options --log-ip-options
iptables -A FORWARD -p tcp -s 192.168.10.41 -d 192.168.60.96 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.10.41 -d 192.168.50.0/24 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.50.0/24 -d 192.168.10.0/24 -j ACCEPT
 
# LOG des paquets rejetéiptables -N LOG_DROP
iptables -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP]:'
iptables -A LOG_DROP -j DROP
iptables -t filter -A INPUT -j LOG_DROP
iptables -t filter -A OUTPUT -j LOG_DROP
iptables -t filter -A FORWARD -j LOG_DROP
breizho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2011, 10h49   #11
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Il manque

Code :
1
2
 
iptables -t nat -L -n -v
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 10h52   #12
Invité régulier
 
Eric
Ingénieur de construction de réseaux
Inscription : avril 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Eric

Informations professionnelles :
Activité : Ingénieur de construction de réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : avril 2011
Messages : 8
Points : 5
Points : 5
et hop :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
root@lvs01:/etc# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 6 level 4 prefix `PREROUTING: '
    0     0 DNAT       tcp  --  *      *       192.168.10.41        192.168.60.95       tcp dpt:80 to:192.168.60.96
 
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
 
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
root@lvs01:/etc#
breizho est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 18h12   #13
Invité régulier
 
Eric
Ingénieur de construction de réseaux
Inscription : avril 2011
Messages : 8
Détails du profil
Informations personnelles :
Nom : Eric

Informations professionnelles :
Activité : Ingénieur de construction de réseaux
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : avril 2011
Messages : 8
Points : 5
Points : 5
Bonjour,

bon j'ai contourné le problème en utilisant la solution de marquage de paquet.
comme décrite ici et ça marche.

Ce lien m'a permit d'approfondir la gestion des flux dans LVS.

Pas simple quand même.

A++

Breizho
breizho est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h31.


 
 
 
 
Partenaires

Hébergement Web