
Yocto Linux - směrování provozu z Wi-Fi v AP modu na USB-Ethernet převodník
Zdravím,
dostala se do ruoku deska s Intel Atom, OS je upravený Yocto Linux. Má integrovaný Wi-Fi + BT 4.0 (nějaký čip Broadcom). Deska nemá grafickou kartu, nemůžu tedy využívat GUI, přístup je jen přes Telnet.
Kromě toho je k desce připojený převodník USB - Ethernet s obvodem AX88772B. Potřeboval bych zařídit, aby byla Wi-Fi v AP modu, uživatelé se k ní mohli připojit a přes USB - Ethernet převodník, který je připojen do routeru, který je připojen k Internetu. K Wi-Fi AP modu jsem využil hostapd, funguje bez problému. Převodník s AX88772 jsem také úspěšně zprovoznil, nastavil IP adresu, masku a pomocí route add default gw 192.168.1.1 ukázal na router, ke kterému je deska připojena. Bez problému pingnu kamkoliv ven. Potřeboval bych pomoct nebo spíš ukázat, co dělám špatně, ohledně kroků, které jsou třeba pro zpřístupnění připojení k Internetu pro ty, kteří se připojí k Wi-Fi. V první řadě jsem povolil ip forwarding:
echo "1" > /proc/sys/net/ipv4/ip_forward
IP rozsah podsítě routeru je 192.168.1.0/24, adresa USB převodníku v podsíti routeru je 192.168.1.182. Wi-Fi je na rozsahu 192.168.42.0/24.
A dále jsem nastavil směrování následovně (vyšel jsem z návodu, který jsem našel na internetu):
# wlan0 je Wi-Fi
# enp0s17u1 je USB-Ethernet převodník
# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT
# We allow traffic from the LAN side
iptables -A INPUT -i wlan0 -j ACCEPT
# Allow established connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Masquerade.
iptables -t nat -A POSTROUTING -o enp0s17u1 -j MASQUERADE
# fowarding
iptables -A FORWARD -i enp0s17u1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow outgoing connections from the wlan0 side.
iptables -A FORWARD -i wlan0 -o enp0s17u1 -j ACCEPT
Bohužel nefunguje, už nad tím tvrdnu dva dny a nepohnul jsem s tím. Zkoušel jsem více cest, tahle se mi zdála "nejnadějnější". Očekávám, že to bude nějaká zásadní neznalost z mé strany, někde jsem asi něco opomněl spustit/povolit. Sítě na úrovni takovéto konfigurace jsou pro mě španělskou vesnicí, dostal jsem za úkol jenom otestovat, jestli to bude fungovat a jak to bude fungovat.
Zkoušel jsem diagnostikovat, kde by mohl být problém. Možná je třeba něco nastavit přímo v hostapd, protože z počítače připojeného k dané Wi-Fi dostávám při pingu na router informaci od samotného počítače, že "Destination host unreachable".
Další informace případně dodám, díky předem za rady.
Naco su tam tie iptables pravidla? Zbytocne to s nimi komplikujes. AK potrebujes tak sprav len tu maskaradu.
Podstatne nie su totizto pravidla, ale skor routovacia tabulka a default routa.
Daj sem vypis z ip a l, potom ip ro, pripadne ak tam nemas iproute2 tak ifconfig a route.
Ani prami z routra sa nikam nedopingas a nejde ti net?
usb0 je rozhraní, který deska používá pro komunikaci s vývojovým prostředím. Takhle to vypadá ve výchozím stavu s oběma rozhraníma samostatně funkčníma:
ifconfig
route
OpenWrt.lan je router (192.168.1.1)
Z routeru pingnu bez problému na tu Linux desku přes převodník Ethernet-USB (na 192.168.1.182), stejně tak i z libovolného počítače připojeného k tomu samému routeru. Z Linux desky se dostanu bez problému na internet. Zařízení připojená přes Wi-Fi k té linux desce (pomocí hostapd), se na Linux desku také dopingnou (na 192.168.42.1, kde běží webserver s NodeJS). Ještě, abych to doupřesnil, potřeboval bych, aby se zařízení připojená přes Wi-Fi k linux desce dostala jak na ten NodeJS webserver (adresa 192.168.42.1), tak i prostřednictvím USB-Ethernet převodníku ven, do internetu.
Pokial mas naozaj funkcnu maskaradu nie je dovod, aby to neslo, podla vypisov tam nie je nastavene nic zle.
Zkusil jsem to ještě jednou, teď se z notebooku připojeného přes Wi-Fi k linux desce dopingnu na Ethernet rozhraní 192.168.1.182 (192.168.42.20 <-> 192.168.1.182), ale už ne kamkoliv dál. WLAN adaptér v notebooku říká (ipconfig -all), že nemá default gateway, tam asi bude poslední zádrhel. Jen nevím, kam bych měl tu možnost přidat nebo kde co povolit.
Aha. Jak na té wifině přiděluješ IP adresy? Z DHCP, nebo ručně? Zkus si přidat defaultní routu pomocí příkazu
, nejspíš to pomůže.
DHCP, výpis z udhcpd.conf:
Jinak problém je vážně už jen v tom, říct klientům na rozhraní wlan0, že default gateway je 192.168.42.1. Když jsem ji nastavil na notebooku ručně, připojení k internetu začlo normálně fungovat. Zkusil jsem přidat další defaultní routu pro rozhraní wlan0 a nezabralo to. Jinak jen pro jistotu - DHCP server běží také na 192.168.42.1 - nemůže být problém v tom?
Aktuální výpis route:
Po přidání route jsem zkusil restartovat hostapd a znovu se připojit, také nepomohlo.
Dvě výchozí brány je nesmysl
Jo, taky jsem si to uvědomil - navíc to spojení funguje, problém je v konfiguraci DHCP serveru, který neposkytne zařízením připojeným přes Wi-Fi informace o masce a default gateway. Teď dostávají zařízení piřpojující se přes Wi-Fi blbosti - maska 255.0.0.0 a default gateway nedostanou vůbec.
Zatím díky moc za rady, teď budu tři dny mimo domov, takže nebudu moct nic vyzkoušet - potom se ozvu.
Poslal by jsi výstup z
zatímco pingáš z wifi na adresu OpenWrt.lan?
Je skutečně nutné provádět tu maškarádu už na tom boxu? Nepostará se o ni později ten router s IP 192.168.1.1? Jinak zmínil fleq, dodej informace o IP adresách a směrovací tabulce, případně ještě výstup iptables-save.
Pokud je to nejaky levny kram, tak neumi pridat samostatnou routu mimo vychozi branu.
K dotazu:
IP tables nech pro zacatek ACCEPT pro vse, co ti rika "iptables -L -n -v" a "iptables -L -n -v -t nat" ? A pochopitelne, jak pravil fleg "ip route show"