ROS 1 gaiak VPN bidez: jarraitu iragarritako amaiera-puntua
ROS 1 master erregistroak ez du gai-daturik eramaten. Irakurri iragarritako nodoaren URIa, egin helbide hori bideragarri, eta gero baimendu argitaratzailearen ataka.
Zure lan-estazioa ROS 1 masterrera tunelaren bidez iristen da eta oraindik gai-zerrenda hutsa erakusten du. Eredu hori ohikoa da, zeren master erregistroa eta gaien garraioa bi elkarrizketa desberdin baitira, eta lehenengoa soilik igarotzen da masterretik. Beheko zerrendak bigarren elkarrizketa egiten du: argitaratzaile batek iragartzen duen amaiera-puntua, harpidedunak iritsi behar duen helbidea eta bikotea hitz egitea ahalbidetzen duen baimena. Hemen guztia ROS 1 zaharari dagokio soilik, zeinaren Noetic laguntza-leihoa 2025eko maiatzean amaitu baitzen.
1. urratsa: frogatu master konexioa ez dela gai konexioa
Hasi funtzionatzen duena funtzionatzen ez duenetik bereizten. rostopic list arrakastatsu batek frogatzen du zure shell-a masterraren XMLRPC atakara iristen dela eta masterrak gaiak ezagutzen dituela; ez du ezer esaten harpidedun bat argitaratzailera irits daitekeen ala ez. Beheko hiru komandoek desberdintasun hori ikusgai egiten dute, eta guztiak irakurtzeko soilik dira.
echo "$ROS_MASTER_URI"
rostopic list
rostopic info /chatter
rostopic info-ren irteerak argitaratzailearen nodoaren URIa izendatzen du, hau da, argitaratzailearen ostalarian dagoen XMLRPC helbide bat. Helbide hori izango da zure harpidedunak hurrengo deituko duena, beraz, harpideduna non exekutatzen den ere, handik irisgarria izan behar du. Robotaren bertako LANean soilik existitzen den interfaze batera eramaten badu, masterraren bilaketak arrakasta izango du eta datuak ez dira inoiz iritsiko.
2. urratsa: irakurri iragarritako amaiera-puntua nodotik bertatik
ROS 1-ek ROS_IP edo ROS_HOSTNAME-tik hautatzen du bere ostalari-identitate iragarria, horietako bat ezarrita dagoenean, eta bestela ostalariaren beraren izen-ebazpenera jotzen du. Aztertu benetan abiarazitako prozesuaren ingurunea, zeren systemd unitate batek, edukiontzi batek edo bigarren terminal batek balio desberdina eraman baitezakete zure proba funtzionatu zuen shell-arena baino.
echo "$ROS_IP" "$ROS_HOSTNAME"
rosnode info /talker
getent hosts robot-host
Ostalari-izenaren iragarki batek soilik funtzionatzen du peer bakoitzak izen hori aurreikusitako helbide irisgarrira ebazten badu. Izen hori robotaren beraren sarean soilik ebazten bada, tunelaren beste aldeko lan-estazio batek ez du erabiltzeko modurik izango, eta DNS atzizkirik bultzatzen ez duen VPN batek desadostasuna areagotzen du. ROS_IP tunelaren helbidera ezartzea aldaketarik txikiena da topologia bideratua dagoenean. Edozein aukera eginda ere, bi muturretarako idatzi, zeren identitatean ados ez dauden argitaratzaile batek eta harpidedun batek negoziatuko baitute eta gero ezingo dute konektatu.
Gelditu hemen iragarritako URIak peer batek ere bideratu ezin duen helbide bat erabiltzen badu. Suhesi-lanik ez du konponduko interfaze okerrean ebazten den izen bat.
3. urratsa: egin iragarritako helbidea ebazgarri eta bideratua
URIa eskuan duzula, irisgarritasuna harpidedunaren ostalaritik probatu, robotatik beharrean. TCPROS ataka negoziazioan zehar hautatzen da, beraz, hasierako proba erabilgarria XMLRPC ataka da eta geroko proba erabilgarria ezarritako socket-a. Norabide bakarrean soilik existitzen den ibilbide bat VPN bideratuetan hutsegite ohikoa da, eta itzulerako bideak aurrerakoak beste balio du.
ip route get 10.70.0.2
nc -vz 10.70.0.2 33911
ss -tnp dst 10.70.0.2
TUN interfaze bideratu batek IP elkarrizketa hauek eramaten ditu robotaren Ethernet segmentua zabaldu gabe, eta hori izan ohi da urrutiko operadoreak nahi duena. Pilaren zerbait broadcast edo multicast-en mende badago horren ordez, baldintza hori bereiz ebaluatu behar da; tunela TAP bihurtzeak tresna bakarra asetzeko sare osoa zabaltzen du parte-hartzaile guztientzat.
Gelditu hemen ibilbidea edo itzulerako bidea falta bada. Bere ostalarian erantzuten duen baina lan-estaziotik iristen ez den argitaratzaileak bideratze-arazoa du, ez ROS arazoa.
4. urratsa: baimendu peer elkarrizketa eta behatu gai bat
Ireki negoziatutako elkarrizketak behar dituen atakak soilik, eta mugatu arau bakoitza iragarritako parte-hartzaileetara. Masterraren entzulea ez da gaien karga-zama birbidaltzeko gailua, beraz, hura soilik baimentzeak argitaratzailearen amaiera-puntua itxita uzten du. Eduki ROS entzuleak VPN pribatuaren muga-mugan, internet publikora agerian jarri beharrean.
rostopic hz /chatter
rostopic echo -n1 /chatter
rosnode ping /talker
Behatu gai kaltegabe bat benetako argitaratzailetik benetako harpidedunera eta egiaztatu bai iragarritako amaiera-puntua bai erantzun-bidea. Mezu bakarrek frogatzen dute bideak funtzionatzen duela; tasa egonkorrek frogatzen dute irekita jarraitzen duela. Eduki aktuadoreen kontrola eta segurtasun-egiaztapenak sare hutseko proba honetatik kanpo, zeren funtzionatzen duen gai batek ez baitu funtzionatzen duen robot bat ziurtatzen. Idatzi ROS bertsioa eta behatu duzun amaiera-puntu bikotea, hurrengo pertsonak topologia-aldaketa erregresiotik bereizi ahal izateko.
Zerrenda osatuta dago iragarritako URIa harpidedunetik irisgarria denean, negoziatutako ataka peer horrentzat soilik irekita dagoenean, iragarritako gai bat isurtzen denean, eta ingurune-balioak bi ostalarientzat idatzita daudenean. ROS 1 zaharrak ez du konponketarik jasoko arlo honetan, beraz, erregistroa da jendea aldatu ondoren funtzionatzen jarraitzen duen zatia.