6 votos

No se puede conectar a Internet en el bash usando Mac OS

Mi navegador funciona perfectamente usando Internet, sin embargo, cuando intenté usar este comando en bash:

ping -q -w1 -c1 google.com &>/dev/null && echo online || echo offline

Me da resultados "offline". También he probado otro en una red diferente:

ping -c 3 www.google.com

Vuelve:

PING www.google.com (74.125.193.147): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1

--- www.google.com ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss

Todo esto parece indicar que la terminal no pudo llegar a Internet. He intentado usar wifi y cable lan, los resultados son los mismos.

Necesito ejecutar un programa que requiere conexión a un servidor, me pregunto si tienes alguna solución para volver a ponerlo en línea. Estoy en MacOS 10.13 y estoy buscando determinar desde la línea de comandos si una conexión de red es viable.

¿Es esto posible?

0 votos

Por favor, editar tu pregunta para arreglar esto. Añade también qué navegador utilizas y la salida de curl https://google.com/ .

1 votos

Si curl funciona sospecho que algún filtrado hecho por su ISP

5voto

Oskar Puntos 1242

Prefiero utilizar la herramienta de utilidad de configuración del sistema para probar la accesibilidad en lugar de utilizar ping / host / nslookup u otro proxy para determinar si una entidad de red es o no accesible.

scutil -r google.com
Reachable

Los beneficios de esto son que si tienes conexiones VPN, dial up, módem, o un conflicto de enrutamiento, esto realmente probará que puedes llegar al dispositivo y no sólo resolver el nombre del host en caché, etc... en mi experiencia. (además, es mucho más difícil desordenar la indirección, los archivos, la lógica y obtienes una respuesta directa en inglés)

Como todas las buenas herramientas de línea de comando, devuelve 0 para hacerte saber que la respuesta que proporciona es segura y un error si tienes problemas para probar la accesibilidad.

 -r [-W] { nodename | address | local-address remote-address }
     Check the network reachability of the specified host name, IP
     address, or a pair of local and remote IP addresses.  One or more of
     the following strings will be reported to standard output.

     Not Reachable         The specified nodename/address cannot be
                           reached using the current network configura-
                           tion.

     Reachable             The specified nodename/address can be reached
                           using the current network configuration.

     Transient Connection  The specified nodename/address can be reached
                           via a transient (e.g. PPP) connection.

     Connection Required   The specified nodename/address can be reached
                           using the current network configuration but a
                           connection must first be established.  As an
                           example, this status would be returned for a
                           dialup connection that was not currently active
                           but could handle network traffic for the target
                           system.

     Connection Automatic  The specified nodename/address can be reached
                           using the current network configuration but a
                           connection must first be established.  Any
                           traffic directed to the specified name/address
                           will initiate the connection.

     Local Address         The specified nodename/address is one associ-
                           ated with a network interface on the system.

     Directly Reachable Addresss
                           Network traffic to the specified node-
                           name/address will not go through a gateway but
                           is routed directly to one of the interfaces on
                           the system.

     The reachability can also be monitored by specifying the -W (watch)
     option.  This will result in the current status being reported as
     well as the status when/if the network configuration changes.

     A zero exit status will be returned when the reachability status is
     reported correctly.  A non-zero exit status will be returned if
     errors are detected with an error reported to standard error.

Dado que el índice de páginas de manual de Apple es un PITA para usar, aquí hay un enlace esperanzadoramente más estable a toda la página del manual en línea: https://ss64.com/osx/scutil.html

Como bonus, aquí hay otra pregunta decente relacionada con la resolución de la escafandra autónoma: nslookup & dig fail; ping, traceroute, y scutil -r trabajo

1 votos

En realidad, esto no tiene el mismo significado que la orden sobre la que versaba la pregunta. La pregunta se centra en comprobar si tienes o no conexión a Internet enviando un paquete a Google y viendo si recibes respuesta. Tu respuesta no envía ningún paquete, ni dice si tienes o no conexión a Internet. Así que dependiendo de lo que esto necesita ser utilizado para, podría engañar al sistema a fallar al asumir una conexión a Internet está ahí, pero en realidad no lo es. Por supuesto, en la práctica [...]

0 votos

[...] en los sistemas de usuarios domésticos, tener google.com accesible suele significar que tienen conexión a internet. Pero sólo normalmente.

0 votos

@jksoegaard Agradezco mucho los comentarios. Intentaré trastear con esto y wireshark para confirmar que no se van paquetes en una prueba con mi configuración. Nunca he pillado scutil estar equivocado, que no he tratado de romper o realmente validar. ¡Gracias por plantar un error!

4voto

Jose Chavez Puntos 645

Tu problema es que estás usando opciones inválidas para el comando ping. Parece probable que hayas copiado una línea de comando destinada a ser usada en Linux, e intentaste usarla sin modificarla en MacOS.

El problema específico aquí es que Linux usa "-w" para especificar los tiempos de espera, mientras que MacOS usa "-t". Esto significa que su línea de comandos debería ser esta:

ping -q -t1 -c1 google.com &>/dev/null && echo online || echo offline

0 votos

No debería ping -c 3 www.google.com funcionar en cualquier caso?

0 votos

Bueno, escribió que lo probó en una "red diferente". Parece que esa red no tiene conexión a Internet, o sólo tiene un cortafuegos/conexión a Internet filtrada. He corregido el error en la línea de comandos que está intentando usar, así que por eso no me centré en ayudarle también con sus comandos de depuración.

0 votos

He probado ping -q -t1 -c1 google.com &>/dev/null && echo online || echo offline, también sale "offline".

0voto

Cuspy Code Puntos 101

Su orden. ping -c 3 www.google.com debería haber producido 3 paquetes de respuesta de Internet del tipo ICMP ECHO REPLY. El comando ping envía paquetes ECHO usando el protocolo ICMP, y las respuestas (si las hay) son paquetes de ECHO REPLY. El comando curl, por otro lado, envía paquetes HTTP usando el protocolo TCP. Dado que el último funciona y el primero no, probablemente hay algo entre su máquina y www.google.com que bloquea el protocolo ICMP. Muchos cortafuegos mal configurados hacen esto, así que ahí es donde empezaría a buscar la causa.

Bloquear la ICMP es una mala práctica ya que impide que funcionen cosas como el Descubrimiento de la MTU (MTU = Maximum Transmission Unit size). Esto impide que la mayoría del tráfico funcione si la MTU remota es más pequeña que la MTU local. Así que es una idea extremadamente mala bloquear el ICMP en el firewall.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X