¿Cómo usar mac como un enrutador completo con DHCP, DNS, reenvío de puertos, etc.?

Sé que puedo usar el uso compartido de Internet en macOS para compartir la conexión a Internet proporcionada a una interfaz de red a través de una o más interfaces de red en mi Mac. Sin embargo, el conjunto de funciones es MUY limitado. No se puede elegir el rango de DHCP. Sin reservas de DHCP. Sin reenvío de puertos. etc.

MacOS Server tiene un servidor DHCP y otros servicios, pero ninguno de ellos comparte la conexión a Internet de Mac de ninguna manera, ni se pueden usar para controlar o agregar esas funciones a la función de uso compartido de Internet nativo de macOS mencionada anteriormente.

¿Hay alguna herramienta de software, Apple o de terceros, que pueda hacer lo que hace el uso compartido de Internet (compartir la conexión a Internet de mi Mac a través de una o más interfaces de red), pero con el tipo de características adicionales mencionadas anteriormente?

¡Gracias!


Actualización: gracias a las dos respuestas hasta ahora que me han señalado las dos soluciones basadas en pf. Es cierto que preferiría una solución que no requiera una máquina virtual y una solución que no requiera elementos de la línea de comandos, pero investigaciones posteriores me han llevado a IceFloor y Murus y un par de otras GUI para pfctl. Sin embargo, pfctl parece ser un firewall, no un enrutador, y lo que quiero es enrutamiento. Aún así, estoy limitado en mi comprensión de todo esto y es posible que esto sea lo que quiero todavía porque...

Con un poco más de investigación y me encuentro con esto:

https://developcents.com/2013/08/12/routers-switches-firewalls-differences/

En la sección Cortafuegos dice "A diferencia de los enrutadores y conmutadores, los cortafuegos son dispositivos de seguridad de red" y "... la mayoría de los cortafuegos perimetrales también tienen capacidades de enrutamiento (aunque eso no es un requisito)".

Entonces... Supongo que me están señalando la utilidad de firewall pfctl porque es uno de esos firewalls que tiene capacidades de enrutamiento, lo que significa que si quiero usarlo únicamente como un enrutador y no usar ninguna de las funciones del firewall, yo será capaz de hacer eso. ¿Es eso correcto? ¿Y ha incluido en sus capacidades de enrutamiento la funcionalidad que estoy buscando como se describe en la pregunta original anterior (específicamente, la elección del rango de DHCP, las reservas de DHCP y el reenvío de puertos)?

Me doy cuenta de que es posible que pueda responder esto yo mismo con suficiente estudio de la documentación y de las redes en general, pero la razón original de la pregunta es porque estoy acostumbrado a configurar la estación base del aeropuerto de Apple con la utilidad del aeropuerto y la pregunta original es buscando algo con ese tipo de claridad pero configurando una Mac en lugar de una estación base del aeropuerto para hacerlo.

¿Algo de eso tiene sentido y alguien puede ayudarme, dada toda esa información adicional?

El servicio DHCP y el servicio DNS de macOS Server pueden ayudar con eso.
@Josh Explique cómo DHCP y DNS manejan el firewall, NAT, el reenvío de puertos, etc.
@Josh. Desafortunadamente ese no es el caso. No he descubierto cómo hacer que estos hagan algo útil, pero según la documentación, entiendo que son servicios disponibles para manejar el tráfico de red, etc., y otra cosa es el enrutador. Ellos mismos no ofrecen ningún servicio de enrutamiento. Aún menos útiles, no funcionan junto con el servicio de enrutamiento integrado (uso compartido de Internet de macOS) en macOS. Me parece bastante estúpido, pero parece ser así. Esta es una gran parte de por qué estoy haciendo mi pregunta en primer lugar.
El servicio DHCP le permite editar la configuración de arrendamiento, el rango de IP, la máscara de subred, el DNS (alterar más configuraciones en el servicio DNS), etc.
@Josh. Hola, si entiendo eso. Gracias. Pero, ¿cómo ayuda eso a convertir a la Mac en un enrutador?
Lo agregué como comentario porque no lo convierte completamente en un enrutador, pero ayuda con su pregunta. Usted dijo "elección del rango de DHCP... reservas de DHCP". He respondido cómo controlar esas dos partes. Además, un enrutador se ocupa de DNS, también he proporcionado una solución para eso. Mi solución no convierte a su Mac en un enrutador, pero ayuda a hacer las cosas que desea de manera similar a lo que hace un enrutador, por lo que se agregó como un comentario.
Si necesita ayuda para configurarlo, es posible que pueda ayudarlo en un chat por separado.
@Josh, Ok, gracias. No estoy seguro de cómo hacer un chat por separado, ¿puedo invitarte a iniciar uno conmigo? Principalmente, la pregunta es: el uso compartido de Internet convierte a la Mac en un enrutador, pero no uno con el que esos servicios puedan interactuar, entonces, ¿hay alguna forma de hacer que la Mac sea un enrutador con el que esos servicios puedan interactuar? ¿Quizás las sugerencias de pfctl de las otras dos respuestas hasta ahora podrían responder/resolver eso?
Verifique mis respuestas (cadena de búsqueda:) user:93229 Internet Sharing, ¡especialmente apple.stackexchange.com/a/248904/93229 y apple.stackexchange.com/questions/228936/… )! El uso compartido de Internet de Apple se basa en pf. Al instalar algunas herramientas adicionales con brew y Murus como GUI, obtiene todo lo que necesita (por ejemplo, rango/reserva de DHCP).
Tiendo a votar para cerrar esta pregunta porque es demasiado amplia. Básicamente, la respuesta es: sí, se puede hacer (pero la curva de aprendizaje es empinada).
@Allan Verifique mi respuesta, por favor.

Respuestas (3)

Sencillo... si claro ...

Nota: Alguien edite esto para incluir solo defaultcomandos

Cubierto en esta respuesta

  • DHCP (Rango, reservas, máscara, enrutador, tiempo de arrendamiento)
  • DNS
  • Reenvío de puertos
  • Configuración
  • Libro de texto

DHCP

Rango

Opción 1: com.apple.nat.plist[1]

  1. sudo cp /Library/Preferences/SystemConfiguration/com.apple.nat.plist /Library/Preferences/SystemConfiguration/com.apple.nat.plist.orig// Copia de seguridad por si acaso

  2. sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict-add SharingNetworkNumberStart [START IP ADDRESS]

  3. sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict-add SharingNetworkNumberStart [END IP ADDRESS]

Opcion 2: /etc/bootpd.plist

  1. Activar Compartir Internet

  2. sudo nano /private/etc/bootpd.plist

3.

<key>net_range</key>
        <array>
             <string>[START IP ADDRESS]</string>
             <string>[END IP ADDRESS]</string>
        </array>

Tiempo de arrendamiento

  1. Activar Compartir Internet

  2. sudo nano /private/etc/bootpd.plist// No es necesario hacer una copia de seguridad, se volverá a crear en caso de que haya algún problema

3.

 <key>lease_max</key>
      <integer>[MAX TIME]</integer>
 <key>lease_min</key>
      <integer>[MIN TIME]</integer>

Máscara de subred

Opción 1: com.apple.nat.plist

  1. sudo cp /Library/Preferences/SystemConfiguration/com.apple.nat.plist /Library/Preferences/SystemConfiguration/com.apple.nat.plist.orig// Copia de seguridad por si acaso

  2. sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict-add SharingNetworkMask [SUBNET MASK]

Opcion 2: /etc/bootpd.plist

  1. Activar Compartir Internet

  2. sudo nano /private/etc/bootpd.plist

3.

<key>net_mask</key>
     <string>[SUBNET MASK]</string>

IP del enrutador 1. Active Compartir Internet

  1. sudo nano /private/etc/bootpd.plist

3.

<key>dhcp_router</key>
                    <string>[ROUTER IP ADDRESS]</string>

DNS

Cambiar de servidor

  1. Activar Compartir Internet

  2. sudo nano /private/etc/bootpd.plist

3.

<key>dhcp_domain_name_server</key>
     <array>
         <string>[DNS SERVER IP]</string>
     </array>

Modificar la configuración

Opción 1: servidor macOS

  • Usar servidor macOS | Servicio DNS
  • Una vez que lo encienda y modifique todas las configuraciones, dirá "Establezca la configuración de DNS de su red en [IP del SERVIDOR DNS] para usar este servidor"

    • Cambie el servidor (cómo está arriba) a esta dirección IP

Opción 2: /etc/hosts 4

  1. sudo nano /private/etc/hosts

  2. IP [TAB] DOMINIO


Reenvío de puertos 5


Configurar/ Activar Internet Sharing 6

  1. Preferencias del sistema abierto

  2. Ir a Compartir

  3. Seleccione el menú desplegable junto a "Compartir su conexión desde:" y elija una interfaz

  4. Marque las interfaces desde las que le gustaría "Compartir su conexión"

  5. Haga clic en Opciones WiFI y modifique la configuración allí

  6. Una vez que haya terminado, haga clic en "Aceptar" y luego marque "Compartir Internet" a la izquierda


Libro de texto/Glosario (no alfabético)

enrutador

DHCP : protocolo de configuración de host dinámico

DNS : sistema de nombres de dominio

Puerto

Cortafuegos : macOS Sierra: Panel de cortafuegos de Preferencias del sistema de seguridad y privacidad

Rango de IP

subred

Reservas DHCP

Rango de IP : compruebe si el puerto está abierto

Módem : Modulador-demodulador (¿¿¿¿¿¿¿¿Quién nombró esto???)

Siéntase libre de editar y agregar términos de libros de texto

En proceso de creación de una aplicación GUI para esto...
Hay algunos problemas con esto y es un poco inconsistente. Lo cambiaré pronto.
En cuanto al tiempo de arrendamiento de DHCP: solo está presente en /etc/bootpd.plist después de que la interfaz que estoy compartiendo esté conectada, entonces, ¿hay alguna manera de verificar que cambiarlo de 86400 realmente se detecta?
@alesplin iirc necesita bloquear el archivo a veces para que funcione

Absolutamente, puede descargar pfSense e instalarlo en una máquina virtual utilizando la aplicación de host de VM que elija, VirtualBox es un ejemplo gratuito.

Gracias por la sugerencia. Con la esperanza de hacer esto sin una VM, y debería ser posible, dado lo que puede hacer el uso compartido de Internet. Y la respuesta de Allan a continuación sugiere que es posible, incluso si tengo que recurrir a la línea de comandos. He agregado algo más a la pregunta anterior en busca de más aclaraciones con respecto a las respuestas suyas y de Allan. Si puede ofrecer algo más basado en eso, ¡gracias de antemano! :)
PD. Te votaría por esto, pero aparentemente todavía no tengo suficiente reputación para eso. Pero por favor, sé que lo haría si pudiera 😉
@DavidT pfSense fue diseñado desde cero como un enrutador/cortafuegos. Hace uso de pf, casi lo consideraría una GUI para pf con alguna capacidad extendida. ¿Hay alguna razón por la que una máquina virtual no sea una solución aceptable? pfSense se ejecutará con recursos mínimos.

cortafuegos FP. Ya está incluido con macOS. Es el mismo firewall que está en el centro de los productos de pfSense.

Documentación completa de PF

Hola. Gracias por eso. Suena prometedor. Y parece consistente con la respuesta anterior de Scottmeup. He agregado algo más a la pregunta anterior en busca de más aclaraciones con respecto a las suyas y sus respuestas. Si puede ofrecer algo más basado en eso, ¡gracias de antemano! :)
PD. Te votaría por esto, pero aparentemente todavía no tengo suficiente reputación para eso. Pero por favor, sé que lo haría si pudiera 😉