Etapas de solução de problemas do Linux e MacOS

Siga estas etapas para identificar e confirmar que você tem um proxy e para coletar os números de porta e host do proxy necessários para a solução de problemas.

  1. Abra uma nova janela Terminal.

  2. Execute o seguinte comando para recuperar detalhes de configuração de proxy específicos para sua rede. Substitua example.com pelo nome do host real que você deseja testar.

    networksetup -getsecurewebproxy "$(networksetup -listnetworkserviceorder | grep $(route get example.com | grep interface | awk -F: '{print $2}') | awk -FPort: '{print $2}' | awk -F, '{print $1}' | sed 's/^ //g')"
    
    Copy

    Exemplo de saída com uma configuração de proxy

    Enabled: Yes
    Server: 192.168.21.12
    Port: 3128
    Authenticated Proxy Enabled: 1
    

    Exemplo de saída sem uma configuração de proxy

    Enabled: No
    Server:
    Port: 0
    Authenticated Proxy Enabled: 0
    
  3. Além disso, você pode testar variáveis de ambiente comuns usadas para configurações de proxy com o seguinte comando:

    env | grep -i proxy
    
    Copy

    O comando retorna uma saída semelhante à seguinte:

    http_proxy=http://my.pro.xy:123
    HTTP_PROXY=http://my.pro.xy:123
    HTTPS_PROXY=http://my.pro.xy:123
    https_proxy=http://my.pro.xy:123
    NO_PROXY=localhost,.company.com,.amazonaws.com
    
    • Proxy encontrado: com base nessas configurações de variáveis de ambiente, você pode reunir o host e a porta do proxy necessários para testes posteriores.

    • Nenhum proxy encontrado: se a saída estiver vazia, provavelmente você não tem variáveis de ambiente definidas para uma configuração de proxy, o que precisa de mais testes.

    • O NO_PROXY define os hosts que um cliente pode usar para se conectar diretamente sem passar pelo servidor proxy.

Se você tiver um proxy

Você pode identificar o URL específico que está enfrentando problemas de conectividade. Embora seja benéfico testar todos os URLs listados na lista de permissões do Snowflake, talvez você queira se concentrar no URL que está causando problemas diretamente na sua configuração.

export http_proxy=http://<PROXY_HOST:PROXY_PORT> && export HTTP_PROXY=$http_proxy && export HTTPS_PROXY=$http_proxy && export https_proxy=$http_proxy

curl -v https://URL 2>&1 | tee | grep "Trying\|Connected\|Establish\|CONNECT\|subject\|issuer\|HTTP\|curl"
Copy

Como alternativa, você pode passar as configurações de proxy diretamente para curl (sem configuração as variáveis de ambiente primeiro), conforme mostrado:

  • Proxy não autenticado

    curl --proxy “<PROTOCOL>://<HOST>:<PORT>” ..rest of the arguments..
    
    Copy
  • Proxy autenticado

    curl --proxy “<PROTOCOL>://<HOST>:<PORT>” --proxy-user user:pass ..rest of the arguments..
    
    Copy

No Terminal, execute os seguintes comandos. Atualize o comando com o URL que está causando problemas. Substitua o <URL> pelo URL problemático. Além disso, substitua <PROXY_URL> pelas informações do seu proxy.

export http_proxy=http://<PROXY_URL> && export HTTP_PROXY=$http_proxy && export HTTPS_PROXY=$http_proxy && export https_proxy=$http_proxy

curl -v https://<URL> 2>&1 | tee | grep "Trying\|Connected\|Establish\|CONNECT\|subject\|issuer\|HTTP\|curl"
Copy

Esses comandos configuram seu ambiente para usar o proxy para solicitações HTTP e HTTPS e tentar se conectar ao URL do Snowflake especificado. Ele também exibe informações detalhadas sobre a tentativa de conexão, incluindo quaisquer conexões bem-sucedidas ou erros encontrados.

Exemplo de saída de conexão bem-sucedida:

➜  curl -v https://<account>.snowflakecomputing.com 2>&1 | tee | grep "Trying\|Connected\|Establish\|CONNECT\|subject\|issuer\|HTTP\|curl"
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying <IP ADDRESS>...
* Connected to <IP ADDRESS> (<IP ADDRESS>) port <PORT> (#0)
* Establish HTTP proxy tunnel to <account>.snowflakecomputing.com:443
> CONNECT <account>.snowflakecomputing.com:443 HTTP/1.1
> User-Agent: curl/7.79.1
< HTTP/1.1 200 Connection established
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
*  subject: CN=*.us-east-1.snowflakecomputing.com
*  subjectAltName: host "<account>.snowflakecomputing.com" matched cert's "*.us-east-1.snowflakecomputing.com"
*  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
> GET / HTTP/1.1
> User-Agent: curl/7.79.1
< HTTP/1.1 302 Found

Análise de saída:

  • “Conectado a…” indica uma conexão bem-sucedida com o proxy (<IP ADDRESS>) e o estabelecimento de um túnel HTTP para o Snowflake.

  • Códigos de status HTTP como HTTP/1.1 200 Connection established seguido por HTTP/1.1 302 Found sugerem um login bem-sucedido na página.

Após concluir essas etapas, continue com as ações de acompanhamento.

Se você não tem um proxy

No Terminal, execute o comando a seguir, certificando-se de atualizar o URL nos comandos para corresponder ao URL do Snowflake que você está testando.

curl -v https://<URL> 2>&1 | tee | grep "Trying\|Connected\|Establish\|CONNECT\|subject\|issuer\|HTTP\|curl"
Copy

Exemplo de saída de conexão bem-sucedida:

➜  curl -v https://<account>.snowflakecomputing.com 2>&1 | tee | grep "Trying\|Connected\|Establish\|CONNECT\|subject\|issuer\|HTTP\|curl"

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 52.22.29.117:443...
* Connected to <account>.snowflakecomputing.com (52.22.29.117) port 443 (#0)
*  subject: CN=*.us-east-1.snowflakecomputing.com
*  subjectAltName: host "<account>.snowflakecomputing.com" matched cert's "*.us-east-1.snowflakecomputing.com"
*  issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0> GET / HTTP/1.1
< HTTP/1.1 302 Found

Esta saída demonstra uma conexão bem-sucedida, indicando que seu sistema pode alcançar e se comunicar com o servidor Snowflake.

Exemplo de falha de conexão:

➜  curl -v https://<account>.snowflakecomputing.com 2>&1 | tee | grep "Trying\|Connected\|Establish\|CONNECT\|subject\|issuer\|HTTP\|curl"
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 52.22.29.117:443...
*   Trying 3.222.247.13:443...
*   Trying 54.81.51.170:443...
curl: (7) Failed to connect to <account>.us-east-1.snowflakecomputing.com port 443 after 3139 ms: Connection refused

Após concluir essas etapas, continue com as ações de acompanhamento.