Por que os dispositivos conectados à minha interface wlan0 não podem se comunicar com dispositivos eth0?

1

Estou tentando configurar um Raspberry Pi executando o Raspbian Jessie com a seguinte configuração:

  • Servidor DHCP (isc-dhcp-server)
  • Ponto de acesso WLAN (hostapd)
  • Servidor de aplicativos (servidor HTTP na porta 80)

Meu problema é que os dispositivos conectados ao AP de WLAN não podem se comunicar com o servidor da Web em execução no Pi. Dispositivos conectados à porta ethernet não têm problemas para exibir a página da Web.

Quando eu conecto meu laptop ao AP e tento pingar o Pi ( 10.10.1.1 ), ele me diz que ele está inativo. No entanto, obtenho um endereço IP (por exemplo, 10.10.1.17 ). Ao usar um cabo ethernet para o Pi eu recebo um endereço IP e consigo pingar o Pi em 10.10.1.1 , então tudo é trabalhado quando usando uma conexão com fio.

Aqui estão meus arquivos de configuração:

/etc/dhcp/dhcp.conf

ddns-update-style none;
authoritative;
log-facility local7;

subnet 10.10.1.0 netmask 255.255.255.0 {
   range 10.10.1.10 10.10.1.100;
   option routers 10.10.1.1;
   default-lease-time 3600;
   max-lease-time 3600;
   option subnet-mask 255.255.255.0;
   option broadcast-address 10.10.1.255;
   option domain-name-servers 8.8.8.8;
   option domain-name "support.muffag.ch";
}

/ etc / default / isc-dhcp-server

INTERFACES="eth0 wlan0"

/ etc / network / interfaces

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
auto eth0
iface eth0 inet static
       address 10.10.1.1
       netmask 255.255.255.0


allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
        address 10.10.1.2
        netmask 255.255.255.0

/etc/hostapd/hostapd.conf

interface=wlan0
driver=rtl871xdrv
ssid=Test AP
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=Raspberry
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

/ etc / default / hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"

.

Eu vi que outras pessoas estão falando sobre uma ponte de rede, mas não tenho certeza de como usar algo assim. Como posso ter certeza de que os dispositivos conectados ao ponto de acesso podem acessar o servidor da Web?

    
por dislick 08.01.2016 / 14:51

2 respostas

3

Se o seu servidor web estiver escutando na porta 80 de qualquer endereço IP (não apenas 10.10.1.1 ), você pode simplesmente usar o endereço de gateway da interface à qual está conectado.

No entanto, antes de poder fazer isso, primeiro você precisa corrigir os intervalos de endereços que está usando. Sua configuração atual diz para dar 10.10.1.0-10.0.1.255 a eth0 e wlan0 . Isto é mau. Você precisa fornecer intervalos de endereços IP diferentes para as duas interfaces ou usar uma rede de ponte. Se você quiser permitir facilmente que os dispositivos em wlan0 se comuniquem com dispositivos em eth0 (como se estivessem na mesma rede), você precisará usar uma ponte.

Para usar intervalos de endereços diferentes, seu arquivo /etc/network/interfaces deve se parecer com o seguinte:

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
auto eth0
iface eth0 inet static
       address 10.10.1.1
       netmask 255.255.255.0


allow-hotplug wlan0
auto wlan0
iface wlan0 inet static
        address 10.10.2.1
        netmask 255.255.255.0

Basicamente, 10.10.1.0-10.10.1.255 foi alocado para eth0 e 10.10.2.0-10.10.2.255 foi alocado para wlan0 . Você também precisará alterar /etc/dhcp/dhcp.conf :

ddns-update-style none;
authoritative;
log-facility local7;

subnet 10.10.1.0 netmask 255.255.255.0 {
   range 10.10.1.10 10.10.1.100;
   option routers 10.10.1.1;
   default-lease-time 3600;
   max-lease-time 3600;
   option subnet-mask 255.255.255.0;
   option broadcast-address 10.10.1.255;
   option domain-name-servers 8.8.8.8;
   option domain-name "support.muffag.ch";
}

subnet 10.10.2.0 netmask 255.255.255.0 {
   range 10.10.2.10 10.10.2.100;
   option routers 10.10.2.1;
   default-lease-time 3600;
   max-lease-time 3600;
   option subnet-mask 255.255.255.0;
   option broadcast-address 10.10.2.255;
   option domain-name-servers 8.8.8.8;
   option domain-name "support.muffag.ch";
}

Uma seção para a rede 10.10.2.0/24 foi adicionada.

Neste ponto, você deve conseguir se conectar ao servidor da web. Se você estiver conectado a eth0 , precisará usar 10.10.1.1 ; Se você estiver conectado a wlan0 , precisará usar 10.10.2.1 .

    
por 08.01.2016 / 15:22
1

Eu suspeito que você tenha perdido uma etapa na sua configuração, o que permite que os pacotes sejam encaminhados entre as interfaces:

sysctl -w net.ipv4.ip_forward=1

Quando você confirmar que isso funciona para você, edite /etc/sysctl.conf ou adicione seu próprio arquivo a /etc/sysctl.d/ para tornar a alteração permanente.

    
por 08.01.2016 / 14:58