Não é possível receber resposta para encurtar a solicitação contra o endereço IP privado do computador no OSX

2

Estou vivenciando uma questão interessante que estou lutando para chegar ao fundo e gostaria de receber qualquer insight sobre o que pode estar acontecendo.

Estou executando um Macbook Pro no OSX 10.13.6.

Meu problema é o seguinte ... Eu inicio uma ligação de servidor de nó para todas as interfaces através do endereço 0.0.0.0 . Eu sou capaz de Curl localhost:3000 e 127.0.0.1:3000 e acertar com sucesso o servidor e receber uma resposta.

Quando tento encurtar meu IP privado de minha máquina curl 192.168.1.113:3000 a solicitação é recebida pelo servidor e uma resposta é enviada, no entanto, a resposta nunca é recebida por curl. Colegas na rede conseguem com sucesso encurtar meu IP privado e obter uma resposta.

Aqui está o que eu observei até agora.

Eu libero minhas tabelas de roteamento netstat -rn se parece com isso.

Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.1        UGSc           74        0     en0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              3 1561554184     lo0
169.254            link#12            UCS             0        0     en0
192.168.1          link#12            UCS             0        0     en0
192.168.1.1/32     link#12            UCS             1        0     en0
192.168.1.1        70:4f:57:81:72:d2  UHLWIir        24       37     en0   1198
192.168.1.113/32   link#12            UCS             0        0     en0
224.0.0/4          link#12            UmCS            2        0     en0
224.0.0.251        1:0:5e:0:0:fb      UHmLWI          0        0     en0
239.255.255.250    1:0:5e:7f:ff:fa    UHmLWI          0        2     en0
255.255.255.255/32 link#12            UCS             0        0     en0

Meu IP privado tem um registro 192.168.1.113/32 que está vinculado à interface en0. Quando eu acesso o servidor usando curl no localhost e 127.0.0.1 nada muda nas minhas tabelas de roteamento.

Imediatamente após acessar curl 192.168.1.113:3000 da minha máquina, um novo registro aparece na tabela de roteamento, conforme mostrado abaixo.

Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.1        UGSc           71        0     en0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              5 1561554801     lo0
169.254            link#12            UCS             0        0     en0
192.168.1          link#12            UCS             1        0     en0
192.168.1.1/32     link#12            UCS             1        0     en0
192.168.1.1        70:4f:57:81:72:d2  UHLWIir        22       43     en0   1170
192.168.1.113/32   link#12            UCS             1        0     en0
192.168.1.113      88:e9:fe:4c:a3:58  UHLWIi          2        8     lo0
192.168.1.255      ff:ff:ff:ff:ff:ff  UHLWbI          0       11     en0
224.0.0/4          link#12            UmCS            2        0     en0
224.0.0.251        1:0:5e:0:0:fb      UHmLWI          0        0     en0
239.255.255.250    1:0:5e:7f:ff:fa    UHmLWI          0       18     en0
255.255.255.255/32 link#12            UCS             0        0     en0

A linha tem uma interface de gateway que é a interface en0 e está ligada à interface de loopback.

192.168.1.113 88:e9:fe:4c:a3:58 UHLWIi 2 8 lo0

Eu estou querendo saber se os pacotes de resposta estão sendo roteados de uma maneira ruim quando a solicitação está sendo feita dentro do host. Tudo ajuda apreciada.

EDITAR - > ifconfig abaixo

ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
    inet 127.0.0.1 netmask 0xff000000
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
    nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
XHC0: flags=0<> mtu 0
XHC1: flags=0<> mtu 0
XHC20: flags=0<> mtu 0
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 32:00:f0:81:a8:01
    media: autoselect <full-duplex>
    status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 32:00:f0:81:a8:00
    media: autoselect <full-duplex>
    status: inactive
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 32:00:f0:81:a8:05
    media: autoselect <full-duplex>
    status: inactive
en4: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 32:00:f0:81:a8:04
    media: autoselect <full-duplex>
    status: inactive
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 88:e9:fe:4c:a3:58
    inet6 fe80::a5:7168:25d:73ec%en0 prefixlen 64 secured scopeid 0xc
    inet 192.168.1.113 netmask 0xffffff00 broadcast 192.168.1.255
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
    ether 0a:e9:fe:4c:a3:58
    media: autoselect
    status: inactive
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484
    ether a2:cf:3c:7c:70:56
    inet6 fe80::a0cf:3cff:fe7c:7056%awdl0 prefixlen 64 scopeid 0xe
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=63<RXCSUM,TXCSUM,TSO4,TSO6>
    ether 32:00:f0:81:a8:01
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x2
    member: en1 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 8 priority 0 path cost 0
    member: en2 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 9 priority 0 path cost 0
    member: en3 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 10 priority 0 path cost 0
    member: en4 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 11 priority 0 path cost 0
    nd6 options=201<PERFORMNUD,DAD>
    media: <unknown type>
    status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
    inet6 fe80::61db:32d6:4611:1341%utun0 prefixlen 64 scopeid 0x10
    nd6 options=201<PERFORMNUD,DAD>
en5: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether ac:de:48:00:11:22
    inet6 fe80::aede:48ff:fe00:1122%en5 prefixlen 64 scopeid 0x7
    nd6 options=201<PERFORMNUD,DAD>
    media: autoselect
    status: active

O servidor pode ser iniciado no Node

require('http')
 .createServer(function (req, res) {
   res.end('OK');
 })
 .listen(3000, '0.0.0.0');

ou Python 2

python -m SimpleHTTPServer 3000
    
por Simon McClive 01.08.2018 / 13:03

1 resposta

1

Ao tentar recriar o problema, vi uma atribuição esporádica do IP primário à interface lo0 . Parece que a manipulação das tabelas de roteamento está causando o problema.

Para redefinir sua interface de rede para uma configuração "padrão" sem reinicializar, você pode fazer o seguinte. (Nota, o pior caso você pode ter que reiniciar se as coisas ficarem nerfed) (Aviso: este IRÁ INTERRUPÇÃO todas as conexões e serviços IP existentes):

  1. Desligue todos os utilitários e serviços de rede, como VPNs
  2. Desativar interfaces de rede existentes. Na maioria dos MacBooks, isso será en0

Procure a interface que representa seu IP principal. Você pode encontrar isso com este comando:

ping 'hostname'

Porky:Downloads hogstrom$ ping 'hostname'
PING porky.local (10.0.0.114): 56 data bytes
64 bytes from 10.0.0.114: icmp_seq=0 ttl=64 time=0.055 ms

Procure por esse endereço IP (neste caso, é 10.0.0.114) na saída do seu ifconfig output

ifconfig

    en0: flags=8863 mtu 1500
        ether a0:99:9b:1a:a7:f1
        inet6 fe80::874:c2c9:c839:ac4a%en0 prefixlen 64 secured scopeid 0x5
        inet 10.0.0.114 netmask 0xffffff00 broadcast 10.0.0.255
        nd6 options=201
        media: autoselect
        status: active

Anote o nome da interface (neste exemplo é en0 )

  1. Desligue a rede atual

    sudo ifconfig en0 down
    '
  2. Liberar as rotas existentes sudo route -n flush

Observação: o sinalizador -n é necessário, caso contrário, você ficará esperando por períodos prolongados de tempo limite de rede; que são esperados quando estamos liberando a tabela de roteamento.

Aqui está a aparência da tabela de roteamento quando o primário está inativo e o route -n flush foi executado algumas vezes. Eu executo o comando três vezes.

Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              1    97314     lo0
224.0.0            link#1             UmCS            1        0     lo0
224.0.0.251        link#1             UHmW3I          0        0     lo0     12
  1. Abra o encerramento da interface principal na etapa 3.
sudo ifconfig en0 up

Use o nome da interface da etapa 3.

  1. Verifique a tabela de roteamento da rede:

netstat -rn

Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.0.0.1           UGSc           92        0     en0
10/24              link#5             UCS             1        0     en0
10.0.0.1/32        link#5             UCS             2        0     en0
10.0.0.1           2c:fd:a1:2:49:40   UHLWIir        24        5     en0   1198
10.0.0.114/32      link#5             UCS             0        0     en0
10.0.0.255         ff:ff:ff:ff:ff:ff  UHLWbI          0        2     en0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              1    97314     lo0
169.254            link#5             UCS             0        0     en0
224.0.0/4          link#5             UmCS            2        0     en0
224.0.0.251        1:0:5e:0:0:fb      UHmLWI          0        0     en0
239.255.255.250    1:0:5e:7f:ff:fa    UHmLWI          0        2     en0
255.255.255.255/32 link#5             UCS             0        0     en0

Nota: o IP primário (10.0.0.114 no meu sistema) não está associado a lo0, que foi o caso com base nos diagnósticos fornecidos. Eu observei isso acontecendo ao ajustar a tabela de roteamento, mas é anormal e, muito provavelmente, a causa do problema.

  1. Verifique a configuração de rede

Eu testei o ping do servidor DNS primário do Google.

ping 8.8.8.8

Porky:Downloads hogstrom$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=120 time=25.527 ms

Neste ponto, você deve ter uma rede funcionando e poder acessar seu servidor de nó usando o host local e seu endereço IP principal.

    
por 07.08.2018 / 16:29