¿Cómo puedo habilitar el uso compartido de Internet sin usar la GUI o AppleScript?

por alguna extraña razón, mi pestaña de preferencias para compartir falla (es una larga historia y parece que no hay una buena solución para ello, está buscando un objeto ui que ya no existe).

De todos modos, quiero habilitar el uso compartido de Internet para compartir la conexión a Internet de mi macbook con mi iPad, pero no puedo encontrar una manera de hacerlo sin la interfaz gráfica de usuario o el script de Apple (que básicamente llama a la interfaz gráfica de usuario).

El problema es que necesito (1) configurar y (2) ejecutar el demonio de uso compartido de Internet. Ejecutar el daemon es fácil pero no puedo configurarlo.

Hasta ahora, estoy pensando que necesito 1- habilitar el enrutamiento 2- ejecutar natd 3- asegurarme de que el firewall esté configurado correctamente 4- crear una red inalámbrica punto a punto en wifi. Otra opción es usar sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plistel problema. Necesito al menos un archivo .plist de Snow Leopard válido para que esto funcione.

Otra solución que probé es usar una máquina virtual (yo uso una VM de Ubuntu en Parallels) para compartir la conexión. Funciona pero es demasiado trabajo.

(En caso de que se lo pregunte, cuando hago clic en triturar en la pestaña de preferencias, falla y en la consola aparece un error como "Clase desconocida 'AppleSharing_NatManager' usando 'NSObject' en su lugar")

¿Algún comentario?

No, lo leí antes de publicar. Por lo general, lo que las personas deben hacer cuando quieren automatizar el uso compartido de Internet mediante un script es usar scripts de Apple (que básicamente "hacen clic" en los botones correctos y las casillas de verificación para hacer el trabajo. Como expliqué, no puedo usar eso porque mi interfaz de usuario de preferencias es roto Necesito una forma más "unixy" de hacer esto.
No lea la respuesta seleccionada, lea el enlace uno, que tiene la mayor cantidad de votos y no usa secuencias de comandos GUI.
@Ali: Supongo que podría ser más fácil arreglar su panel de preferencias ;-) ¿Ha probado si se abre correctamente cuando se inicia desde una cuenta de usuario diferente? ¿Y ha intentado quitar el archivo .plist diferente para ver si el problema persiste?
@mankoff eres tan humilde, sin mencionar que fue tu respuesta no seleccionada pero con la mayor cantidad de votos. :) +1!
@ghoppe, caramba :). De todos modos, traté de vincular a mi respuesta, pero el software lo eliminó solo de la pregunta, por lo que es difícil de encontrar ...
@Ali, me doy cuenta de que mi solución vinculada no funciona para usted. Mi sugerencia: solucione el problema, no el síntoma. Averigüe por qué su panel/plist de preferencias falla, ya sea un objeto de interfaz de usuario extraño o un plist no válido, y arréglelo.
@Ali, ¿su idioma de interfaz de usuario es inglés? Creo que a veces hay problemas con otros idiomas.
@mankoff Mi interfaz de usuario es inglés. Tengo otros teclados (Dvorak y persa) instalados, pero la interfaz de usuario es el inglés estadounidense estándar.
@Asmus @mankoff, he intentado resolver el "problema", ¡pero no se mueve! No quiero reinstalar mi sistema operativo.
@makoff, gracias. Su solución para iniciar el demonio funciona bien. pero mi problema es que necesito un plist adecuado u otros medios para configurar mi uso compartido de Internet. Sin la configuración adecuada, ejecutar el demonio no ayudará mucho.
¿alguien puede compartir su plist conmigo? Necesito compartir mi lan Internet a mi Wifi

Respuestas (4)

El plist que otros han mencionado ( /System/Library/LaunchDaemons/com.apple.InternetSharing.plist) nunca parece cambiar independientemente del estado de Internet Sharing, al menos bajo Snow Leopard.

Creo que la respuesta se encuentra en algún lugar de /usr/libexec/InternetSharingy /etc/boopd.plist.

Primero, intente ejecutar:

sudo /usr/libexec/InternetSharing -d

Probablemente verás mensajes como el siguiente:

InternetSharing[40307]: InternetSharing starting

/etc/bootpd.plist is empty/missing

InternetSharing[40307]: no primary service specified, exiting

Resulta que /etc/bootpd.plistse crea cuando se inicia Internet Sharing desde el panel de preferencias Sharing y se elimina cuando se desactiva Internet Sharing.

Si se siente aventurero, puede intentar crear manualmente el archivo plist. Habilité Internet Sharing con Ethernet compartido con AirPort y copié el texto del /etc/bootpd.plistarchivo resultante en un pastebin aquí: http://pastebin.com/gQVzARfa

Este plist no contiene todas las configuraciones necesarias (por ejemplo, SSID para la conexión inalámbrica compartida), así que supongo que no funcionará por sí solo. Todavía estoy buscando las otras configuraciones y actualizaré esta respuesta si las encuentro. (Es posible que algunos se pasen como parámetros a /usr/libexec/InternetSharing, pero no puedo encontrar ninguna documentación al respecto).

Una vez que haya creado el archivo plist, intente ejecutarlo sudo /usr/libexec/InternetSharing -dde nuevo. Es posible que podamos resolver este error a la vez. En este punto, es realmente un ejercicio académico, ya que sería mucho más fácil reinstalar su sistema operativo para solucionar el problema del panel de preferencias. ;]

Si por algún milagro comienza, creo que /usr/libexec/InternetSharing -qdejará de compartir.

Jugar con los archivos de su sistema siempre es algo arriesgado, así que asegúrese de tener una copia de seguridad reciente de sus archivos importantes (recomiendo Dropbox ).

@Austin hombre, eso es genial, resulta que incluso si hago /etc/bootpd.plist si solo lo toco o copio el contenido que proporcionó en él (incluso si configuro su permiso en 444) se eliminará cuando lo ejecute /usr/libexec/InternetSharing¡pero lo bueno es que ahora puedo conectarme a mi Mac desde mi iPad! y SSH en él. Todavía no enruta los paquetes, así que no tengo Internet en mi iPad, pero eso es un progreso. Por cierto, el ícono de AirPort cambia a una flecha hacia arriba que creo que es el signo de compartir Internet. ¡Yo también soy fan de Dropbox!
@Austin, por cierto, '/usr/libexec/InternetSharing' no vuelve para mí (solo me quedo atascado hasta que presiono ctrl-c) y no veo la tercera línea de lo que mencionaste anteriormente (la 'InternetSharing[40307 ]: ningún servicio primario especificado, saliendo').
@Ali Es interesante que se cuelgue antes de salir... Podría ser un síntoma del mismo problema que afecta a sus paneles de preferencias. Tal vez intente echar un vistazo a la Consola ( /Applications/Utilities/Console.app) y ver si hay algún mensaje útil allí. La "flecha hacia arriba" es una indicación de AirPort Internet Sharing, por lo que es una buena señal, al menos.
@Austin, se atasca, no falla, en la consola veo "5/2/11 3:30:18 PM UserEventAgent[410] **** ERROR: SCNetworkSignatureCopyActiveIdentifiers devolvió cero". Que de acuerdo con este archivo de encabezado ( opensource.apple.com/source/configd/configd-210/… ) debería devolver una lista de redes disponibles o algo así.
@Austin, ¿sabe si puedo habilitar el enrutamiento (reenvío de paquetes) entre las dos interfaces de red? esa es, creo, la última pieza de mi rompecabezas.
@Ali ¿Quizás estés buscando el demonio NAT ( /usr/sbin/natd)? Documentos aquí: developer.apple.com/library/mac/#documentation/Darwin/Reference/… Asegúrese de seguir primero los pasos en la parte inferior.

Para solucionar el problema de UUID, puede buscar el UUID de la máquina system_profiler | grep 'Hardware UUID'y actualizar el archivo.

Esto es lo que hice cuando tuve que obtener una copia de /Library/Preferences/SystemConfiguration/com.apple.nat.plistotra Mac cuando noté que mi máquina no la tenía.

A pesar de todo esto, todavía estoy atascado tratando de compartir mi conexión a Internet desde Ethernet al aeropuerto.

La ejecución sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plistactiva la interfaz gráfica de usuario de preferencias de uso compartido de Internet, pero con una configuración incorrecta (compartir desde el aeropuerto a Ethernet; necesito lo contrario).

A pesar de la solicitud de carga de launchctl, los registros de errores aún muestran lo mismo que la salida parasudo /usr/libexec/InternetSharing -d

Oct 14 01:54:39 boatdelight-lm InternetSharing[52015]: InternetSharing starting
Oct 14 01:54:39 boatdelight-lm InternetSharing[52015]: no primary service specified, exiting

He intentado esto con y sin crear manualmente el /etc/bootpd.plistarchivo.

man networksetup 

o

man systemsetup 

podría hacerlo

gracias no sabia de estos dos comandos. Pero no hay nada allí sobre compartir Internet (o nat o enrutamiento).

¡Gracias a @Austin y otros, finalmente resolví el problema! Pensé, maldita sea, esta es una caja de Unix, ¡debería poder averiguar qué está pasando! Encontré otra máquina Snow Leopard en el trabajo que nunca había activado Internet Sharing y en una terminal ejecuté:
touch now && sudo find -x / -newer now

y obtuve una breve lista de archivos que siempre aparecen (índices destacados, archivos de registro en /private/log y, si usa FileVault, un montón de paquetes dispersos cifrados)

luego habilité el uso compartido de Internet y esta vez corrí: sudo find -x / -newer nowobviamente sin el "toque ahora". Resulta que, además de un montón de archivos de registro y otra basura, hay muchos archivos que se modifican. Los copié en mi máquina y modifiqué los nombres de las interfaces y algunos otros nombres de host y direcciones IP y cosas por el estilo. El problema sucedió porque /Library/Preferences/SystemConfiguration/com.apple.nat.plisthay una clave de servicio principal que está configurada en un UUID y es diferente en cada máquina que probé (2 máquinas en realidad) y no funciona si solo la copia de una máquina a la siguiente.

* SI TIENE PRISA SOLO LEA ESTA PARTE *

Desde el principio evité reinstalar mi sistema operativo porque tenía tantas instalaciones y configuraciones que no quería perder. Resultó que si usa el DVD original que viene con su máquina y reinstala su sistema operativo, TODAS SUS APLICACIONES, DIRECTORIO DE INICIO, modificaciones personalizadas, puertos mac e instalaciones de fink, preferencias, montajes de red, ubicaciones de red, herramientas de desarrollo, TODO ESTÁ CONSERVADO. ¡PERO REINSTALA LOS COMPONENTES PRINCIPALES DEL SISTEMA que corrigen mi panel de preferencias para compartir!