Raspberry pi etäyhteys kotiverkon ulkopuolelta

Omistan RasPin ja tarkoitukseni olisi saada etäohjattua raspia kotiverkon ulkopuolelta. Selkeitä ohjeita en ole vielä löytänyt. Ilmeisesti ip-osoite tulee asettaa kiinteäksi ja reittimestä avata tietyt portit…?http://kubitti.pitja.kapsi.fi/raspberry-pille-julkinen-ip-osoite-osa-2/ Näillä ohjeilla olen yrittänyt mutta en vain saa selvää. Aiemmin ohjeissa sanottiin että ip-osoite tulee asettaa staattikseksi ja tein sen. Ohjeissa kerrotaan kahdesta eri tavasta jossa toisessa yhteys otettiin No-Ip palvelun kautta. Tässä kuitenki ongelmaksi tuli portin 8081 asettaminen. En ymmärtänyt mistä tämä tulee tehdä. Reittimen asetuksistako? 1 osassa kerrottiin yhteyden luomisesta siltaamalla tietyt portit mutta tätäkään en saanut onnistumaan. Anteeksi mutta olen aloittelija Raspin kanssa:)

Verkkotekniikan erittäin lyhyt oppimäärä.

Eli internet meinasi loppua niin keksittiin NAT (Network Adress Translation), jotta internetiä riittäisi kaikille.

Internetissä ei ole 10.x.x.x tai 192.168.x.x osoitteita, joita voidaan käyttää yksityisesti esimerkiksi modeemireitittimen sisäpuolella. Näihin ei pääse suoraan siis käsiksi. NAT kuitenkin pitää kirjaa, mikä osoite sisäverkolle kuuluu millaisellekin portille reitittimen ulkopuolen (WAN) liittimessä. Tämä muutos on oletuksena yksisuuntainen. 192.168.1.10 lähettää paketin internetiin ja saa ulkoisen rajapinnan portin 4356. Kun vastaus tuohon porttiin tulee, välitetään se takaisin 192.168.1.10 koneelle. Mutta jos toisena hetkenä tulee yhteysyritys tuohon 4356 porttiin reititin ei tiedä mitään minne se tulisi lähettää ja paketi pudotetaan.

Tähän auttaa portforwardi, portin uudelleen ohjaus. Jolloin esimerkiksi tuo portti 4356 voidaan asettaa reitittimestä yhdistämään aina tuonne 192.168.1.10 laitteen porttiin 2348. Eli niiden ei tarvitse olla symmetrisiä.

Testaa siis, että palvelu toimii sisäverkosta. Selvitä oma IP osoitteesi, tee tuo portin uudelleen ohjaus reitittimestä ja ota yhteys vaikka puhelimella tuohon palveluusi. Sen jälkeen voi ihmetellä noip yms DNS seikkailuja.

Okei eli reittimen asetuksista pitäisi avata jokin portti. Onko niin että mikä tahansa portti käy. Reittimeni on Thomson TG789vn. Asetuksista kohdasta Home>Toolbox>Game&Aplication sharing>New Game and Aplication pystyy avata portteja mutta epäilen että se tulisi tehdä tätä kautta. Olenko lähellekään oikeilla jäljillä? Miten tämä yhteys otetaan puhelimen kautta jos ei ole kotiverkossa. Tällä hetkellä saan yhteyden raspin GPIO pinnien ohjaamiseen Raspberry contol soveluksella ja ssh yhteyden ConnectBot sovelluksella (koska raspberry control sovelluksessa en ole saanut ssh yhteyttä toimimaan) . Onko se tämän vaikeampaa kännykällä kotiverkon ulkopuoelta? Kiitos avusta

edit: Tein uuden portin 8081 to 8081. pitäisikö nyt toimia? Kun raspissa sshta käytrtään portilla 22 niin pitääkö se vaihtaa nyt portiksi 8081.

Oliko tuo 8081 nyt sen SSH:n portti? Vai jonkun muun ohjelman?

Jos tosiaan siihen meinasit SSH:n laittaa, niin mikäli pysyt tuossa 8081->8081 ohjauksessa, on Raspin SSH-palvelin laitettava kuuntelemaan porttia 8081, mutta jos teet ohjauksen 8081->22 niin sitä ei tarvitse erikseen tehdä. Ulkoverkosta voit ottaa yhteyden, kun käytät julkista IP-osoitetta (vaikka whatismyip.com/ ) ja tuota porttia 8081. Pitäisi toimia muuten ihan samalla tavalla kuin sisäverkostakin (kotiverkosta).

koitin tehdä 8081->22 mutta reitin ei antanut. Okei teen siis 8081->8081 ja laitan device kohtaan raspin ip osoitteen. sitten vaihdan raspin sshd_config tiedostoon portiksi 8081. Tämän jälkeen pitäisi siis saada yhteys kännykälläni kotiverkon ulkopuolelta raspiin?

Laitanko protocol ja tigger protocol kohtaan TCP,UDP vai Any

Okei kiitos paljon kaikki!! Sain yhteyden otettua. Lisäsin siis reittimestä portin 8081->8081 protokollana any. Sitten laitoin raspista ssh asetuksista portiksi 8081. Seuraavaksi otin kännykästä sovelluksella connectbot ssh yhteyden raspiin laittamalla sovelluksen antamaan kirjoituskenttään "raspin_käyttäjänimi@reittimen_ip:8081

Onko eroa jos ssh portti on nyt 8081 vaikka se oletuksena on 22? ja jos on voisiko raspin saada jotekin kuuntelemaan 22 portin lisäksi tuota 8081 porttia

Miten turvallista tämä on tietoturvan kannalta? Saako julkisesta internetistä nyt siis yhteyden vaan ja ainoastaan raspiini jos tietää raspberry pi:n käyttäjänimen, salasanan, reittimen ipn ja portin joka on auki?

SSH käyttää TCP:tä, joten valitse TCP.

Voit määritellä SSH:n kuuntelemaan useampia portteja laittamalla porttimäärityksen useampaan kertaan:

Port 22 Port 8081

Portit ovat vain numeroita, eivätkä vaikuta ohjelman toimintaan. Jos tuon muutoksen tekisi reitittimessä, niin palvelimen kannalta siinä ei olisi mitään eroa. Yksi huomioitava juttu on, että alle 1024 numeroisia portteja ei Linuxissa voi käyttää ilman lisäoikeuksia, mutta sehän ei vaikuta SSH:n käyttöön, kun sillä on tarpeelliset oikeudet. Kuitenkin joidenkin mielestä se aiheuttaa turvallisuusriskin, kun periaatteessa, jos SSH kaatuisi (enpä ole kuullut että olisi tapahtunut), niin jokin käyttäjätason ohjelma voisi ottaa tuon portin ja esittää SSH-palvelinta saaden tietoja käyttäjältä. Tämä kuitenkin edellyttää, että olisi pääsy palvelimelle jo ennestään. En ole itse ainakaan vielä välittänyt tuosta.
serverfault.com/questions/189282 … t-ssh-port

Se on aika turvallista. Tosiaan tarvitsee tietää IP, selvittää portti, tietää tunnus ja salasana, jotta voi yhdistää. Lisää turvallisuutta saa fail2ban-ohjelmalla ja käyttämällä salasanojen sijasta avaimia. Itse käytän molempia ja ConnectBot osaa avainparien käytön.
linux.fi/wiki/Fail2ban
linux.fi/wiki/SSH#Tunnistaminen_avainparilla
Kannattaa myös tarkistaa, että root-tunnuksella kirjautuminen on pois päältä ja sudo-käyttäjillä on salasana, joka myös vaaditaan, kun niitä komentoja suoritetaan. Tosin root:ksi ei taida muutenkaan Raspbianissa päästä suoraan kirjautumalla.

Kiitos paljon Tomin!!!

Pysyykö IP-osoitteeni samana vai ei? miten No-Ip liittyy asiaan?

Seuraavaksi jotain valvontakamera projektia varmaan säätämään. Tavoitteena olisi joskus… hyvin pitkän ajan päästä saada ohjattua raspilla kodin valoja valvontakameroita ja ehkä jotain sää antureita. Pikkuhiljaa eteenpäin:)

Jos joku tietää asiasta tai tietää hyviä oppaita esim. valojen ohjaamisesta raspilla niin mielellään lukisin.

Mietin tässä jos säätäis vanhoista android kännyköistä ip-kameroita niin olisiko mahdollista päästä sisäverkon ulkopuolelta katsomaan kaikkia yhtä aikaa yhdestä IP-osoitteesta. Vai pitääkö sama homma mitä raspille tein nii tehdä jokaiselle kameralle erikseen? Kunnon valvontakamera tarkoitukseen ei noista kännykkä väsäyksistä ole mutta lähinnä mielenkiinnosta:)

Ole hyvä. :slight_smile:

Kuluttajaliittymissä yleensä IP-osoite on vaihtuva eli se voi vaihtua esimerkiksi, kun modeemi käynnistetään uudelleen tai kun operaattori niin haluaa. No-IP:n tai vastaavan dynaamisen DNS palvelun kautta, voi yleensä ilmaiseksi rekisteröidä alidomainin, jolla voi yhdistää haluttuun palvelimeen riippumatta palvelimen IP-osoitteesta. Se toimii niin, että palvelin ilmoittaa tasaisin väliajoin IP-osoitteensa DDNS-palveluun, jotta kyseinen domainosoite osataan ohjata oikeaan IP-osoitteeseen. Itse käytän dy.fi:n palvelua, mutta paljon muitakin on olemassa.

Yksi portti voi mennä vain yhdelle palvelimelle, mutta samassa osoitteessa eri portit voivat ohjata eri tietokoneille. Tietysti on myös mahdollista käyttää välityspalvelinta eli videoliikenne voi kulkea vaikka Raspberryn kautta, jos niin haluat. Tämä on ihan toteutus kysymys. Joka tapauksessa liittymälläsi on vain yksi osoite ja sen kautta yhdistetään kaikkiin liittymässäsi oleviin laitteisiin. Portti on toinen juttu ja tosiaan voit osoittaa eri laitteille eri portit tai kierrättää liikenteen yhden laitteen kautta.

Minulla on no-ip käyttäjä jo eli ilmeisesti kirjautuessa esim. connectboti:ssa reittimen IP-osoitteen sijasta laitetaan vain ddns osoite?

Raspin kautta olis kiva saada videoliikenne kulkemaan mutta miten ja miten toteuttais parhaiten videoiden katselun etänä. Kännykän kautta VNC:llä varmaa aika tökerö. Kiva olisi jos saisi jotenkin selaimen kautta näkymään kolme eri IP-kameraa samasta osoitteesta. Vaikka Raspin IP-osoitteella niin pääsisi mistä päin tahansa maailmaa käsiksi kameroiden kuvaan. Tälläsiä suunnitelmia olisi. Omat taidot ei vaan tahdo riittää :unamused:

Juu, sitten käytetään sitä palvelusta saatua osoitetta. Kannattaa laitttaa Raspi päivittämään se No-Ip:n osoite automaattisesti.

En ole tuollaista tehnyt itse, mutta yksi tapa on laittaa Raspberrylle www-palvelin (Apache, nginx tai vastaava), joka tarjoilee nettisivun ja mahdollisesti myös sen videoliikenteen.

Kannattaa rakentaa tuollainen järjestelmä osissa, niin että ensin vaikka niitä kameroita testailee lähiverkossa että saa videon näkymään ja sitten vastaa alkaa tehdä sinne Raspille sitä käyttöliittymää. Mitää varsinaista “etäyhteyttä” kuten SSH tai VNC et tarvitse noiden käyttöön vaan video voi kulkea vaikka HTTP:llä tai RTTP:llä. Jos video menee Raspberryn kautta, niin se voi varmistaa, että käyttäjällä on oikeudet yleensäkään katsoa sitä videota.
en.wikipedia.org/wiki/Hypertext_ … r_Protocol (mitä nettiselaimet käyttävät)
en.wikipedia.org/wiki/Real-time_ … t_Protocol (esimerkiksi Yle Areena käyttää)

Kotiverkossa sain kamerat toimimaan. https://play.google.com/store/apps/details?id=com.pas.webcam&hl=fi Tuota sovellusta käyttän ja jatkossaki varmaan tuolla. Sovellus antaa jo itsessään jokaiselle IP-kameralle http sivut josta pääsee säätelemään. Vaikeaa lähteä kolmesta eri osoitteesta kuvaa kattelemaan niin siksi tarkoitus olisi yhdistää yhteen http sivuun. Raspin kautta siksi että kodin ulkopuolelta pääsee käsiksi kuvaan.

Tällä hetkellä kuitenkaan en vielä tiedä miten saan yhdistettyä noilta kolmelta eri sivulta videokuvan apachella raspin kautta pyöritettävälle http sivulle. Mutta eiköhän se selviä

Pitäisikö minun saada tekemälleni html sivulle yhteys kännykän selaimella sisäverkon ulkopuolelta osoitteella raspin_ip/index.html

edit: ilmeisesti tarvitsee siis sen portin 8081 mutta laitetaanko se vain näin reittimen_ip:8081/index.html ? Tämä kyllä menee sivulle mutta sisältö ei näy.

Tarvitset toisen portin HTTP:tä varten eli et voi käyttää samaa kuin SSH:lle. Tee siis ohjaus jostain toisesta portista Raspberryn porttiin 80.

Voit yhdistää nuo kamerat käyttämällä Raspberryä välityspalvelimena, jolloin sivut kulkevat sen kautta ulkoverkkoon. Tällöin kamerat voivat olla vaikka seuraavanlaisissa osoitteissa:
raspberry.example.com/kamera1/
raspberry.example.com/kamera2/
jne. ja linkit noihin ovat sitten suoraan osoitteessa
raspberry.example.com/

Jos yhteydet ovat vain yksinkertaisia HTTP-yhteyksiä, niin tuon voi tehdä melko vähällä vaivalla sekä nginx:llä että Apachella:
nginx.com/resources/admin-guide/reverse-proxy/
httpd.apache.org/docs/current/mod/mod_proxy.html

Toki jos sivuilla on jotain linkkejä (esim. videostreamit), niin niitä pitäisi sen verran saada muuteltua, että tuo alkuun tuleva kameraX/ pitää saada siihen lisättyä.

Okei. Teen portin uudelleenohjaukset kun saan ensiksi sisäverkossa pyörimään… jos saan:)

Ilmeisesti on http yhteyksiä? En ymmärtänyt tuota täysin. Koitan parhaillaan saada selvää 9-luokkalaisen kuutosen englanninkielentaidoilla noista englannin kielisistä nettisivuista joita linkitit.

Eli joo siis pitäisi noille raspberry.example.com/kamera1 vai onnistuuko helpomminkin?

edit: Selvittelin tässä streamaus tapoja ja ohjeita löytyy paljon ip-kameroiden streamaamiseen netti sivulle ainakin vlc:llä mutta toimiiko vlc:llä streamaus raspilla. Tässä yksi ohje jossa käytetään vlc:tähttp://sedexp.net/equipment/setting-ip-camera-live-stream-experiments

Myös VLC-mediaplayerilla saa yhteyden noihin kameroihin avaamalla suoratoiston verkosta osoitteesta kännykän_ip:8080/video. Saisiko sivulleni jotenkin VLC:n playerin josta video näkyisi?

Ja aloittelijana en oikein ymmärrä miksi IP-cam sovelluksessa osoite raspberry.example-com/kamera1 yhteyden ilman porttia 8080. Jos joku pysyisi selventämään aloittelijaa niin olisin hyvin kiitollinen:)

Selaimen HTTP-yhteys käyttää oletuksena porttia 80 eli osoite example.com:80. Välityspalvelimella ohjaaminen voidaan tehdä, niin että käyttäjä ottaa yhteyttä palvelimeen (tässä Raspberryllä pyörivä www-palvelin), joka ottaa yhteyttä kameran antamaan osoitteeseen ja sitten välittää käyttäjälle sen tiedon mitä tuolta ikinä tuleekaan. Käyttäjä ei tätä välittämistä näe, vaan vain että on yhdistänyt palvelimeen (Raspberryyn).

En tunne tuota Androidin kamerasoftaa, niin en osaa sanoa miten se toimii. Mitään oletuksiakaan ei oikein voi tehdä, mutta jos tuo toimii VLC:llä, vain antamalla sivun osoitteen, niin varmaankin se on suora linkki HTTP-yhteydellä tarjoiltavaan videoon. Tällöin nuo ohjeet välityspalvelimesta toimivat ihan suoraan, kunhan käytät niitä ohjeita, jotka sopivat käyttämällesi www-palvelimelle.

Kiitos kiitos! Noniin siis nyt koitan selvittää tarviinko sivulle jonkin playerin joka pyörittää stramia. Ja onko raspille tällaisia kevyitä playereita.Vai onko mahdollista streamata kuva jotenkin ilman että asennan jonkin playerin ja miten tämä streamaus toiselta http sivulta onnistuu omalle sivulleni.

Teknisestihän se Raspberry ei oikeastaan tarvitse mitään soitinta, vaan ne soitinpalikat ovat selaimessa tai sen lisäosissa. Toki jos haluat, niin varmaan HTML5 player hakusanoilla löytyy monenlaista.

Ihan yksinkertaisimmillaan jos haluaa sivun, jossa on soitin, niin laittaa sinne seuraavan tagin:

<video src="linkki_videoon.pääte">

Tämä sitten toistuu riippuen siitä suostuuko selain toistamaan itse sen tyyppistä videota. Jos tuo ei toimi, niin VLC-lisäosalla saa lisää tiedostomuotoja esimerkiksi Firefoxiin (ei Chromeen/Chromiumiin, koska ne eivät tue NPAPI:a enää) ja sitten koodi meneekin vähän monimutkaisemmaksi.
Lisätietoja voit katsella vaikka tuolta: w3schools.com/html/html5_video.asp

En ole itse VLC-pluginia lisännyt sivuille ja kannattaakin ensin selvittää, että saako sen videon pihalle WebM, Ogg Theora tai h.264 muodossa (avoimuus ja paremmuus järjestyksessä eli ensin mainittu paras), jotta sen voisi toistaa selaimessa suoraan, ja vasta sitten miettiä VLC:n käyttöä. Nuo muodot ovat yleensä selaimissa tuettuna tai lisättyä koodekeilla.
Jos joudut menemään VLC:n reittiä, niin tuolla vähän referenssiä siihen, voin katsella vähän tuota jos sitä oikeasti tarvitaan:
wiki.videolan.org/Documentation:WebPlugin/

Mahdollisimman helposti olisi tarkoitus saada joten tuon vlc:n taidan unohtaa jos nyt vaan saan toimimaan näin.

Elikkä koneella olevien videoiden toistaminen onnistui helposti tekemälläni sivulla mutta en saa tuota suoraa lähetysyä android ip-kamerasta toistettua.

Mikä voisi olla ongelma?
Koodi on siis tällainen:

[code]

Kamera2

Kamera2

[/code]

Tuolla androidlaitteen_ip:8080/video linkillä toimii ainakin koneella vlc:llä eli pitäis olla oikea lähde.

IP Webcamin osoitteessa androidlaitteen_ip:8080 kun avaa browser streamin elementin niin siinä koodi onkin tällainen

<img id="browser_video" class="video-image" alt="video" src="/video"> 

siis img eikä video. Miksi se on noin? En kyllä saanut img:lläkään toimimaan.

Tuo img ei kyllä mitenkään voi olla video vaan kuva. Tiedätkö mikä tuon Android-laitteen videon muoto on? Jotain tietoja näkee myös VLC:llä Työkalut / Koodekin tiedot -kohdasta, kun toistaa tuota videota. Kannattaa testata, että h.264 (mp4) on tuettu selaimessa. Sen voi katsoa vaikka Youtuben sivuilta:
youtube.com/html5

Käytän chromea ja näyttäisi tukevan.

VLC:n antamat tiedot
Tyyppi:video
Koodekki: Motion JPEG Video (MJPG)
Tarkkuus: 320x240
Purettu formaatti: Planar 4:2:0 YUV full scale

Voinko siis tuota http:tä varten avata reittimestä raspille portin (80->80 ?) jonka jälkeen saisin kaikkiin kameroihin yhteyden esim. android sovelluksella Tinycam moitor pro sisäverkon ulkopuolelta osoitteessa Raspin_iposoite:80/http:androidikännykän_iposoite2:8080/video

Ettei tarvitsisi avata portteja jokaisella kameralle erikseen.