RaspberryPi kot Wifi AP
Matthai
Član
Torej, na RaspberryPi 3 sem hotem postaviti wifi Access Point. Sledil sem temle navodilom:
https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software
Minimalna sprememba, ki sem jo naredil je, da uporabljam IP naslove v območju 172.16.0.x. Torej imam v:
/etc/dhcp/dhcpd.conf
Tole:
Vse ostalo sem nastavil isto. Npr. v /etc/hostapd/hostapd.conf imam:
No, potem pa zaženem tole:
In dobim naslednjo napako:
Zdaj... na okoliških napravah vidim SSID BlueSensor. S telefonom sem se uspešno povezal gor, ampak kao ni bilo internetne povezave (RPi je sicer preko eth0 povezan v internet). Na RPiju celo vidim IP od telefona (172.16.0.11), ampak iz telefona ne morem odpreti spletne strani na RPiju, ki se nahaja na 172.16.0.1.
Z računalnikom sem se enkrat uspešno povezal gor, na website na 172.16.0.1 sem prišel, celo internetno povezavo sem imel. V naslednjem poskusu pa se ni več uspel povezati...
Zdaj... malce sumim kakšen problem s kernel driverjem za wifi... Wifi povezava na RPi sicer dela brez problemov (ko ni v AP načinu). Gor je sicer Raspbian Jessie.
Je to problem?
Bi bila lahko težava tudi v tem, da je RPi nastavljen na wifi kanal 6 (glej gornji config), 10 cm stran je pa Mikrotik router? Vendar pa le-ta dela na frekvenci 2412 MHz, kar je sicer kanal 1...
Kakšna ideja?
https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software
Minimalna sprememba, ki sem jo naredil je, da uporabljam IP naslove v območju 172.16.0.x. Torej imam v:
/etc/dhcp/dhcpd.conf
Tole:
subnet 172.16.0.0 netmask 255.255.255.0 {
range 172.16.0.10 172.16.0.50;
option broadcast-address 172.16.0.255;
option routers 172.16.0.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
Vse ostalo sem nastavil isto. Npr. v /etc/hostapd/hostapd.conf imam:
interface=wlan0Tukaj moram poudariti, da ker želim uporabiti interni RPi3 wifi, sem v zgornji konfiguraciji izpustil definicijo driverja:
ssid=BlueSensor
country_code=SI
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=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1
driver=rtl871xdrvSkratka, tega NI.
No, potem pa zaženem tole:
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf
In dobim naslednjo napako:
Configuration file: /etc/hostapd/hostapd.conf
Failed to create interface mon.wlan0: -95 (Operation not supported)
wlan0: interface state UNINITIALIZED->COUNTRY_UPDATE
wlan0: Could not connect to kernel driver
Using interface wlan0 with hwaddr b8:27:eb:cc:f0:87 and ssid "BlueSensor"
wlan0: interface state COUNTRY_UPDATE->ENABLED
wlan0: AP-ENABLED
Zdaj... na okoliških napravah vidim SSID BlueSensor. S telefonom sem se uspešno povezal gor, ampak kao ni bilo internetne povezave (RPi je sicer preko eth0 povezan v internet). Na RPiju celo vidim IP od telefona (172.16.0.11), ampak iz telefona ne morem odpreti spletne strani na RPiju, ki se nahaja na 172.16.0.1.
Z računalnikom sem se enkrat uspešno povezal gor, na website na 172.16.0.1 sem prišel, celo internetno povezavo sem imel. V naslednjem poskusu pa se ni več uspel povezati...
Zdaj... malce sumim kakšen problem s kernel driverjem za wifi... Wifi povezava na RPi sicer dela brez problemov (ko ni v AP načinu). Gor je sicer Raspbian Jessie.
Je to problem?
Bi bila lahko težava tudi v tem, da je RPi nastavljen na wifi kanal 6 (glej gornji config), 10 cm stran je pa Mikrotik router? Vendar pa le-ta dela na frekvenci 2412 MHz, kar je sicer kanal 1...
Kakšna ideja?
Komentarji
Kot prvo sem RPi AP prestavil na kanal 8 (na nekih forumih so pisali, da bi bil to kao problem, da ne podpira vseh kanalov)... Zdajle sem z računalnikom povezan gor. Dela mi lokalni website (http://172.16.0.1:8881) in pa tudi internet (torej IP forwarding).
S svojim telefonom pa se ne uspem povezati gor. Na telefonu sicer teče Cyanogenmod, ampak ostala wifi omrežja mi delajo. Se je pa sodelavka uspela goro povezati s Samsung Galaxy S7. Sicer nima povezave do interneta, ampak lokalni website pa vidi (http://172.16.0.1:8881).
No, ko se jaz gor povežem s svojim telefonom, vidim dodeljen IP naslov in lahko telefon tudi pingam. Na telefonu mi pa Network Signal Info app napiše, da "wifi is not connected". Telefon sam mi hkrati napiše, da je wifi povezan, iz RPija pa telefon lahko tudi pingam...
A je morda problem v kakšnem "nestandardnem" protokolu, ki ga kao telefoni slabše podpirajo??? Ampak na Samsungu bi če drugega ne, moral delati IP forwarding, saj je to vendar stvar iptables na RPi in ne hostapdja...!
Ping iz RPi AP na telefon:
adb shell na telefonu:
ping iz telefona na RPi ne gre skozi:
Mimogrede, v hostapd.conf sem vklopil WPA1 in WPA2 ter TKIP šifriranje:
Zdaj mi pa počasi že zmanjkuje idej... :-/
Na RPi AP pa:
Po reconnectu telefona na RPi AP, vidim tole:
Sem se skušal povezati še z Windows 10 prenosnikom. Se poveže, lahko dostopam do 172.16.0.1:8881, nima pa interneta. Zdaj, na svojem Ubuntu sistemu imam ročno vpisane DNS-e oz. svoj lasten DNS, in glede na vse skupaj sem začel sumiti, da mora biti nek DNS problem. Druge mašine, ki imajo težave,imajo namreč privzete DNS nastavitve. Morda je ta problem povezan z IPv6 (AAAA requesti v tcpdump).
To sicer ne razloži zakaj iz telefona ni routinga na 172.16.0.1, iz prenosnikov pa je...
Ampak kolikor sem gledal dokumentacijo, ISC DHCP server lahko servira samo IPv4 ali IPv6, jaz pa v bistvu IPv6 sploh nimam skonfiguriran...
ping www.siol.net - ne dela
ping 193.25.220.192 - DELA.
Torej internet v bistvu je. Problem so DNS-ji očitno.
Newtork sysadmini nam na lokalnem omrežju blokirajo Googlove DNS serverje.
Ko sem v dhcpd.conf vnesel "lokalni DNS", je pa vse "čudežno" začelo delat.
Čudno mi je samo zakaj prej v Androidu ni delalo niti pinganje lokalnih IP naslovov...
Kakorkoli, upam, da tole komu pomaga pri podobnih težavah. Mogoče tudi kot recept za debugganje.