Forum Linux.général NAT lent (très)

Posté par  (site web personnel) .
Étiquettes : aucune
0
11
nov.
2005
Bonjour,

J'ai a la maison un petit réseau ethernet simple de deux machines (appelons-le "eth0" sur les deux machines), l'une (appelons-la "p") connecté à Internet (par PPPoE via eth1) et servant de routeur (ip_forwarding et masquerade), l'autre (appelons-la "s") profitant alors de p pour accéder à Internet.

Pour une raison qui m'est inconnu, le nat rame à mort.
internet <-> p : 300K/s (téléchargement d'une iso)
p <-> s : 1M/s (copie d'une iso)
internet <-> s : 5K/s (téléchargement d'une iso)

J'ai vraiment cherché partout.
Est-ce que quelqu'un a une idée ?

Le ifconfig de p

eth0 Lien encap:Ethernet HWaddr 00:0C:76:3A:FC:A4
inet adr:192.168.0.29 Bcast:192.168.0.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20361 errors:0 dropped:0 overruns:0 frame:0
TX packets:28399 errors:0 dropped:0 overruns:0 carrier:0
collisions:9602 lg file transmission:1000
RX bytes:1672801 (1.5 MiB) TX bytes:37024660 (35.3 MiB)
Interruption:23 Adresse de base:0xd800

eth1 Lien encap:Ethernet HWaddr 00:20:18:3C:5A:72
inet adr:192.168.0.2 Bcast:192.168.0.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:29297 errors:0 dropped:0 overruns:0 frame:2955
TX packets:18964 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:42503406 (40.5 MiB) TX bytes:1628551 (1.5 MiB)
Interruption:18 Adresse de base:0xec00

ppp0 Lien encap:Protocole Point-à-Point
inet adr:83.197.120.29 P-t-P:193.253.160.3 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:13083 errors:0 dropped:0 overruns:0 frame:0
TX packets:7673 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:3
RX bytes:18952116 (18.0 MiB) TX bytes:444033 (433.6 KiB)


le ifconfig de s
eth0 Lien encap:Ethernet HWaddr 00:01:03:83:9A:6C
inet adr:192.168.0.59 Bcast:192.168.0.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1492 Metric:1
RX packets:28422 errors:0 dropped:0 overruns:0 frame:0
TX packets:20391 errors:0 dropped:0 overruns:0 carrier:0
collisions:5902 lg file transmission:1000
RX bytes:37030951 (35.3 MiB) TX bytes:1675063 (1.5 MiB)
Interruption:10 Adresse de base:0xe800

le iptable de p (tout vide pour les tests pour être sûr que c'est pas a cause de ça)
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
  • # Donne plus d'informations

    Posté par  . Évalué à 5.

    * caractéristiques matérielles des machines,
    * distributions utilisées.
    * configuration du réseau (réseau en 10, en 100 Mbit, interfaces utilisées, adresses IP, utilisation d'un câble croisé, d'un hub, d'un switch) ?

    Sur une même machine, ne donne pas à deux interfaces des adresses dans un même réseau.
    C'est ce qui se passe avec les interfaces eth0 et eth1 sur la machine p :
    - inet adr:192.168.0.29 Bcast:192.168.0.255 Masque:255.255.255.0
    - inet adr:192.168.0.2 Bcast:192.168.0.255 Masque:255.255.255.0
    Ces deux adresses font parties du réseau 192.168.0.0.
    Sur la machine p, attribue à la carte qui n'est pas reliée à la machine s une adresse d'un réseau différents. Par exemple utilise 192.168.1.1 qui fait partie du réseau 192.168.1.0

    Tu as beaucoup de collisions sur les interfaces eth0 (machine p) et eth0 (machine s). Ces deux machines semblent reliées par ces interfaces. C'est totalement anormal.
    Vérifie la qualité de ton matériel (cartes réseau, câbles, hub, switch) .

    Enfin, les commandes ethtool et route devraient t'aider. Voir les pages de man correspondantes.
    • [^] # Re: Donne plus d'informations

      Posté par  (site web personnel) . Évalué à 1.

      p est un petit Athlon, avec un noyau 2.6.12-9-k7 de chez ubuntu brezzy.

      s est un portable PIII, avec un noyau 2.6.12-9-686 de chez les mêmes.

      les cartes eth0 sont des ethernet 100 mais en 10 puisque j'utilise un pov' hub qui ne comprend que ça.

      Selon ton conseil, j'ai changé le réseau de eth1 mais pas de modification.

      Pour ce qui est des collisions, c'est vrai que c'est louche.

      Toutefois, le debit entre s et p est correct (ethernet marche donc assez bien) entre p et internet c'est correct aussi.
      Ce qui est étrange c'est qu'entre s et internet, cela soit si faible !
      • [^] # Quelques pistes

        Posté par  . Évalué à 1.

        Si tu n'as pas d'autres machines à mettre en réseau, tu peux relier p et s par un câble croisé. Les collisions devraient disparaître. As-tu testé ton hub ?

        Comment est configuré ta passerelle ?
        Peux-tu communiquer la configuration iptables (pare-feu et nat ) ?

        Que donnent les commandes route et ethtool ?

        Qu'appelles-tu un petit athlon ? Une passerelle n'a pas besoin de beaucoup de puissance : deux cartes en 100 et un 486DX 100 avec 16Mo de ram suffisent pour faire une passerelle qui supportera des débits de 800 Ko/s (expérience personnelle).

        La commande tcpdump permet de savoir ce qui se passe sur un réseau. Voir le man.

        Sur chaque machine, que donne la commande dmesg ?
        • [^] # Re: Quelques pistes

          Posté par  (site web personnel) . Évalué à 1.

          J'ai pas de cable croisé mais le hub à toujours marché et tant que je reste dans le réseau local, tout va bien.

          Comme je l'ai signalé dans le message original, j'ai vidé l'iptables de p de toute regle superflue (au cas ou le ralentissement venait de là)
          p est un athlon XP à 1GHz d'apres /proc/cpuinfo, je pense pas que cela vienne de là

          Rien rien vu d'inabituel dans le dmesg, le reste est là :

          root@p:~# iptables-save
          # Generated by iptables-save v1.3.1 on Fri Nov 11 22:15:55 2005
          *filter
          :INPUT ACCEPT [2145966:1201462017]
          :FORWARD ACCEPT [57398:27447878]
          :OUTPUT ACCEPT [2146884:779677376]
          COMMIT
          # Completed on Fri Nov 11 22:15:55 2005
          # Generated by iptables-save v1.3.1 on Fri Nov 11 22:15:55 2005
          *nat
          :PREROUTING ACCEPT [9079:552580]
          :POSTROUTING ACCEPT [34:2040]
          :OUTPUT ACCEPT [972:59696]
          -A POSTROUTING -j MASQUERADE
          COMMIT
          # Completed on Fri Nov 11 22:15:55 2005

          root@p:~# route
          Table de routage IP du noyau
          Destination Passerelle Genmask Indic Metric Ref Use Iface
          112.lnfny151.Fo * 255.255.255.255 UH 0 0 0 ppp0
          192.168.1.0 * 255.255.255.0 U 0 0 0 eth1
          localnet * 255.255.255.0 U 0 0 0 eth0
          default 112.lnfny151.Fo 0.0.0.0 UG 0 0 0 ppp0

          root@p:~# ethtool eth0
          Settings for eth0:
          Supported ports: [ TP MII ]
          Supported link modes: 10baseT/Half 10baseT/Full
          100baseT/Half 100baseT/Full
          Supports auto-negotiation: Yes
          Advertised link modes: 10baseT/Half 10baseT/Full
          100baseT/Half 100baseT/Full
          Advertised auto-negotiation: Yes
          Speed: 10Mb/s
          Duplex: Half
          Port: MII
          PHYAD: 1
          Transceiver: internal
          Auto-negotiation: on
          Supports Wake-on: pumbg
          Wake-on: d
          Current message level: 0x00000001 (1)
          Link detected: yes

          root@s:~# route
          Table de routage IP du noyau
          Destination Passerelle Genmask Indic Metric Ref Use Iface
          192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
          default p 0.0.0.0 UG 0 0 0 eth0

          root@s:~# ethtool eth0
          Settings for eth0:
          Supported ports: [ TP MII ]
          Supported link modes: 10baseT/Half 10baseT/Full
          100baseT/Half 100baseT/Full
          Supports auto-negotiation: Yes
          Advertised link modes: 10baseT/Half 10baseT/Full
          100baseT/Half 100baseT/Full
          Advertised auto-negotiation: Yes
          Speed: 10Mb/s
          Duplex: Half
          Port: MII
          PHYAD: 0
          Transceiver: internal
          Auto-negotiation: on
          Current message level: 0x00000001 (1)
          Link detected: yes


          Pour tcpdump, et une iso téléchargée par p sur mir1.ovh.net :

          root@p:~# tcpdump -vv -c 5 -i ppp0 host mir1.ovh.net
          tcpdump: listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
          22:44:10.487382 IP (tos 0x0, ttl 64, id 37668, offset 0, flags [DF], proto: TCP (6), length: 52) AMontpellier-151-1-49-29.w83-197.abo.wanadoo.fr.54648 > mir1.ovh.net.www: ., cksum 0xc843 (correct), 2335623395:2335623395(0) ack 1693337964 win 23760 <nop,nop,timestamp 48575364 219837222>
          22:44:10.510646 IP (tos 0x0, ttl 53, id 63525, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > AMontpellier-151-1-49-29.w83-197.abo.wanadoo.fr.54648: . 1:1441(1440) ack 0 win 5792 <nop,nop,timestamp 219837229 48575313>
          22:44:10.512492 IP (tos 0x0, ttl 53, id 63526, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > AMontpellier-151-1-49-29.w83-197.abo.wanadoo.fr.54648: . 1441:2881(1440) ack 0 win 5792 <nop,nop,timestamp 219837229 48575313>
          22:44:10.512538 IP (tos 0x0, ttl 64, id 37670, offset 0, flags [DF], proto: TCP (6), length: 52) AMontpellier-151-1-49-29.w83-197.abo.wanadoo.fr.54648 > mir1.ovh.net.www: ., cksum 0xbce3 (correct), 0:0(0) ack 2881 win 23760 <nop,nop,timestamp 48575389 219837229>
          22:44:10.516045 IP (tos 0x0, ttl 53, id 63527, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > AMontpellier-151-1-49-29.w83-197.abo.wanadoo.fr.54648: . 2881:4321(1440) ack 0 win 5792 <nop,nop,timestamp 219837229 48575318>
          5 packets captured
          5 packets received by filter
          0 packets dropped by kernel

          La meme iso téléchargée par s (qui en fait s'appelle shepp)
          L'interface ppp (sur p)

          root@p:~# tcpdump -vv -c 5 -i ppp0 host mir1.ovh.net
          tcpdump: listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
          22:46:37.846375 IP (tos 0x0, ttl 53, id 39886, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > AMontpellier-151-1-49-29.w83-197.abo.wanadoo.fr.47489: . 2274332459:2274333899(1440) ack 2941224887 win 5792 <nop,nop,timestamp 219851962 48601460>
          22:46:37.848007 IP (tos 0x0, ttl 63, id 55690, offset 0, flags [DF], proto: TCP (6), length: 64) AMontpellier-151-1-49-29.w83-197.abo.wanadoo.fr.47489 > mir1.ovh.net.www: ., cksum 0xa756 (correct), 1:1(0) ack 1440 win 16024 <nop,nop,timestamp 48601841 219851962,nop,nop,sack 1 {0:1440}>
          22:46:37.922905 IP (tos 0x0, ttl 53, id 39887, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > AMontpellier-151-1-49-29.w83-197.abo.wanadoo.fr.47489: . 1440:2880(1440) ack 1 win 5792 <nop,nop,timestamp 219851969 48601841>
          22:46:37.924795 IP (tos 0x0, ttl 63, id 55692, offset 0, flags [DF], proto: TCP (6), length: 52) AMontpellier-151-1-49-29.w83-197.abo.wanadoo.fr.47489 > mir1.ovh.net.www: ., cksum 0x0a91 (correct), 1:1(0) ack 2880 win 16024 <nop,nop,timestamp 48601917 219851969>
          22:46:37.924766 IP (tos 0x0, ttl 53, id 39888, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > AMontpellier-151-1-49-29.w83-197.abo.wanadoo.fr.47489: . 2880:4320(1440) ack 1 win 5792 <nop,nop,timestamp 219851969 48601841>
          5 packets captured
          5 packets received by filter
          0 packets dropped by kernel

          L'interface eth0 (sur p)
          root@p:~# tcpdump -vv -c 5 -i eth0 host mir1.ovh.net
          tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
          22:48:13.361353 IP (tos 0x0, ttl 52, id 40665, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > shepp.47489: . 2274850859:2274852299(1440) ack 2941224887 win 5792 <nop,nop,timestamp 219861513 48696920>
          22:48:13.362949 IP (tos 0x0, ttl 64, id 56798, offset 0, flags [DF], proto: TCP (6), length: 64) shepp.47489 > mir1.ovh.net.www: ., cksum 0x5cce (correct), 1:1(0) ack 1440 win 16024 <nop,nop,timestamp 48697360 219861513,nop,nop,sack 1 {0:1440}>
          22:48:13.437245 IP (tos 0x0, ttl 52, id 40666, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > shepp.47489: . 1440:2880(1440) ack 1 win 5792 <nop,nop,timestamp 219861520 48697360>
          22:48:13.438830 IP (tos 0x0, ttl 64, id 56800, offset 0, flags [DF], proto: TCP (6), length: 52) shepp.47489 > mir1.ovh.net.www: ., cksum 0x9218 (correct), 1:1(0) ack 2880 win 16024 <nop,nop,timestamp 48697436 219861520>
          22:48:13.439205 IP (tos 0x0, ttl 52, id 40667, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > shepp.47489: P 2880:4320(1440) ack 1 win 5792 <nop,nop,timestamp 219861520 48697360>
          5 packets captured
          5 packets received by filter
          0 packets dropped by kernel

          l'interface eth0 (sur s)
          root@s:~ # tcpdump -vv -c 5 -i eth0 host mir1.ovh.net
          tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
          22:50:04.936600 IP (tos 0x0, ttl 52, id 41593, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > shepp.47489: . 2275398059:2275399499(1440) ack 2941224887 win 5792 <nop,nop,timestamp 219873146 48813312>
          22:50:04.949452 IP (tos 0x0, ttl 64, id 58080, offset 0, flags [DF], proto: TCP (6), length: 64) shepp.47489 > mir1.ovh.net.www: ., cksum 0x5c4c (correct), 1:1(0) ack 1440 win 16024 <nop,nop,timestamp 48813702 219873146,nop,nop,sack 1 {0:1440}>
          22:50:05.025287 IP (tos 0x0, ttl 52, id 41594, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > shepp.47489: . 1440:2880(1440) ack 1 win 5792 <nop,nop,timestamp 219873155 48813702>
          22:50:05.025381 IP (tos 0x0, ttl 64, id 58082, offset 0, flags [DF], proto: TCP (6), length: 52) shepp.47489 > mir1.ovh.net.www: ., cksum 0x4495 (correct), 1:1(0) ack 2880 win 16024 <nop,nop,timestamp 48813794 219873155>
          22:50:05.343129 IP (tos 0x0, ttl 52, id 41596, offset 0, flags [DF], proto: TCP (6), length: 1492) mir1.ovh.net.www > shepp.47489: . 1440:2880(1440) ack 1 win 5792 <nop,nop,timestamp 219873187 48813702>
          5 packets captured
          12 packets received by filter
          0 packets dropped by kernel
          • [^] # Re: Quelques pistes

            Posté par  . Évalué à 1.

            Ta machine p semble utiliser la translation d'adresse sur toutes ses interfaces. J'utilise la translation d'adresse uniquement sur l'interface reliée à internet.

            Pour vider les règles de NAT, lance sur la machine p :
            iptables -t nat -F
            Puis pour utliser le NAT uniquement sur ppp0 :
            iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE

            As-tu progressé sur les collisions ?


            Pour de la documentation sur la translation d'adresse :
            http://www.netfilter.org/documentation/index.html#documentat(...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.