In base alla mia risposta: Utilizzo del server 5.0.15 per condividere internet SENZA condivisione Internet Fornisco la possibilità di condividere internet con PF e dnsmasq (ovvero senza OS X Server di Apple):
Per far funzionare il NAT senza usare Internet Sharing devi usare una regola pf e creare un plist per abilitare l'inoltro e caricare la regola pf. Inoltre, devi configurare un server DNS / DHCP: dnsmasq .
Di seguito presumo en0: l'interfaccia connessa a Internet o un router e en1: l'interfaccia connessa alla LAN. Il router ha l'IP 192.168.0.1 e la maschera di rete 255.255.255.0.
Utilizza ifconfig
per ottenere i nomi dei dispositivi.
Prepara il gateway Mac:
-
Imposta le due interfacce en0 e en1 con IP fissi e maschere di rete
Esempio:
en0: IP: 192.168.0.2 Netmask: 255.255.255.0 Gateway: 192.168.0.1 DNS: 8.8.8.8 e 127.0.0.1 Cerca domini: home.org
en1: IP: 192.168.1.1 Netmask: 255.255.255.0
-
Disabilita Protezione integrità del sistema se El Capitan è installato
- Installa gli strumenti Xcode Command Line / Xcode
- Installa, configura e aggiusta brew
-
Installa dnsmasq:
brew install dnsmasq
-
Configura e configura dnsmasq
cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
sudo mkdir -p /usr/local/var/lib/misc
sudo touch /usr/local/var/lib/misc/dnsmasq.leases
apri /usr/local/etc/dnsmasq.conf con un editor e modifica almeno le seguenti righe:
~ line 144
# 3) Provides the domain part for "expand-hosts"
domain=home.org
~ line 163
# don't need to worry about this.
dhcp-range=192.168.1.50,192.168.1.100,255.255.255.0,12h
~ line 243
# Always give the host with Ethernet address 11:22:33:44:55:66
# the name fred and IP address 192.168.0.60 and lease time 45 minutes
dhcp-host=11:22:33:44:55:66,raspberry,192.168.1.70,12h
**use the proper MAC of your raspberry here**
~ line 536
# This defaults to a sane location, but if you want to change it, use
# the line below.
dhcp-leasefile=/usr/local/var/lib/misc/dnsmasq.leases
Potresti configurare molto di più - basta controllare il file di configurazione e le sue descrizioni.
sudo brew services start dnsmasq
sudo chmod 644 /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
-
Crea un file chiamato nat-rules in / private / etc / con il seguente contenuto
nat on en0 from en1 to any -> (en0)
-
Crea uno script di shell denominato nat-pf.sh che abilita l'inoltro e il caricamento della regola pf. L'ho salvato in / usr / local / bin:
#!/bin/sh
sysctl -w net.inet.ip.forwarding=1
sysctl -w net.inet.ip.fw.enable=1
#disables pfctl
pfctl -d
sleep 1
#flushes all pfctl rules
pfctl -F all
sleep 1
#starts pfctl and loads the rules from the nat-rules file
pfctl -f /private/etc/nat-rules -e
-
Crea un plist chiamato org.user.natpf.plist con il seguente contenuto e salvalo in / Library / LaunchDaemons / per eseguire lo script di shell sopra all'avvio:
<?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>Disabled</key>
<false/>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>Label</key>
<string>org.user.natpf</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/nat-pf.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/org.user.natpf.stderr</string>
<key>StandardOutPath</key>
<string>/tmp/org.user.natpf.stdout</string>
</dict>
</plist>
Tutti e tre i file hanno bisogno di una riga vuota finale, quindi non copiare semplicemente il codice / le righe sopra.
-
Modifica proprietà e modalità file:
sudo chown root:wheel /private/etc/nat-rules
sudo chown root:wheel /usr/local/bin/nat-pf.sh
sudo chmod 755 /usr/local/bin/nat-pf.sh
sudo chown root:wheel /Library/LaunchDaemons/org.user.natpf.plist
-
Carica il daemon di avvio:
sudo launchctl load /Library/LaunchDaemons/org.user.natpf.plist
-
Riavvia il tuo gateway Mac. Se tutto funziona correttamente, abilita nuovamente SIP.
Il file /tmp/org.user.natpf.stderr contiene messaggi di errore. Puoi aggiungere una chiave simile al file /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist per ottenere potenziali messaggi di errore:
...
<key>StandardErrorPath</key>
<string>/tmp/homebrew.mxcl.dnsmasq</string>
<key>StandardOutPath</key>
<string>/tmp/homebrew.mxcl.dnsmasq</string>
...
Prepara il tuo Internet Router (se ne hai uno)
- Aggiungi una route statica: Rete: 192.168.1.0 Netmask: 255.255.255.0 Gateway: 192.168.0.2
Prepara il tuo Raspberry
- Potrebbe essere necessario riavviarlo.
Dopo aver impostato correttamente tutte le cose dovresti avere una LAN affidabile con NAT, DHCP e DNS. Puoi anche inserire ping raspberry
con un risultato corretto.
Se riscontri problemi, lascia acomment.