Proxy szórakozás

Kiindulási alap: van kép program, amik TCP-n kommunikálnak egymással. Mindjárt egyszerre két streamen is, egyik csak küldésre, másik csak fogadásra használt.
Cél: Kipróbálni, hogyan viselkednek, ha a tényleges Wi-Fi/LTE hálózaton már nem TCP-n, hanem UDP-n mennének, a kód fix, nem lehet átírni
Kisebb csavar: a két stream egyszerűség kedvéért legyen egy duplex UDP kapcsolatként jelen. Persze nem ugyan az a helyi TCP küldő mint aki a fogadó
(folyt. köv.)

Jó eséllyel meg lehet oldani a problémát például egy apró C programmal, egyszerűbbnek gondoltam netcat-el. Aztán kis idő múlva beláttam, hogy mégis bölcsebb lett volna C-ben vagy Pythonban megcsinálni, de ekkor már bosszantott, hogy nincs erre egy soros kész megoldás. Lehet az bármi, lehetőleg azért egyszerűbb mint netfilter/iptables ruleok hozzáadása (nem kétség, hogy aki ért hozzá annak azok lesznek egyszerűbbek).

A lényeg csak annyi, hogy a gépemen lévő TCP küldő socket küldje amit szeretne, ezt én még loopbacken elkapom, és UDP csomagokként küldöm tovább Wi-Fi-n vagy LTE-n. A túloldalt ugyan ez a felállás (rajzon egyszerűség kedvéérét nem rajzoltam fel, ami a gépemnél a rózsaszín lyuk, az ott a világoskék UDP send/recv doboz). Amit a túloldal visszaküld, azt viszont ne a küldő olvassa, hanem egy teljesen másik TCP socketre legyen továbbítva, az fogadja. Itt elég nagy fejvakarásba kezdtem, nem nagyon sikerült úgy csavarni a dolgot, hogy menjen. Végül elég rajzolgatás után összeállt a dolog. Netcat helyett egy robosztusabb, socat nevű progit használtam, de igazából lehet menne netcattel is. (A socat csak az ötletelés egy fázisába kellett, mert tud unconnected UDP socketet is használni fogadásra).

A gépeken kiadott parancsok (IP-ket és UDP portokat tükrözve nyilván):
socat - tcp-listen:TCP_SEND_PORT | socat - udp-send:TÁVOLI_GÉP_IP:TÁVOLI_GÉP_UDP_PORT | socat - tcp-listen:TCP_RECV_PORT

Sajnos korlátozott eszköztárammal ennyit sikerült összehoznom, ha bárkinek van elegánsabb, rövidebb vagy robosztusabb megoldása, kérem ossza meg velem is, hálás köszönet érte!

Hozzászólások

hogy oldod meg a tcp szolgaltatasait (udp folott), pl. elveszett csomag ujrakuldese, csomagok sorba rendezese, flow control, etc? Wifi-n - ha szerencsed van - nem kritikusak ezek a problemak, na de lte eseten sem? Ha azonban nagyobb mennyisegu adatot kell atvinned, akkor ezek bekavarhatnak...

socatnak meg lehet adni forrast is meg celt is, nem kell kettot egymasba csovezni

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!