1 votes

La copie de fichiers échoue sur la passerelle Ubuntu en utilisant le NAT

J'ai réussi à configurer le NAT sur ma machine Ubuntu 14.04.4 de façon à ce que mon ordinateur serve de passerelle pour un ordinateur connecté sur l'interface interne ( eth0 ) à l'interface externe ( eth1 ).

L'objectif principal n'est pas de donner à l'ordinateur interne un accès à Internet, mais un accès aux serveurs (subversion, etc.) sur l'interface externe.

La NAT fonctionne et je peux envoyer un ping à un serveur depuis le PC interne.

Si j'essaie de copier un fichier sur le PC interne à partir d'un serveur sur le PC externe, la copie démarre, mais se bloque au bout de quelques secondes (la vitesse démarre à environ 500 Ko/s puis descend à 0,0 Ko/s). Ma commande de copie est simple :

$ scp user@server:/path/to/file . 
user@server's password:
file            1%  704KB 0.0KB/s - stalled -

La même commande de copie à partir de mon PC passerelle se termine avec une vitesse moyenne de 12MB/s. Le fichier fait environ 70 Mo.

Comment puis-je résoudre ce problème pour que la copie soit complète et rapide si possible ?


Mon installation :

NAT est configuré comme décrit ici

  1. Les commandes pour configurer le NAT sur la passerelle sont les suivantes :

    sudo iptables -A FORWARD -o eth1 -i eth0 -s 192.168.10.0/24 -m conntrack --ctstate NEW -j ACCEPT
    sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    sudo iptables -t nat -F POSTROUTING
    sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
  2. J'ai décomplémenté net.ipv4.ip_forward=1 en /etc/sysctl.conf

  3. J'ai activé le transfert de port en utilisant la commande suivante :

    sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

PS : J'utilise scp comme un test et il montre la vitesse, la même chose se produit avec rsync . En réalité, le fichier est téléchargé par un installateur, éventuellement via http. Testé en utilisant wget et obtenir exactement le même comportement.

0voto

Doug Smythies Points 12803

Je préfère être très spécifique avec les interfaces et les directions de flux. Suggérez ceci :

sudo iptables -F FORWARD
sudo iptables -A FORWARD -o eth1 -i eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X