IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Iptables: Problème de routage locale


Sujet :

Sécurité

  1. #1
    Futur Membre du Club
    Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    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 : 6
    Points
    6
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    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

  3. #3
    Futur Membre du Club
    Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    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 : 6
    Points
    6
    Par défaut
    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...

  4. #4
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Futur Membre du Club
    Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    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 : 6
    Points
    6
    Par défaut
    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.

  6. #6
    Futur Membre du Club
    Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    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 : 6
    Points
    6
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  7. #7
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    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

  8. #8
    Futur Membre du Club
    Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    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 : 6
    Points
    6
    Par défaut
    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
    .

  9. #9
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Tu peux donner le résultat de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  10. #10
    Futur Membre du Club
    Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    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 : 6
    Points
    6
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  11. #11
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Il manque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iptables -t nat -L -n -v

  12. #12
    Futur Membre du Club
    Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    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 : 6
    Points
    6
    Par défaut
    et hop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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#

  13. #13
    Futur Membre du Club
    Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    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 : 6
    Points
    6
    Par défaut
    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

Discussions similaires

  1. Problème de routage
    Par boubajazz dans le forum Réseau
    Réponses: 8
    Dernier message: 18/06/2007, 09h40
  2. Problème PHP en local !
    Par Franck.H dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 17/05/2007, 20h17
  3. [Windows XP SP2] Problème de réseau local entre 2 PC
    Par larryg dans le forum Développement
    Réponses: 2
    Dernier message: 02/01/2007, 19h58
  4. [EasyPHP] Problème en serveur local
    Par charliejo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 25/05/2006, 22h59
  5. Routage par Iptables ignore les règles locales ?
    Par Anomaly dans le forum Réseau
    Réponses: 5
    Dernier message: 27/11/2005, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo