macos - redes - mi mac dice wifi no configurado
Interfaz de red virtual en Mac OS X (12)
Algunos otros parecían insinuar esto, pero a continuación se demuestra el uso de ifconfig para crear un vlan y probar DNS en la interfaz virtual (usando minidns ) en OS X 10.9.5:
$ sw_vers -productVersion
10.9.5
$ sudo ifconfig vlan169 create && echo vlan169 created
vlan169 created
$ sudo ifconfig vlan169 inet 169.254.169.254 netmask 255.255.255.255 && echo vlan169 configured
vlan169 configured
$ sudo ./minidns.py 169.254.169.254 &
[1] 35125
$ miniDNS :: * 60 IN A 169.254.169.254
$ dig @169.254.169.254 +short test.host
Request: test.host. -> 169.254.169.254
Request: test.host. -> 169.254.169.254
169.254.169.254
$ sudo kill 35125
$
[1]+ Exit 143 sudo ./minidns.py 169.254.169.254
$ sudo ifconfig vlan169 destroy && echo vlan169 destroyed
vlan169 destroyed
Sé que puede hacer una interfaz de red virtual en Windows (consulte here ), y en Linux también es bastante fácil con alias de IP, pero ¿existe algo similar para Mac OS X? He estado buscando adaptadores de bucle invertido, interfaces virtuales y no pude encontrar una buena solución.
Puede crear una nueva interfaz en el panel de red, basada en una interfaz existente, pero no actuará como una interfaz real completamente funcional (si la interfaz original está inactiva, entonces la derivada también está inactiva).
Este escenario es necesario cuando se trabaja en una situación completamente desconectada. Incluso entonces, tiene sentido tener capacidades de red cuando se ejecutan servidores en una instalación de VMWare. Esas máquinas virtuales pueden ser alcanzadas por su dirección IP, pero no por su nombre DNS, incluso si ejecuto un servidor DNS en una de esas máquinas virtuales. Al configurar una interfaz para usar el servidor DNS virtual, pensé que podría probar algunos escenarios DNS. Desafortunadamente, ninguna interfaz está resolviendo nombres DNS si ninguno de ellos está inactivo ...
Aquí hay una buena guía: http://gerrydevstory.com/2012/08/20/how-to-create-virtual-network-interface-on-mac-os-x/
Básicamente, selecciona un adaptador de red en el panel Redes de las preferencias del sistema, luego haz clic en el engranaje para "Duplicar servicio". Después de duplicar el servicio, usted asigna manualmente una IP en uno de los rangos de direcciones privadas. Luego haz ping para asegurarte;)
Con respecto a la respuesta BRILLIANT de @bmasterswizzle
, más específicamente, a la pregunta de @DanRamos
sobre cómo forzar el estado de enlace de la nueva interfaz a "arriba". Utilizo este script, de cuyo origen no recuerdo, pero que funciona fabulosamente (en coordinación con @bmasterswizzles "Mona Lisa" de respuestas ) ...
#!/bin/zsh
[[ "$UID" -ne "0" ]] && echo "You must be root. Goodbye..." && exit 1
echo "starting"
exec 4<>/dev/tap0
ifconfig tap0 10.10.10.1 10.10.10.255
ifconfig tap0 up
ping -c1 10.10.10.1
echo "ending"
export PS1="tap interface>"
dd of=/dev/null <&4 & # continuously reads from buffer and dumps to null
No estoy muy seguro de entender la alteración del mensaje al final, o ...
dd of=/dev/null <&4 & # continuously reads from buffer and dumps to null
Pero lo que sea. funciona. link light🚦: verde ✅. lo ama 💚.
Eche un vistazo a este tutorial, es para FreeBSD pero también se aplica a OS X. http://people.freebsd.org/~arved/vlan/vlan_en.html
El adaptador de bucle invertido siempre está activo.
ifconfig lo0 alias 172.16.123.1 agregará un alias IP 172.16.123.1 al adaptador de bucle invertido
ifconfig lo0 -alias 172.16.123.1 lo eliminará
Es posible usar el dispositivo TUN / TAP. http://tuntaposx.sourceforge.net/
He recurrido a ejecutar PFSense, un enrutador / firewall basado en BSD para lograr este objetivo ....
¿por qué? porque el Servidor OS X se pone muy INCREÍBLE sin una IP Estática ...
así que después de luchar con él durante DAYS para hacer NAT y DHCP y firewall y ...
Estoy intentando esto es paralelos ...
te dejará saber cómo va ...
Que quieres decir con
"pero no actuará como una interfaz real completamente funcional (si la interfaz original está inactiva, entonces la derivada también está inactiva"
?
Puedo hacer una nueva interfaz, basarla en una ya existente, luego desactivar la existente y la nueva sigue funcionando. Sin embargo, hacer una segunda interfaz no crea una interfaz real (cuando se comprueba con ifconfig), simplemente asignará una segunda IP a la ya existente (sin embargo, esta puede ser DHCP mientras la primera está codificada, por ejemplo).
Entonces, ¿lo entendí bien, que desea crear una interfaz, no vinculada a ninguna interfaz real? ¿Cómo se usaría esta interfaz? Por ejemplo, si desconecta todas las redes WLAN y extrae todos los cables de red, ¿a dónde enviaría esta interfaz el tráfico si le envía tráfico? Tal vez su pregunta no esté clara, podría ser útil redactarla de nuevo, por lo que está claro qué intenta hacer con esta "interfaz virtual" una vez que la tiene.
Como mencionó "alias IP" en su pregunta, esto significaría una interfaz de alias. Pero una interfaz de alias siempre está vinculada a una interfaz real. La diferencia es que en Linux una interfaz de este tipo es realmente una interfaz (por ejemplo, una interfaz de alias para eth0 podría ser eth1), mientras que en Mac no se crea una interfaz real , sino que se crea una interfaz virtual que puede configurarse y usarse de forma independiente, pero sigue siendo la misma interfaz físicamente y, por lo tanto, no se genera ninguna nueva interfaz con nombre (solo tiene dos interfaces, que de hecho son en0, pero ambas pueden habilitarse / deshabilitarse y configurarse de forma independiente).
Respondiendo en particular a:
Puede crear una nueva interfaz en el panel de red, basada en una interfaz existente, pero no actuará como una interfaz real completamente funcional (si la interfaz original está inactiva, entonces la derivada también está inactiva).
Esto se puede lograr usando un dispositivo Tun / Tap como lo sugiere psv141, y manipulando el archivo /Library/Preferences/SystemConfiguration/preferences.plist
para agregar un NetworkService basado en una interfaz tun o tap. Mac OS X no permitirá la creación de un NetworkService basado en una interfaz de red virtual, pero se puede manipular directamente el archivo preferences.plist
para agregar el NetworkService a mano. Básicamente, abriría el archivo preferences.plist
en Xcode (o editaría el XML directamente, pero es probable que Xcode sea más infalible) y copiará la configuración desde una interfaz Ethernet existente. El lugar para crear el nuevo NetworkService se encuentra en "NetworkServices", y si su Mac tiene un dispositivo Ethernet, el perfil NetworkService también estará bajo esta entrada de propiedad. La entrada de Ethernet se puede copiar casi literalmente, los únicos campos que en realidad estarías cambiando son:
- UUID
- UserDefinedName
- Configuración de IPv4 y configure la interfaz en su dispositivo tun o tap (es decir, tun0 o tap0).
- Servidor DNS si es necesario
Luego, también manipularía la ubicación particular para la que desea este NetworkService (recuerde que Mac OS X puede configurar todas las interfaces de red que dependen de su "Ubicación"). El UUID de ubicación predeterminado se puede obtener en la raíz de PropertyList como la clave "CurrentSet". Después de averiguar qué ubicación (o conjunto) desea, expanda la propiedad Establecer y agregue entradas en Global / IPv4 / ServiceOrder con el UUID del nuevo NetworkService. También en la propiedad Establecer, necesita expandir la propiedad del Servicio y agregar el UUID aquí como un diccionario con una entrada de Serie con la clave __LINK__ y valor como el UUID (use las otras interfaces como ejemplo).
Después de que haya modificado su archivo preferences.plist
, simplemente reinicie y NetworkService estará disponible en SystemPreferences-> Network. Tenga en cuenta que hemos imitado un dispositivo Ethernet para que la capa de redes de Mac OS X tenga en cuenta que "un cable está desenchufado" y no le permitirá activar la interfaz a través de la GUI. Sin embargo, dado que el dispositivo subyacente es un dispositivo tun / tap y tiene una dirección IP, la interfaz se activará y se agregará el ruteo adecuado en el nivel BSD.
Como referencia, esto se usa para hacer magia de enrutamiento especial.
En caso de que hayas llegado tan lejos y estés teniendo problemas, debes crear el dispositivo tun / tap abriendo uno de los dispositivos en / dev /. Puede usar cualquier programa para hacer esto, pero yo soy un fanático de la anticuada C:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main()
{
int fd = open("/dev/tun0", O_RDONLY);
if (fd < 0)
{
printf("Failed to open tun/tap device. Are you root? Are the drivers installed?/n");
return -1;
}
while (1)
{
sleep(100000);
}
return 0;
}
Ve a Preferencias de red.
En la parte inferior de la lista de adaptadores de red, haz clic en los iconos +
Seleccione la interfaz existente que desea arp (digamos Ethernet 1), y proporcione el nombre del servicio que desea para el nuevo puerto (digamos Ethernet 1.1) luego presione crear.
Ahora tiene la nueva interfaz virtual en la interfaz gráfica de usuario y puede administrar las direcciones IP, etc. de la manera normal.
ifconfig -a confirmará que tiene varias direcciones IP en la interfaz y que seguirán allí cuando reinicie.
Es una Mac. No luches, hazlo de la manera más fácil.
ifconfig nombre de interfaz crear creará una interfaz virtual,
si se encuentra en un entorno de desarrollo y quiere acceder a algún servicio que ya se esté ejecutando en el host local / máquina host. en acoplador para Mac tiene otra opción. use docker.for.mac.localhost en lugar de localhost en el contenedor acoplable. docker.for.mac.host.internal debe usarse en lugar de docker.for.mac.localhost de Docker Community Edition 17.12.0-ce-mac46 2018-01-09. esto le permite conectarse al servicio que se ejecuta en su mac on-line desde un contenedor docker. Por favor consulte los enlaces a continuación.