Routování klientů připojených přes Wi-Fi na konkrétní IP

Dobry den,
pomocou wifi-ap snapu https://docs.ubuntu.com/core/en/stacks/network/wifi-ap/docs/
som si rozchodil na servery access point:

Kód: [Vybrat]
wakatana@server:~$ sudo wifi-ap.config get
debug: false
dhcp.lease-time: 12h
dhcp.range-start: 10.0.60.2
dhcp.range-stop: 10.0.60.199
disabled: false
share.disabled: false
share.network-interface: eth0
wifi.address: 10.0.60.1
wifi.channel: 6
wifi.country-code:
wifi.hostapd-driver: nl80211
wifi.interface: wlan0
wifi.interface-mode: direct
wifi.netmask: 255.255.255.0
wifi.operation-mode: g
wifi.security: wpa2
wifi.security-passphrase: heslohesloheslo
wifi.ssid: Ubuntu

Nasledne by som chcel traffic vsetkych klientov ktori su pripojeni na toto AP routovat na jednu konkretnu IP a port (momentalne je to ten isty PC na ktorom bezi AP). V praxy by to teda vyzeralo napr. tak ze si klient do browseru napise www.google.sk a bude presmerovany na 127.0.0.1:555. Ak spravne chapem malo by to ist minimalne dvoma sposobmi:
1. dnsmasq + nginx - toto mi pride zbytocne komplikovane a neviem ci to nedosaha nastavenie DNS
2. iptables - tu sa stracam v POSROUTING, PREROUTING, DNAT, SNAT etc.

Dakujem za kazdu radu.
« Poslední změna: 15. 02. 2019, 08:14:51 od Petr Krčmář »


Re:routovanie klientov pripojenych cez wifi na konkretnu IP
« Odpověď #1 kdy: 15. 02. 2019, 07:22:09 »
routovat na jednu konkretnu IP a port
Routuje se jen na základě IP adres, porty při routování nehrají roli – porty jsou až záležitostí vyšších protokolů (TCP, UDP).

V praxy by to teda vyzeralo napr. tak ze si klient do browseru napise www.google.sk a bude presmerovany na 127.0.0.1:555.
K tomu použijte DNAT – NAT je překlad adres (a portů), a D značí Destination, tedy překlad cílové adresy, kam má paket směřovat. Nejde ale o přesměrování, že by se ta IP adresa a port objevily v adresním řádku prohlížeče, jde o únos spojení – klient si bude pořád myslet, že komunikuje se správnou adresou a portem.

1. dnsmasq + nginx - toto mi pride zbytocne komplikovane a neviem ci to nedosaha nastavenie DNS
Takhle to nepůjde, pomocí DNS nezměníte port.

2. iptables - tu sa stracam v POSROUTING, PREROUTING, DNAT, SNAT etc.
Správná varianta je DNAT, potřebujete přepsat v paketu adresu cíle na 127.0.0.1 a port na 555. DNAT se dělá v řetězci PREROUTING, a když budete hledat „iptables DNAT“, najdete spoustu návodů.

Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #2 kdy: 15. 02. 2019, 09:13:28 »
Vdaka za odpoved, skusil som teda toto
Kód: [Vybrat]
$ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 555 -j DNAT --to-destination 127.0.0.1
$ sudo iptables -t nat -nvL PREROUTING
Chain PREROUTING (policy ACCEPT 14 packets, 1116 bytes)
 pkts bytes target     prot opt in     out     source               destination
 1852  351K DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL
    0     0 DNAT       tcp  --  wlan0  *       0.0.0.0/0            0.0.0.0/0            tcp dpt:555 to:127.0.0.1

ale nevyzera ze to malo nejaky efekt:

https://google.sk - chodi spravme
http://www.whatsmyip.org/ - chodi spravne
https://neexistujuca - vrati hlasku o nedostupnosti sluzby
http://neexistujuca - vrati hlasku o nedostupnosti sluzby

Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #3 kdy: 15. 02. 2019, 10:18:46 »
https://google.sk - chodi spravme
http://www.whatsmyip.org/ - chodi spravne
Co znamená „chodí správně“? Že je komunikace unesena na tu IP adresu 127.0.0.1 a port 555, nebo že se tam zobrazí původní obsah?

https://neexistujuca - vrati hlasku o nedostupnosti sluzby
http://neexistujuca - vrati hlasku o nedostupnosti sluzby
Protože se ty DNS názvy vůbec nepřeloží. Pokud chcete, aby se při zadání libovolného nesmyslného DNS názvu přeložil na vámi určenou IP adresu, je to úplně něco jiného, než jste chtěl v původním dotazu.

A mimochodem, jste si jist, že to, čeho se snažíte docílit, je nejlepším řešením vašeho problému? Psal jste o webovém prohlížeči, v prohlížečích se dnes většinou používá HTTPS, a vy na vašem serveru nebudete mít důvěryhodné certifikáty pro příslušný web. Takže u uživatele ten pokus o únos skončí akorát hláškou, že nesedí certifikát. Opravdu je tohle váš cíl?

Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #4 kdy: 15. 02. 2019, 10:51:26 »
Vsetko na serveri co ma
--dport 80  a --dport 443 -j DNAT --to-destination IP_ROUTRA:555

Je to jednoduche, ale bez trochy praxe a skusenosti s iptablami to asi nerozbehas.


Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #5 kdy: 15. 02. 2019, 10:54:45 »
https://google.sk - chodi spravme
http://www.whatsmyip.org/ - chodi spravne
https://neexistujuca - vrati hlasku o nedostupnosti sluzby
http://neexistujuca - vrati hlasku o nedostupnosti sluzby

To je celkom logicke, kedze na to aby bol vobec vyslany dotaz na port 80/443 si to najprv musi resovlnut. No a kedze neexistujucu stranku neresolvne tak sa ziadny dotaz neodosle.  Ty riesis 2 protokoly. DNS udp/53 a (vacsinou)http/s tcp/80,443

Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #6 kdy: 15. 02. 2019, 13:40:40 »
Vsetko na serveri co ma
--dport 80  a --dport 443 -j DNAT --to-destination IP_ROUTRA:555

Je to jednoduche, ale bez trochy praxe a skusenosti s iptablami to asi nerozbehas.
Tím ale přesměrujete jen TCP/IP spojení na porty 80 a 443. Dotaz ale nebyl na HTTP komunikaci, nýbrž chtěl přesměrovat veškerý provoz.

Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #7 kdy: 15. 02. 2019, 14:58:43 »
Jenom taková drobná poznámka: pokud se snažíš rozchodit takovou tu věc, že po připojení na wifi se ti zobrazí nějaká přihlašovací stránka, tak to chce ještě o trochu víc než jenom tohle. IIRC na to existují hotová řešení, hledej klíčové slovo "captive portal". A nečekej od toho kdovíjaké zázraky, má to spoustu problémů, včetně bezpečnostních.

Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #8 kdy: 19. 02. 2019, 08:46:44 »
moj ciel je aby z pre klientov pripojenych na AP bola dostupna len jedina jedna stranka beziaca na mojom servery aj ked si do browsra zadaju cokolvek ine. neviem ci sa to nazya unesenie spojenia alebo forward alebo nejak inak, ospravedlnujem sa ak som to nejasne vysvetlil, kludne ma poucte.

https://google.sk - chodi spravne - znamena ze sa otvori google.sk
http://www.whatsmyip.org/ - chodi spravne - znamena ze sa otvori whatsmyip.org
https://neexistujuca - vrati hlasku o nedostupnosti sluzby
http://neexistujuca - vrati hlasku o nedostupnosti sluzby

Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #9 kdy: 19. 02. 2019, 09:10:50 »
Vsetko na serveri co ma
--dport 80  a --dport 443 -j DNAT --to-destination IP_ROUTRA:555

Je to jednoduche, ale bez trochy praxe a skusenosti s iptablami to asi nerozbehas.
Tím ale přesměrujete jen TCP/IP spojení na porty 80 a 443. Dotaz ale nebyl na HTTP komunikaci, nýbrž chtěl přesměrovat veškerý provoz.

Tak v tom pripade musi spravit nieco na tento styl:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 1:65535 -j DNAT --to-destination IP_ROUTRA:555
Tazko vysvetlovat, toto su len principialne riesenia, zvysok treba doladit lokalne.

Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #10 kdy: 20. 02. 2019, 16:37:07 »
moj ciel je aby z pre klientov pripojenych na AP bola dostupna len jedina jedna stranka beziaca na mojom servery aj ked si do browsra zadaju cokolvek ine.
Toho se obecně nedá docílit, protože zadanou adresu může už prohlížeč vyhodnotit jako chybnou a ani se na ní nikam ptát nebude. Pokud byste chtěl docílit alespoň únosu adres v platném formátu, musel byste provozovat vlastní DNS server, který by na jakýkoli dotaz odpověděl odkazem na váš server. Čímž samozřejmě způsobíte to, že se na ten server přesměrují i všechny ostatní požadavky uživatelova zařízení – na aktualizace, na stažení e-mailů, na chat přes WhatsApp, Messenger a další… A záleží na tom, jak dlouhé timeouty vašim odpovědím nastavíte, uživateli pak ty aplikace nemusí fungovat ještě dlouho po té, co vaši síť opustí. Navíc vám to nebude fungovat, když uživatel použije HTTPS, protože nebudete mít důvěryhodný certifikát pro příslušnou doménu. A dnes už většina toho, co uživatelé používají, běží na HTTPS.

Shrnuto a podtrženo, na vašem místě bych se do něčeho takového nepouštěl, zejména když nevíte, co děláte. Většinou to nebude fungovat a navíc uživateli můžete rozbít přístup k internetu. Pravděpodobně existuje lepší způsob, jak docílit toho, čeho se snažíte docílit – pokud byste nám to prozradil.

Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #11 kdy: 20. 02. 2019, 17:26:01 »
Vpodstate potrebujem variantu captive portalu. klasicky capitve portal robi to ze po prihlaseni na wifi musi klient vykonat este nejaku akciu na captive portaly kde je presmerovany a az nasledne moze surfovat. Ja potrebujem aby bola klientovy minimalne raz (idealne stale) zobrazena moja stranka koli tomu ze na nej bezi webova appka a wifi klient maju primarne pouzivat tuto appku a nie surfovat. Chcem aby si klient nemusel zadavat do browsra nejaku IP:PORT alebo cokolvek. Proste aby to chodilo hned po tom co sa pripoji na wifinu a napise cokolvek do browsra a aby nemusel nic riesit.

Vilith

  • *****
  • 660
    • Zobrazit profil
Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #12 kdy: 20. 02. 2019, 17:52:35 »
Cili Captive portal kdy se zobrazi jen a pouze uvodni stranka a nikam dal ho to nepusti- to je ono?

Re:Routování klientů připojených přes Wi-Fi na konkrétní IP
« Odpověď #13 kdy: 20. 02. 2019, 17:52:47 »
Tím si akorát zaděláváte na problémy. Použijte nějakou krátkou adresu, kterou uživatel do prohlížeče zadá, případně ji můžete někde mít i jako QR kód (pokud tím klientem mohou být mobily nebo tablety), a budete to mít mnohem spolehlivější, než když se budete pokoušet unášet spojení. Můžete tam pak i použít HTTPS (pokud si tu doménu opravdu zaregistrujete) a nebudete muset řešit problémy s nezabezpečeným připojením v prohlížeči. Už dnes některá API v prohlížeči nejsou na stránkách otevřených přes HTTP dostupná, a postupně bude ještě lépe, nezabezpečené HTTP už konečně začíná vyklízet pole.

Pokud to trváte na tom, aby to bylo bezobslužné, použijte to, co používají captive portály. Dnes už myslím existuje standard nebo de-facto standard, jak je možné dát tou zařízení vědět, že v síti je captive portál a jakou má adresu. Takže na tu vaší adresu můžete uživatele přesměrovat tímhle způsobem. Třeba na Androidu se při připojení do takové sítě zobrazí dotaz ve smyslu, že pro připojení k síti je potřeba se přihlásit a zda to chce uživatel udělat, a pokud to odsouhlasí, otevře se mu internetový prohlížeč právě s tím captive portálem.