Qui è una soluzione interessante per condividere internet con un bridge di livello 2 ma senza usare NAT / DHCP (non richiesto) / Pannello di Condivisione Internet per tutto:
Crea uno script di shell ethernet-bridge.sh in / usr / local / sbin con il seguente contenuto:
#! /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
e renderlo eseguibile:
chmod 755 /usr/local/sbin/ethernet-bridge.sh
Quindi inserisci il seguente XML in / Library / LaunchDaemons come 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>
Quindi modifica il file e caricalo:
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
Il plist abiliterà la modalità bridge durante l'avvio.
Verifica con ifconfig -a
se il bridge è visibile.
Per interrompere la modalità bridge, inserisci:
sudo /usr/local/sbin/ethernet-bridge.sh stop
Per riavviare la modalità bridge, inserisci:
sudo /usr/local/sbin/ethernet-bridge.sh start
Ora imposta i client con un IP / netmask / gateway fisso (l'indirizzo IP interno della macchina per bridging) / DNS o imposta correttamente un server DHCP sul dispositivo di bridging.
Inoltre, devi configurare una route statica sul router per la rete a cui hai fornito Condivisione Internet (nell'esempio (en1)).
Fino ad ora i messaggi syslog non funzionano - cercherò di migliorare lo script in modo pertinente.
Un approccio simile è descritto qui , ma non l'ho fatto funzionare in Yosemite