Como posso conectar meu roteador à minha LAN com fio por WiFi?

0

Eu tenho um modem a cabo conectado a um roteador WiFi. Eu tenho o roteador configurado para servir o DHCP. Devido ao layout da minha casa, não posso conectar fisicamente minha rede doméstica com fio ao roteador. Eu estava esperando que eu usasse um Raspberry Pi com um dongle WiFi e ethernet para atuar como uma ponte entre a rede com fio, a rede sem fio e o roteador.

Algumas metas:

  1. Dispositivos sem fio e com fio podem se conectar uns aos outros.
  2. Dispositivos sem fio e com fio podem ver a internet.
  3. Todos os dispositivos obtêm seus endereços IP por meio do DHCP do roteador.
  4. A configuração correta surge automaticamente após a reinicialização.

Minha questão fundamental é como eu configuro meu equipamento para atingir esses objetivos?

Eu tenho bridge-utils instalados e rodando no Raspberry Pi. Se eu ativar a ponte em / etc / network / interfaces, o Raspberry Pi procura em vão por um servidor DHCP e não recebe nenhum endereço IP. Se eu desabilitar a ponte, o Raspberry Pi obtém uma resposta DHCP do roteador sem problemas, obtém um endereço IP e pode acessar a Internet.

Também na LAN com fio está uma Synology DiskStation, que pode servir DHCP, por isso estou feliz em permitir que isso ajude. Mas então eu teria dois servidores DHCP, então talvez eu precise ter duas sub-redes e algum roteamento entre elas. Eu gostaria de manter as coisas mais simples, se possível.

Aqui está meu arquivo / etc / network / interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
        wpa-ssid "MySSID"
        wps-psk "MyPassword"

auto br0
iface br0 inet manual
        pre-up iwconfig wlan0 essid "MySSID"
        bridge_hw 12:34:56:78:90:ab
        bridge_ports wlan0 eth0
        bridge_stp off
        bridge_maxwait 5
        bridge_fd 0

A linha bridge_hw inclui o endereço MAC do meu dongle WiFi no Raspberry Pi. Eu também tentei uma estrofe br0 como essa (achei aqui ), mas também não funcionou:

auto br0
iface br0 inet dhcp
  pre-up ip link set eth0 down
  pre-up ip link set wlan0 down
  pre-up brctl addbr br0
  pre-up brctl addif br0 eth0 wlan0
  pre-up ip addr flush dev eth0
  pre-up ip addr flush dev wlan0

Eu habilitei o net.ipv4.ip_forward em /etc/sysctl.conf, mas não pareceu ajudar. Eu olhei no syslog, mas nada apontou para um problema óbvio.

Eu li muito sobre ponte , DHCP, parprouted , dhcrelay , /etc/network/interfaces e iwconfig , mas não está claro para mim como configurar meu sistema para que o wlan0 apareça primeiro no Raspberry Pi, obtenha informações DHCP do roteador, então a bridge aparece, então o eth0 aparece o Raspberry Pi, obtém seu DHCP sobre a ponte e outros dispositivos com fio também, e os dispositivos sem fio podem ver os dispositivos com fio. Fico feliz em mudar para IPs estáticos no Raspberry Pi se isso ajudar.

    
por Randall Cook 11.01.2016 / 01:47

1 resposta

0

Você não pode facilmente conectar uma interface Wi-Fi, consulte aqui para uma boa explicação. Existem maneiras de contornar isso (o VirtualBox, por exemplo, faz isso imediatamente), e eu vou mostrar uma maneira de fazer isso.

Se não for possível unir wlan0 an eth0 , você poderá retransmitir o tráfego IP entre eles por meio de ip_forward , mas isso deixa de fora dois tipos importantes de tráfego: DHCP (que usa soquetes brutos) e ARP (que é um protocolo de camada 2, portanto, não é coberto pelo ip-forward). Nós resolvemos o primeiro problema configurando nossas próprias consultas de resposta do servidor DHCP na interface eth0 only; para que isso funcione, devemos nos certificar de que os intervalos de endereços IP repartidos pelo seu roteador e pelo dnmasq no RPi não se sobreponham não . Contornamos o problema do ARP ativando o proxy-arp .

A coisa mais simples é negligenciar parprouted e dhcrelay , que introduzem complicações desnecessárias. Em vez disso, usaremos proxy-arp .

  1. Selecione uma sub-rede dentro de sua LAN que o seu não usa para atribuir endereços IP, por exemplo, 192.168.1.160/27 , e atribua seu primeiro endereço, 192.168.1.161 à sua interface eth0 :

    ip addr add 192.168.1.161/32 dev eth0
    
  2. Diga ao kernel que esta sub-rede está localizada na interface eth0 :

    ip route add 192.168.1.160/27 dev eth0
    
  3. Ativar proxy-arp e ip_forwarding:

    echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
    echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp
    echo 1 > /proc/sys/net/ipv4/ip_forward 
    
  4. Baixe e instale o dnsmasq para executar o DHCP na interface eth0:

    apt-get install dnsmasq
    

    e crie um arquivo, /etc/dnsmasq.conf , com o seguinte conteúdo:

    domain-needed
    bogus-priv
    dhcp-authoritative
    interface=eth0
    local=/YourDomainName.lan/
    server=8.8.8.8
    server=8.8.4.4
    expand-hosts
    domain=YourDomainName.lan
    dhcp-range=192.168.1.162,192.168.1.190,12h
    
  5. Reinicie o dnsmasq , está pronto.

Deve ser trivial iniciar todos os itens acima na inicialização, se não, deixe-me saber.

    
por 11.01.2016 / 10:22