web-dev-qa-db-fra.com

Comment activer le transfert de données entre deux interfaces locales?

J'ai installé Ubuntu 11.10 sur une machine remise à neuf. J'ai également remplacé une carte NIC défectueuse par une nouvelle carte NIC. Deux cartes NIC sont reconnues lors de l'installation. J'ai également installé squid en tant que serveur proxy. Squid fonctionne bien lorsque tous les postes de travail sont connectés au routeur. Toutefois ... .

Lorsque je connecte un NIC à mon routeur (connexion Internet en direct disponible), l'autre NIC à mon commutateur (sans aucun accès Internet disponible), je peux créer deux réseaux distincts, mais je peux Ne savez pas comment faire en sorte que les deux NIC cartes transfèrent des données entre elles, ainsi que sur les deux réseaux.

  1. J'ai essayé de relier les deux cartes Ethernet ... pas de chance!
  2. J'ai essayé de mettre à jour iptables ... pas de chance!
  3. J'ai réglé les deux cartes NIC sur des adresses statiques ... pas de chance!
  4. J'ai configuré un NIC pour utiliser l'autre comme passerelle ... pas de chance! Tous résultent en une erreur que l'adresse ping (réseau lié au commutateur) est sur une destination inaccessible.

Qu'est-ce que je rate?

3
Jim Schafer

Le script décrit par @laurent est inutile, car il existe un moyen canonique. Tout ce que vous avez à faire est d’éditer /etc/sysctl.conf et de ne pas commenter (supprimer # au début de) cette ligne:

net.ipv4.ip_forward = 1

Ensuite, il sera déjà appliqué au démarrage.

5
Mihail Malostanidis

Ubuntu a désactivé ip fowarding par défaut et vous devez l'activer pour router les paquets avec votre machine:

pour l'activer, tapez le terminal en tant que root (Sudo su):

echo 1 > /proc/sys/net/ipv4/ip_forward

Obs: ne fonctionne pas avec Sudo

Et si vous souhaitez router Internet depuis cette machine, vous devrez peut-être également configurer NAT.

MODIFIER:

la 1ère commande echo 1 ... ne fonctionne pas avec Sudo. Vous devez passer à root avec Sudo su avant (car Sudo exécutera echo 1 en tant que root mais essaiera de rediriger vers le fichier en tant qu'utilisateur et cela ne fonctionnera pas). Quoi qu'il en soit, vous pouvez toujours vérifier s'il existe un 1 avec cat /proc/sys/net/ipv4/ip_forward. Obs: Cela doit être fait à chaque démarrage pour que vous puissiez écrire un script et utiliser update-rc.d dessus.

La règle POSTROUTING semble OK si eth0 est votre NIC de connexion Internet.

Règles FORWARD que j'utilise pour les connexions établies et connexes:

-A FORWARD -p tcp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p udp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT

2ème UPDATE - Script automatique:

#!/bin/sh
# turn ip_forward on/off

case "$1" in
'start')
        echo 1 > /proc/sys/net/ipv4/ip_forward
        ;;
'stop')
        echo 0 > /proc/sys/net/ipv4/ip_forward
        ;;
*)
        echo "Usage: $0 { start | stop }"
        ;;
esac
exit 0

Vous enregistrez ce script dans /etc/init.d avec le nom de votre choix (router par exemple) et vous le rendez exécutable (Sudo chmod +x /etc/init.d/router).

Pour le lancer à chaque redémarrage, vous devez établir des liens de démarrage avec update-rc.d:

Sudo update-rc.d router defaults

Autres choses à vérifier:

  • DHCP fonctionne sur le deuxième réseau et envoie l'adresse IP de votre machine comme passerelle par défaut au sous-réseau
  • la passerelle par défaut (l'adresse IP de votre machine dans le nouveau sous-réseau) est meilleure avec une adresse IP fixe.
  • vous avez commenté que vous ne pouvez pas cingler le 2e NIC mais d'où? le sous-réseau, votre machine ou des machines connectées directement sur le routeur?
  • calmar est installé sur votre machine? Avez-vous modifié la configuration pour inclure le nouveau sous-réseau? Avez-vous besoin de calmar? Il n’est pas très facile à configurer et vous pouvez très bien partager Internet et le réseau sans lui si vous n’avez pas besoin de ses fonctionnalités supplémentaires.

Obs: le message update-rc.d est OK, pas de problème. Vous devriez maintenant avoir toujours un 1 dans le fichier ip_forward.

4
laurent