Server DHCP Mac

1

Spesso ho bisogno di connettermi ai dispositivi direttamente attraverso la porta ethernet sul mio MacBook.

  • Quando sono connesso a una rete wireless, posso condividere la mia connessione a Ethernet. Tuttavia, il secondo, perdo la connessione wireless, perdo la connettività ai dispositivi.

  • Posso configurare un IP statico sia sul MacBook che sul dispositivo, ma non è molto semplice perché devo ancora stabilire una connessione iniziale per configurare l'IP statico.

C'è un modo per configurare un server DHCP sulla porta ethernet che funziona anche se non sono connesso a una rete?

    
posta Skyler 440 09.08.2016 - 05:23
fonte

1 risposta

2

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.

    
risposta data 10.08.2016 - 02:10
fonte

Leggi altre domande sui tag