4 votes

Création d'une connexion réseau pontée dans le terminal

Ok, j'ai un peu de mal ici. Je ne suis pas très doué avec Terminal et je ne sais pas résoudre les problèmes de réseau, mais j'ai réussi à m'en sortir jusqu'à présent.

Sans utiliser le partage d'Internet (parce que le contrôle se fait par le biais du terminal, conformément à l'article 3.1.1.1). ma question ici ne semble pas fonctionner dans Yosemite) comment puis-je partager ma connexion internet à partir d'une interface (disons en0 ) à un autre (encore une fois, disons en1 ) ?

J'ai cru comprendre que le partage d'Internet crée une passerelle (généralement appelée bridge100 ) et utilise ensuite bootpd (je pense) pour établir un serveur DHCP et un NAT pour acheminer tout le trafic de 192.168.2.xxx (qui est le réseau ponté) vers votre réseau primaire.

Comment puis-je obtenir le même résultat sans utiliser le volet préférentiel Partage ?

3voto

klanomath Points 63400

Ici est une solution intéressante pour partager l'internet avec un pont de niveau 2, mais sans utiliser le NAT. DHCP (non requis) /Préf. de partage Internet du tout :

Créer un shell script ethernet-bridge.sh dans /usr/local/sbin avec le contenu suivant :

#! /bin/sh
# ######################################
#  coded by Nat!
#  2013 Mulle kybernetiK
#  GPL

command=${1:-start}
shift
proxyarp=${1:-no}
shift

start()
{
        sysctl -w net.inet.ip.forwarding=1
        sysctl -w net.inet.ip.fw.enable=1
        if [ "$proxyarp" != "no" ]
        then
                sysctl -w net.link.ether.inet.proxyall=1
        fi

        ifconfig bridge0 create
        ifconfig bridge0 addm en0
        ifconfig bridge0 addm en1
        ifconfig bridge0 up
        if [ $? -eq 0 ]
        then
                syslog -s "Ethernet Bridge is up"
        else
                syslog -s "Ethernet Bridge failure"
        fi
}

stop()
{
        ifconfig bridge0 destroy

        sysctl -w net.inet.ip.forwarding=0
        sysctl -w net.inet.ip.fw.enable=0
        sysctl -w net.link.ether.inet.proxyall=0

        syslog -s "Ethernet Bridge is down"
}

case "$command" in
        start*) start
                ;;

        stop*)  stop
                ;;
esac

et le rendre exécutable :

chmod 755 /usr/local/sbin/ethernet-bridge.sh

Ensuite, mettez le XML suivant dans /Library/LaunchDaemons en tant que com.ethernet-bridge.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.ethernet-bridge.plist</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/sbin/ethernet-bridge.sh</string>
        </array>
        <key>UserName</key>
        <string>root</string>
        <key>GroupName</key>
        <string>wheel</string>
        <key>RunAtLoad</key>
        <true/>
        <key>LaunchOnlyOnce</key>
        <true/>   
    </dict>
</plist>

Modifiez ensuite le fichier et chargez-le :

sudo chmod 644 /Library/LaunchDaemons/com.ethernet-bridge.plist
sudo chown root:wheel /Library/LaunchDaemons/com.ethernet-bridge.plist
sudo launchctl load /Library/LaunchDaemons/com.ethernet-bridge.plist

Le plist activera le mode bridge lors du démarrage.

Vérifiez avec ifconfig -a si le pont est visible.

Pour arrêter le mode bridge, il suffit d'entrer :

sudo /usr/local/sbin/ethernet-bridge.sh stop

Pour redémarrer le mode pont, il suffit d'entrer :

sudo /usr/local/sbin/ethernet-bridge.sh start

Maintenant, configurez les clients avec une IP/netmask/Gateway fixe (l'adresse IP interne de la machine de pontage)/DNS ou configurez correctement un serveur DHCP sur la machine de pontage.

En outre, vous devez configurer une route statique sur votre routeur vers le réseau auquel vous fournissez le partage Internet (dans votre exemple (en1)).

Jusqu'à présent les messages syslog ne fonctionnent pas - je vais essayer d'améliorer le script pertinemment.


Une approche similaire est décrite aquí mais je n'ai pas réussi à le faire fonctionner dans Yosemite.

0voto

Tetsujin Points 95239

Je le fais en configurant simplement dans mon panneau de contrôle du réseau

Le côté "entrant" (Ethernet 1) est automatique, DHCP (il récupère donc toutes les informations dont il a besoin directement auprès de mon FAI) et le côté "partagé" sortant (Ethernet 2) est entièrement manuel (basé sur ce que les autres machines du réseau s'attendent à voir de ma passerelle dédiée), l'adresse IP 192.168.0.1 sous-réseau 255.255.255.0 routeur vide, DNS réglé sur l'adresse DNS normale de mon FAI.

Ça marche très bien, si je dois mettre ma passerelle hors service pendant un certain temps.

Le routeur de mon fournisseur d'accès est toujours configuré en mode "simple modem", je ne lutte donc pas contre lui.

Je n'ai aucune idée de la façon de faire cela dans le terminal, d'ailleurs - tout ce que je fais, c'est changer mon "Emplacement" enregistré de "Mac en tant que client" à "Mac en tant que serveur" et cliquer sur Appliquer.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X