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
-
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
-
J'ai décomplémenté
net.ipv4.ip_forward=1
en/etc/sysctl.conf
-
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.