Servidor DHCP de Mac

1

A menudo tengo la necesidad de conectarme a dispositivos directamente a través del puerto Ethernet de mi MacBook.

  • Cuando estoy conectado a una red inalámbrica, puedo compartir mi conexión a Ethernet. Sin embargo, el segundo, pierdo la conexión inalámbrica, pierdo la conectividad a los dispositivos.

  • Puedo configurar una IP estática tanto en el MacBook como en el Dispositivo, pero esto no es muy fácil porque todavía tengo que hacer una conexión inicial para configurar la IP estática.

¿Hay alguna forma de configurar un servidor DHCP en el puerto Ethernet que funcione incluso si no estoy conectado a una red?

    
pregunta Skyler 440 09.08.2016 - 05:23

1 respuesta

2

Según mi respuesta aquí: Uso del Servidor 5.0.15 para compartir Internet SIN compartir internet Brindo la posibilidad de compartir Internet con PF y dnsmasq (es decir, sin el servidor OS X de Apple):

Para que NAT funcione sin usar Internet Sharing, debe usar una regla pf y crear una lista para habilitar el reenvío y cargar la regla pf. Además, debe configurar un servidor DNS / DHCP: dnsmasq .

A continuación, asumo en0: la interfaz conectada a Internet o un enrutador y en1: la interfaz conectada a la LAN. El enrutador tiene la IP 192.168.0.1 y la máscara de red 255.255.255.0.

Use ifconfig para obtener los nombres de los dispositivos.

Prepare la puerta de enlace de Mac:

  • Configure las dos interfaces en0 y en1 con direcciones IP fijas y máscaras de red

    Ejemplo:

    en0: IP: 192.168.0.2 Máscara de red: 255.255.255.0 Puerta de enlace: 192.168.0.1 DNS: 8.8.8.8 y 127.0.0.1 Buscar dominios: home.org
    en1: IP: 192.168.1.1 Máscara de red: 255.255.255.0

  • Deshabilite Protección de integridad del sistema si El Capitan está instalado

  • Instalar las herramientas de Xcode Command Line / Xcode
  • Instalar, configurar y preparar brew
  • Instala dnsmasq:

    brew install dnsmasq
    
  • Configura y 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
    

    abra /usr/local/etc/dnsmasq.conf con un editor y modifique al menos las siguientes líneas:

    ~ 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
    

    Puedes configurar mucho más, solo revisa el archivo de configuración y sus descripciones.

    sudo brew services start dnsmasq
    sudo chmod 644 /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
    sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
    
  • Cree un archivo llamado nat-rules en / private / etc / con el siguiente contenido

    nat on en0 from en1 to any -> (en0)
    
  • Cree un script de shell llamado nat-pf.sh que permita reenviar y cargar la regla pf. Lo guardé en / 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
    
  • Cree una lista llamada org.user.natpf.plist con el siguiente contenido y guárdela en / Library / LaunchDaemons / para ejecutar el script de shell anterior al inicio:

    <?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>
    

    Los tres archivos necesitan una línea vacía al final, así que no copie simplemente el código o las líneas anteriores.

  • Modificar modos de propiedad y archivo:

    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
    
  • Cargar el demonio de lanzamiento:

    sudo launchctl load /Library/LaunchDaemons/org.user.natpf.plist
    
  • Reinicia tu puerta de enlace Mac. Si todo funciona bien, habilita SIP nuevamente.

    El archivo /tmp/org.user.natpf.stderr contiene mensajes de error. Puede agregar una clave similar al archivo /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist para obtener posibles mensajes de error:

        ...
        <key>StandardErrorPath</key>
        <string>/tmp/homebrew.mxcl.dnsmasq</string>
        <key>StandardOutPath</key>
        <string>/tmp/homebrew.mxcl.dnsmasq</string>
        ...
    

Prepare su enrutador de Internet (si tiene uno)

  • Agregue una ruta estática: Red: 192.168.1.0 Máscara de red: 255.255.255.0 Puerta de enlace: 192.168.0.2

Prepara tu frambuesa

  • Es posible que tengas que reiniciarlo.

Después de configurar todo correctamente, debe tener una LAN confiable con NAT, DHCP y DNS. Incluso puede ingresar ping raspberry con un resultado apropiado.

Si tiene problemas, deje un compromiso.

    
respondido por el klanomath 10.08.2016 - 02:10

Lea otras preguntas en las etiquetas