Conectado ao hotspot hostapd, mas sem Internet

0

Estou configurando um roteador doméstico do Gentoo Linux com a seguinte configuração:

  • eth0 : conectado à WAN (gerenciado pelo systemd-networkd)
  • wlan0 : ponto de acesso para LAN (gerenciado por hostapd)

Eu uso dnsmasq como servidor DNS e DHCP para as máquinas LAN.

Problema atual: posso conectar-me ao roteador, mas não tenho conexão com a Internet dos clientes.

Poucas informações:

  • Servidor de nomes do cliente: IP do roteador.
  • O ping do roteador para google.com é normal.
  • O ping das máquinas clientes para o roteador é normal.
  • Ping de computadores clientes para google.com sempre tempo limite (mas o nome do domínio foi resolvido)
  • Roteador: iptables -t {filter,nat,mangle,raw} -L mostra que todas as cadeias em todas as tabelas têm políticas ACCEPT
  • Roteador: iptables -t nat -L mostra o resultado esperado de iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • Confirmado sys.net.ipv4.ip_forward = 1

Eu testei os itens acima em diferentes máquinas clientes, e essas máquinas clientes foram testadas para funcionar bem com outros hotspots de Wi-Fi.

Eu não tenho idéia sobre como solucionar esse problema, parece que seguir o procedimento normal, mas o acesso à Internet do cliente é simplesmente não está funcionando. Qualquer sugestão sobre o que verificar em seguida ou a ideia de como corrigir este problema será muito apreciada!

EDITAR:

O problema aqui é semelhante a este: O tráfego não está sendo encaminhado através do NAT . No entanto, eu confirmei de fato sys.net.ipv4.ip_forward = 1 .

Pegue o roteador como A e um cliente como B .

ifconfig on B :

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether xx:xx:xx:xx:xx:xx
    inet6 fe80::xxxx:xxxx:xxxx:xxxx%en0 prefixlen 64 scopeid 0x4
    inet 192.168.1.62 netmask 0xffffff00 broadcast 192.168.1.255
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active

ifconfig on A :

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet xx.xx.xx.154  netmask 255.255.254.0  broadcast xx.xx.xx.255
        inet6 fe80::xxxx:xxxx:xxxx:xxxx  prefixlen 64  scopeid 0x20<link>
        ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
        RX packets 251116  bytes 22652889 (21.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11731  bytes 979877 (956.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xdf100000-df120000

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.199  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::xxxx:xxxx:xxxx:xxxx  prefixlen 64  scopeid 0x20<link>
        ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
        RX packets 12867  bytes 1090816 (1.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1272  bytes 306689 (299.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

iptables -S on A :

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

iptables -S -t nat on A :

-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE

ping -n google.com on A :

PING google.com (216.58.192.206) 56(84) bytes of data.
64 bytes from 216.58.192.206: icmp_seq=1 ttl=57 time=1.29 ms
64 bytes from 216.58.192.206: icmp_seq=2 ttl=57 time=1.52 ms
[continued]

ping -n google.com on B :

PING google.com (216.58.192.206): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
[continued]

traceroute -i en0 8.8.8.8 on B :

traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets
 1  192.168.1.199 (192.168.1.199)  2.054 ms  2.033 ms  2.018 ms
 2  * * *
 3  * * *
 4  * * *
    
por Shou Ya 05.04.2016 / 23:33

2 respostas

1

edite o /etc/sysctl.conf para incluir esta linha e, em seguida, reinicialize:

net.ipv4.ip_forward=1
    
por 05.08.2018 / 16:43
0

Descobri que defini o sinalizador de kernel ip_forward antes de configurar a regra iptables . Descobri que, se eu desabilitar e habilitá-lo novamente depois de tudo, o NAT funcionará bem. Então agora eu coloquei o comando echo 1 > /proc/sys/net/ipv4/ip_forward after iptables no meu script e está funcionando!

Ainda não sei sobre o mecanismo do motivo pelo qual a ordem é tão importante. Qualquer explicação ainda será bem-vinda.

    
por 06.04.2016 / 00:56