Verbindung zu Hostapd-Hotspot, aber kein Internet

0

Ich stelle einen Gentoo Linux-Heimrouter mit folgender Konfiguration ein:

  • eth0: mit WAN verbunden (verwaltet von systemd-networkd)
  • wlan0: Zugangspunkt für LAN (verwaltet von Hostapd)

ich benutze dnsmasq als DNS- und DHCP-Server für die LAN-Maschinen.

Aktuelles Problem: Ich kann eine Verbindung zum Router herstellen, aber keine Internetverbindung von den Clients.

Wenige Informationen:

  • Client Nameserver: IP des Routers.
  • Ping vom Router an google.com ist normal.
  • Ping vom Client-Rechner zum Router ist normal.
  • Ping von Clientcomputern an google.com immer Timeout (aber der Domainname wird aufgelöst)
  • Router: iptables -t {filter,nat,mangle,raw} -L Zeigt an, dass alle Ketten in allen Tabellen über Richtlinien verfügen ACCEPT
  • Router: iptables -t nat -L zeigt das erwartete Ergebnis von iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • Bestätigt sys.net.ipv4.ip_forward = 1

Ich habe die oben auf verschiedenen Client-Computern getestet, und diese Client-Computer werden getestet, um gut mit anderen WLAN-Hotspots zusammenzuarbeiten.

Ich habe keine Ahnung, wie dieses Problem behoben werden kann. Es scheint, als würde man dem regulären Verfahren folgen, aber der Internetzugang vom Client aus funktioniert einfach. Jeder Hinweis, was als nächstes zu prüfen ist, oder eine Idee, wie dieses Problem behoben werden kann, wird sehr geschätzt!

BEARBEITEN:

Das Problem hier sieht ähnlich aus: Verkehr wird nicht über NAT weitergeleitet . Ich habe es allerdings bestätigt sys.net.ipv4.ip_forward = 1.

Nehmen Sie den Router als A und ein Kunde als B.

ifconfig auf 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 auf 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 auf A:

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

iptables -S -t nat auf A:

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

ping -n google.com auf 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 auf 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 auf 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  * * *
Shou Ya
quelle

Antworten:

1

Bearbeiten Sie /etc/sysctl.conf so, dass diese Zeile eingefügt wird, und starten Sie dann den Computer neu:

net.ipv4.ip_forward=1
Martijn van Wezel
quelle
0

Ich habe herausgefunden, dass ich das Kernel-Flag gesetzt habe ip_forward bevor ich die iptables Regel. Ich habe festgestellt, dass das NAT nach dem Deaktivieren und erneuten Aktivieren des NAT gut funktioniert. So jetzt stelle ich echo 1 > /proc/sys/net/ipv4/ip_forward nach dem iptables Befehl in meinem Skript und es funktioniert!

Ich weiß immer noch nicht, wie die Ordnung so wichtig ist. Jede Erklärung wird immer noch begrüßt.

Shou Ya
quelle
/ proc value ist das, was geladen wird, / etc wird vom Boot in die proc geladen
Martijn van Wezel