Como usar múltiplas interfaces de rede?

0

Eu preciso usar várias interfaces de rede em um programa C com soquetes. Minhas interfaces são wlan0 e eth0. Quando eu conecto eth0, o ping através de wlan0 retorna "host inacessível" e, conseqüentemente, o soquete que se conecta por meio de wlan0 retorna "conexão esgotada". Se eu executar o ifconfig, ele retorna 2 interfaces UP e com um endereço IP. Como posso conectar eth0 e wlan0?

EDITAR:

Minhas perguntas básicas são: por que não consigo acessar a internet com o wlan0 quando o eth0 está conectado?

Minhas tabelas de roteamento:

 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         192.168.1.254   0.0.0.0         UG    0      0        0 eth0
 10.0.0.0        0.0.0.0         255.255.255.0   U     9      0        0 wlan0
 192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0

Meus iptables:

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination  

ifconfig:

 eth0      Link encap:Ethernet  HWaddr 74:d0:2b:07:3a:dd  
           inet addr:192.168.1.129  Bcast:192.168.1.255  Mask:255.255.255.0
           inet6 addr: fe80::76d0:2bff:fe07:3add/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:33194 errors:0 dropped:0 overruns:0 frame:0
           TX packets:23759 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:31065847 (31.0 MB)  TX bytes:3057118 (3.0 MB)

 lo        Link encap:Local Loopback  
           inet addr:127.0.0.1  Mask:255.0.0.0
           inet6 addr: ::1/128 Scope:Host
           UP LOOPBACK RUNNING  MTU:65536  Metric:1
           RX packets:21018 errors:0 dropped:0 overruns:0 frame:0
           TX packets:21018 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:10519343 (10.5 MB)  TX bytes:10519343 (10.5 MB)

 wlan0     Link encap:Ethernet  HWaddr 6c:71:d9:5f:6b:7f  
           inet addr:10.0.0.6  Bcast:10.0.0.255  Mask:255.255.255.0
           inet6 addr: fe80::6e71:d9ff:fe5f:6b7f/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:34286 errors:0 dropped:0 overruns:0 frame:0
           TX packets:26667 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:25986919 (25.9 MB)  TX bytes:3409031 (3.4 MB)
    
por Sceik 06.11.2015 / 19:02

1 resposta

0

O protocolo IP e os protocolos que estão diretamente acima dele, como UDP e TCP, devem ser globais (apesar de NAT), destinados a serem independentes de hardware e destinados a não se preocupar com segurança. Isso significa:

  • por design, qualquer endereço IP deve ser capaz de se comunicar com qualquer outro endereço IP, independentemente do tipo de mídia (Ethernet, token-ring, Ethernet sem fio, SONET, o que for)
    • portanto, por design, existe apenas uma rede de nível superior, também conhecida como. uma "Internet".
  • por design, nenhuma segurança é considerada - o trabalho de um pacote IP é ir de sua origem para um host com seu IP de destino e é isso.
    • portanto, por padrão, um pacote IP não se importa com o que está viajando enquanto estiver indo em direção ao seu destino
    • também, portanto, por design, um pacote IP não se importa com a interface de rede (ou outro mecanismo - por exemplo, PPP). Um roteador se importará, já que um roteador sabe quais endereços IP estão por trás de uma interface de rede.
    • quando um roteador ou sistema é confrontado com vários caminhos para o mesmo IP, ele pressupõe que qualquer um funcionará da mesma forma e que pode balancear a carga entre eles ou fazer o failover para o outro.

Por causa disso, a API de sockets C padrão não suporta o envio de tráfego para fora de uma interface específica, você deve estar preocupado apenas com o IP de destino e deixar a camada física / de roteamento até a infraestrutura e o sistema operacional. / p>

Assim, você terá que fazer coisas como ajustar as tabelas de roteamento do sistema operacional ou usar outros recursos específicos do sistema operacional para realizar o que deseja.

    
por 06.11.2015 / 19:50