Okay, ich kämpfe hier ein wenig. Ich bin nicht so gut mit Terminal und dem Lösen von Netzwerkproblemen, aber ich habe es bisher geschafft.
Wie kann ich meine Internetverbindung von einer Schnittstelle (sagen wir mal ) zu einer anderen (sagen wir nochmal) teilen , ohne die Internetfreigabe zu verwenden (da die Steuerung über das Terminal gemäß meiner Frage hier in Yosemite nicht wirklich zu funktionieren scheint )?en0
en1
Ich verstehe, dass Internet Sharing eine Brücke (normalerweise als bridge100
) erstellt und dann bootpd
(glaube ich) einen DHCP-Server und NAT einrichtet, um den gesamten Datenverkehr von 192.168.2.xxx (dem überbrückten Netzwerk) zu Ihrem primären Netzwerk zu leiten .
Wie kann ich das gleiche Ergebnis erzielen, ohne das Freigabe-Voreinstellungsfenster zu verwenden?
Hier ist eine interessante Lösung, um das Internet mit einer Layer-2-Bridge zu teilen, aber ohne NAT/ DHCP (nicht erforderlich) /Internet Sharing Pref Panel zu verwenden:
Erstellen Sie ein Shell-Skript ethernet-bridge.sh in /usr/local/sbin mit folgendem Inhalt:
#! /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
und ausführbar machen:
chmod 755 /usr/local/sbin/ethernet-bridge.sh
Fügen Sie dann das folgende XML als com.ethernet-bridge.plist in /Library/LaunchDaemons ein
<?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>
Ändern Sie dann die Datei und laden Sie sie:
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
Die plist aktiviert den Bridge-Modus während des Bootens.
Überprüfen Sie mit ifconfig -a
ob die Brücke sichtbar ist.
Um den Bridge-Modus zu beenden, geben Sie einfach Folgendes ein:
sudo /usr/local/sbin/ethernet-bridge.sh stop
Um den Bridge-Modus neu zu starten, geben Sie einfach Folgendes ein:
sudo /usr/local/sbin/ethernet-bridge.sh start
Richten Sie nun die Clients mit einer festen IP/Netzmaske/Gateway (der internen IP-Adresse des Briding-Rechners)/DNS ein oder richten Sie einen DHCP-Server auf dem Bridging-Rechner richtig ein.
Zusätzlich müssen Sie auf Ihrem Router eine statische Route zu dem Netzwerk einrichten, für das Sie die Internetfreigabe bereitstellen (in Ihrem Beispiel (en1)).
Bis jetzt funktionieren die Syslog-Meldungen nicht - ich werde versuchen, das Skript entsprechend zu verbessern.
Ein ähnlicher Ansatz wird hier skizziert , aber ich habe ihn in Yosemite nicht zum Laufen gebracht
Ich tue es, indem ich einfach in meiner Netzwerk-Systemsteuerung einrichte…
Die „eingehende“ Seite (Ethernet 1) als automatisch, DHCP (so dass es alle benötigten Informationen direkt von meinem ISP abholt) und die ausgehende „gemeinsame“ Seite (Ethernet 2) als vollständig manuell (basierend auf dem, was die anderen vernetzten Maschinen tun würden normalerweise von meinem dedizierten Gateway zu sehen), IP-Adresse 192.168.0.1 Subnetz 255.255.255.0 Router leer, DNS habe ich auf die reguläre DNS-Adresse meines ISP eingestellt.
Funktioniert einwandfrei, wenn ich mein Gateway für längere Zeit herunterfahren muss.
Übrigens ist mein ISP-Router immer so eingestellt, dass er sich im Modus „nur ein Modem“ befindet, also kämpfe ich nicht dagegen an.
Übrigens habe ich keine Ahnung, wie ich das im Terminal machen soll - alles, was ich tue, ist, meinen gespeicherten "Standort" von "Mac als Client" in "Mac als Server" zu ändern und auf Übernehmen zu klicken.
Sera H
man ifconfig
eine Weile am Kopf kratzte, aber dassysctl
Stück wäre mir zu hoch gewesen. Jetzt müssen Sie nur noch herausfinden, wie Sie Airport in den AP-Modus versetzen. :P Aber das ist eine andere Frage ...