Roteamento de WIFI e LAN para tráfego específico

10

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 de 192.168.19. * Via DHCP
  2. LAN (en0): usado para tráfego específico. Conecta-se a um ip de 192.168.2.10 como um IP estático. Não se conecta a um roteador, apenas um switch para conexão direta roteamento .

Eu 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 WIFI. Eu tentei configurar uma tabela de roteamento para os endereços IP específicos, mas só consegui bagunçar minha rede. Eu não me aventuro no mundo das redes com muita frequência, mas este foi o último comando que tenho tentado:

sudo route add -host 192.168.2.30 -interface en0

Esse comando matou minha capacidade de usar o ping. Ele me disse que ping não pode alocar memória (isso é possível)? Também matou meu acesso wifi. Sair e voltar a corrigir o problema. Eu realmente não me importo em tornar esta solução permanente, então estou bem com um roteamento temporário.

EDITAR:

Se eu atualmente tenho tentado:

sudo route flush
sudo route add default 192.168.19.1

Isso faz tudo funcionar por cerca de um minuto. Mas após esse minuto, "esquece" o encaminhamento 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 um pedido pelo 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
    
por jakebird451 15.06.2012 / 22:03

3 respostas

11

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

  1. Ir 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 -rn ainda deve mostrar as rotas para ambas as sub-redes, mas apenas uma rota "link # 4" no lugar da rota padrão através de 192.168.2.1.

Se você não quiser 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.

    
por 26.06.2012 / 07:30
3

O problema é que sua interface en0 está adicionando uma rota padrão que está tomando precedência sobre a rota padrão estabelecida pela interface 802.11. Não sei exatamente por que, mas é também o fato de que o BSD está preferindo uma interface com fio por um sem fio, ou está preferindo uma interface configurada estaticamente sobre uma interface configurada dinamicamente. Você pode dizer que a rota padrão en0 está sendo usada pela coluna Refs ; Refs é uma métrica que indica o número atual de usos ativos da rota, para que possamos ver que ela 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 outros hosts que não sejam em suas redes locais atravesse o gateway padrão estabelecido pelo DHCP em en1 . A primeira coisa que eu verificaria seria no painel de configuração para en0 , para garantir que você não inseriu nada no campo router . As informações nesse campo são adicionadas como um gateway padrão. Se isso não funcionar, precisamos excluir manualmente a rota, a razão pela qual route flush não funciona é que acredito que ele informe ao OS X para recarregar as informações de roteamento dos arquivos de configuração da interface, portanto, revertendo sua alteração após um curto período de tempo. O comando a seguir deve remover a rota padrão para a interface en0 até que a rede seja reiniciada ou o sistema seja IPLed:

sudo route delete -net 0.0.0.0 192.168.2.1

Se você quiser tornar esta mudança permanente, você pode a) criar um serviço em /Library/StartupItems , o que parece ser muito trabalhoso para mim ou b) adicionar essa linha a /etc/rc.local com um comando como:

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

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

Espero que isso ajude e boa sorte!

    
por 26.06.2012 / 05:13
0

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

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

Você pode ter que 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 por virtual do que você atribuiu à interface.

Assim, 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.

    
por 15.06.2012 / 23:10