Roteamento WIFI e LAN para tráfego específico

12

Eu tenho dois dispositivos de rede a bordo do meu macbook pro:

  1. WIFI (en1): usado para tráfego geral. Conecta-se a um ip 192.168.19. * Via DHCP
  2. LAN (en0): usado para tráfego específico. Conecta-se a um ip 192.168.2.10 como um IP estático. Não se conecta a um roteador, apenas um comutador para conexão de roteamento direto .

Tenho 4 endereços IP que preciso acessar na LAN:

  1. 192.168.2.1
  2. 192.168.2.21
  3. 192.168.2.20
  4. 192.168.2.30

O restante do tráfego precisa ir para o Wi-Fi. Tentei configurar uma tabela de roteamento para os endereços IP específicos, mas só consegui bagunçar minha rede. Não me aventuro no mundo das redes com muita frequência, mas esse foi o último comando que tenho tentado:

sudo route add -host 192.168.2.30 -interface en0

Este comando acabou com a minha capacidade de usar ping. Ele me disse que o ping não podia alocar memória (isso é possível)? Também matou meu acesso wifi. O logoff e o logon novamente resolveram o problema. Realmente não me importo de tornar essa solução permanente, por isso estou bem com um roteamento temporário.

EDITAR:

Se atualmente estou tentando:

sudo route flush
sudo route add default 192.168.19.1

Isso faz com que tudo funcione por cerca de um minuto. Mas, após esse minuto, "esquece" o roteamento para WiFi, mantendo o roteamento da LAN (en0). Se eu desconectar e reconectar meu cabo LAN (en0), o processo funcionará por mais um minuto.

EDIT 2:

Estes foram alguns dos comandos inseridos como uma solicitação por d34dh0r53.

$ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.2.1        UGSc            4        0     en0
default            192.168.19.1       UGScI           0        0     en1
127                127.0.0.1          UCS             0        1     lo0
127.0.0.1          127.0.0.1          UH              5  1429023     lo0
169.254            link#4             UCS             0        0     en0
192.168.2          link#4             UCS             4        0     en0
192.168.2.1        0:27:22:2e:5f:1a   UHLWIi          2        0     en0   1199
192.168.2.10       127.0.0.1          UHS             0        0     lo0
192.168.2.30       90:a2:da:0:f5:63   UHLWIi          1     1433     en0   1191
192.168.2.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        7     en0
192.168.19         link#5             UCS             2        0     en1
192.168.19.1       3e:d0:f8:aa:28:56  UHLWIi          0        2     en1   1192
192.168.19.3       127.0.0.1          UHS             1        0     lo0
192.168.19.255     ff:ff:ff:ff:ff:ff  UHLWbI          0        5     en1

Internet6:
Destination                             Gateway                         Flags         Netif Expire
::1                                     link#1                          UHL             lo0
fe80::%lo0/64                           fe80::1%lo0                     UcI             lo0
fe80::1%lo0                             link#1                          UHLI            lo0
fe80::%en0/64                           link#4                          UCI             en0
fe80::226:4aff:fe00:b68a%en0            0:26:4a:0:b6:8a                 UHLI            lo0
fe80::%en1/64                           link#5                          UCI             en1
fe80::226:bbff:fe03:cbd%en1             0:26:bb:3:c:bd                  UHLI            lo0
ff01::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff01::%en0/32                           link#4                          UmCI            en0
ff01::%en1/32                           link#5                          UmCI            en1
ff02::%lo0/32                           fe80::1%lo0                     UmCI            lo0
ff02::%en0/32                           link#4                          UmCI            en0
ff02::%en1/32                           link#5                          UmCI            en1
$ traceroute -n 192.168.2.1
traceroute to 192.168.2.1 (192.168.2.1), 64 hops max, 52 byte packets
 1  192.168.2.1  2.499 ms  3.392 ms  3.829 ms
$ traceroute -n google.com
traceroute: unknown host google.com
jakebird451
fonte
O sistema operacional lida com roteamento, não com o hardware.
Ignacio Vazquez-Abrams
Está tudo 192.168.2.X na LAN? Se for, isso torna a solução muito mais simples.
LawrenceC
@ultrasawblade Sim, tudo em que a rede é 192.168.2. *
jakebird451

Respostas:

11

Você não precisa criar regras de roteamento manualmente para essa configuração, desde que todos os endereços 192.168.2.x com os quais você deseja se comunicar estejam na interface com o endereço 192.168.2.x.

  1. Vá para Preferências do Sistema -> Rede
  2. Selecione seu dispositivo Ethernet, verifique se "Configurar IPv4" está definido como "Manualmente", se sua máscara de sub-rede está definida como 255.255.255.0 e se a caixa do roteador está vazia.

Uma vez feito isso, netstat -rnainda deve mostrar as rotas para ambas as sub-redes, mas apenas uma rota "link # 4" no lugar da rota padrão até 192.168.2.1.

Se você não deseja uma rota padrão, deixe a caixa do roteador em branco. O valor na caixa do roteador é usado apenas para configurar uma rota padrão por meio dessa interface de rede e não é usado para mais nada.

rakslice
fonte
Obrigado! Foi isso! Eu tinha tudo configurado corretamente, exceto no campo roteador. Coloquei o endereço IP 192.168.2.1no campo do roteador para corresponder a um "roteador" no lado da LAN. Eu pensei que era necessário, mas agora vejo que assumiu a rota padrão para o tráfego geral.
jakebird451
Obrigado por isso! Teve o mesmo problema e funcionou perfeitamente para mim.
BaronVonKaneHoffen
4

O problema é que sua en0interface está adicionando uma rota padrão que tem precedência sobre a rota padrão estabelecida pela interface 802.11. Não sei exatamente por que, mas é o fato de o BSD preferir uma interface com fio a uma interface sem fio ou de uma interface configurada estaticamente em vez de uma interface dinamicamente configurada. Você pode dizer que a en0rota padrão está sendo usada pela Refscoluna; Refsé uma métrica que indica o número atual de usos ativos da rota, para que possamos ver que está recebendo todo o tráfego.

A solução é remover essa rota, preferencialmente permanentemente da tabela de roteamento, para que o tráfego destinado a hosts diferentes daqueles em suas redes locais atravesse o gateway padrão estabelecido pelo DHCP en1. A primeira coisa que gostaria de verificar é no painel de configuração para en0garantir que você não inseriu nada no routercampo. As informações nesse campo são adicionadas como um gateway padrão. Se isso não funcionar, precisamos excluir manualmente a rota, o motivo que route flushnão funciona é que acredito que ele diz ao OS X para recarregar suas informações de roteamento dos arquivos de configuração da interface, revertendo sua alteração após um curto período de tempo. O comando a seguir deve remover a rota padrão para oen0 até que a rede seja reiniciada ou o sistema seja IPL:

sudo route delete -net 0.0.0.0 192.168.2.1

Se você deseja tornar essa alteração permanente, você pode: a) criar um serviço no /Library/StartupItemsqual parece muito trabalho para mim ou b) adicionar essa linha a /etc/rc.localum comando como:

echo 'route delete -net 0.0.0.0 192.168.2.1' >> /etc/rc.local

Pode ser necessário adicionar um sleep <number_of_seconds>comando antes dessa linha /etc/rc.localpara evitar a execução do comando antes que as interfaces estejam totalmente ativadas e a tabela de roteamento estabelecida.

Espero que isso ajude e boa sorte!

d34dh0r53
fonte
Obrigado pela sua resposta longa. A rota padrão para 192.168.2.1foi o problema, mas @rakslice descobriu que eu cometi um erro ao inserir minhas informações de roteamento para a conexão en0. Coloquei o endereço IP 192.168.2.1no campo do roteador acreditando que era necessário. Depois de remover o ip do roteador padrão, também removi a rota padrão incorreta para 192.168.2.1. Mais uma vez, obrigado pela sua ajuda.
jakebird451
1
Meio chateado por não ter recebido a recompensa: "A primeira coisa que eu verificaria é no painel de configuração para en0, verifique se você não inseriu nada no campo do roteador. As informações nesse campo são adicionadas como um gateway padrão. " Mas tudo fica bom no final, feliz por você ter funcionado.
D34dh0r53 26/06
0

Você deseja definir seu IP Wifi como gateway padrão e remover qualquer gateway padrão (ou encaminhar para 0.0.0.0) conectado à LAN ou 192.168.2.0/24.

Obviamente, isso é mais fácil se você puder configurar o en1 para um IP fixo que funcionará com o wifi.

Pode ser necessário adicionar 192.168.2.10 como uma rota para a rede 192.168.2.0/24. No entanto, isso deve ser automático, pois pode dizer que 192.168.2.0/24 está diretamente conectado pelo virtual do que você atribuiu à interface.

Portanto, o tráfego para qualquer 192.168.2.X sairá do 192.168.2.10 e o tráfego para qualquer outro lugar sairá do endereço IP do seu en1.

LawrenceC
fonte
Defino meu pedido de wifi no topo através das preferências do sistema de rede. Mas não sei como remove any default gateway connected to the LAN.
jakebird451
talvez sudo route del default 192.168.2.10?, não sei exatamente como fazê-lo no freebsd / mac osx, mas deve ser semelhante.
LawrenceC
O comando no mac é sudo route delete default 192.168.2.10. Ping ainda está ativo. No entanto, ele encerra o acesso ao tráfego wifi excluindo o ip do roteador.
jakebird451
Você obtém internet através do seu wifi, correto, ou seja, se você não se conectar via LAN e apenas Wifi, poderá acessar sites externos como o Google, etc.?
LawrenceC
Sim, Wi-Fi é para o tráfego geral, tais como google.com (principalmente para a API do Google Maps)
jakebird451