Vzda´lene´ propojenı´ pocˇ´ıtacˇu˚ pomocı´ VNC Semina´rnı´ pra´ce do kurzu ISA Petr Mikusˇek <
[email protected]>
10. listopadu 2004 Abstrakt Tato pra´ce si klade za cı´l sezna´mit cˇtena´rˇe se syste´mem Virtual Network Computing, prˇedstavit pouzˇ´ıvany´ software a na prˇ´ıkladech uka´zat typicke´ pouzˇitı´ a nastavenı´.
Obsah 1
Virtual Network Computing
2
Prˇı´klady konfigurace 2.1 Vzda´lene´ ovla´da´nı´ pocˇ´ıtacˇe . . . . . . . . . . . . . . . . . 2.1.1 Konfigurace VNC serveru . . . . . . . . . . . . . . 2.1.2 Prˇipojenı´ VNC klienta . . . . . . . . . . . . . . . . 2.1.3 Zabezpecˇene´ prˇipojenı´ VNC klienta pomocı´ SSH 2.2 Syste´m pro videokonferenci . . . . . . . . . . . . . . . . . 2.2.1 Pocˇ´ıtacˇ prˇedna´sˇejı´cı´ho . . . . . . . . . . . . . . . . 2.2.2 Videkonferencˇnı´ server . . . . . . . . . . . . . . . ´ cˇastnı´ci videokonference . . . . . . . . . . . . . . 2.2.3 U
3
2
Za´veˇr
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
2 2 2 3 3 4 5 5 6 6
A Skript pro snadne´ spousˇteˇnı´ VNC videokonference
1
7
1
Virtual Network Computing
Virtual Network Computing (VNC) by se do cˇesˇtiny dalo prˇelozˇit jako virtua´lnı´ pra´ce na pocˇ´ıtacˇi prˇes sı´t’. VNC je jednoduchy´ protokol pro vzda´leny´ prˇ´ıstup ke graficke´mu uzˇivatelske´mu rozhranı´ pocˇ´ıtacˇe na jine´m pocˇ´ıtacˇi. Je zalozˇen na principu vzda´lene´ho framebufferu. Protokol jednodusˇe umozˇnˇuje serveru aktualizovat framebuffer zobrazeny´ na prohlı´zˇecˇi. Protozˇe pracuje na u´rovni framebufferu, je teoreticky pouzˇitelny´ pro vsˇechny operacˇnı´ syste´my, okennı´ manazˇery a aplikace. Zahrnuje to X/Unix, Windows a Macintosh, ale take´ i PDA. VNC je protokol „tenke´ho klienta“, protozˇe klade jen ma´lo na´roku˚ na prohlı´zˇecˇ. Proto prohlı´zˇecˇ mu˚zˇe beˇzˇet na sˇiroke´ sˇka´le hardwaru a implementace klienta by meˇla by´t co nejjednodusˇsˇ´ı. Syste´m VNC byl vyvinut v laboratorˇ´ıch AT&T a nynı´ je jeho implementace RealVNC spravova´na firmou RealVNC Ltd. Tato implementace je volneˇ sˇ´ırˇena´ a mu˚zˇete si ji sta´hnout z URL http://www.realvnc.com/download.html.
2
Prˇı´klady konfigurace
Na´sledujı´cı´ prˇ´ıklady jsou „sˇity na mı´ru“ operacˇnı´mu syste´mu z rodiny Unix. Ovsˇem nemeˇl by by´t proble´m uvedene´ prˇ´ıklady a postupy aplikovat i na jiny´ operacˇnı´ syste´m.
2.1
Vzda´lene´ ovla´da´nı´ pocˇı´tacˇe
Nejcˇasteˇjsˇ´ı vyzˇitı´ syste´mu VNC je pro vzda´lene´ ovla´da´nı´ pocˇ´ıtacˇe z jine´ho pocˇ´ıtacˇe. V tomto prˇ´ıpadeˇ musı´ na pocˇ´ıtacˇi, ktery´ chci ovla´dat, beˇzˇet VNC server a na jine´m pocˇ´ıtacˇi VNC klient. Naprˇ. chci z domu ovla´dat pocˇ´ıtacˇ v zameˇstna´nı´, kde ma´m nainstalova´ny aplikace potrˇebne´ k pra´ci. V nasˇem uka´zkove´m prˇ´ıkladu bude mı´t pocˇ´ıtacˇ v zameˇstna´nı´ jme´no prace, resp. domov pro pocˇ´ıtacˇ v doma´cnosti. 2.1.1
Konfigurace VNC serveru
Nutnou podmı´nkou k tomu, aby se dalo z domu prˇipojit prˇes internet k VNC serveru, je potrˇeba ho provozovat na pocˇ´ıtacˇi s verˇejnou IP adresou. VNC server se spousˇtı´ pomocı´ prˇ´ıkazu vncserver. Pokud ho nechceme neˇjak zvla´sˇtneˇ konfigurovat a spokojı´me se s vy´chozı´ parametry, stacˇ´ı na pocˇ´ıtacˇi prace zadat xmikus01@prace$ vncserver New ’X’ desktop is prace:1 Starting applications specified in /etc/X11/Xsession Log file is /home/xmikus01/.vnc/prace:1.log a VNC server se na´m spustı´ na nejnizˇsˇ´ım volne´m displeji, v nasˇem prˇ´ıpadeˇ :1. Pokud nebyl VNC server prˇedtı´m nikdy spusˇteˇn, budeme jesˇteˇ vyzva´ni k zada´nı´ hesla, ktere´ je nutne´ zna´t pro prˇipojenı´ k nasˇemu VNC serveru. Je mozˇne´ ho pak kdykoliv zmeˇnit pomocı´ prˇ´ıkazu vncpasswd. Prˇ´ıkaz vncserver ma´ mnoho volitelny´ch parametru˚, jejichzˇ popis by byl nad ra´mec te´to pra´ce. Za´jemci necht’shle´dnou manua´love´ stra´nky programu vncserver1 nebo [1]. Uvedeme si jen neˇkolik nejcˇasteˇji pouzˇ´ıvany´ch parametru˚. :cˇı´slo displeje Urcˇuje cˇ´ıslo displeje, na ktere´m chceme, aby VNC server beˇzˇel. Pokud je jizˇ displej obsazen, VNC server se nespustı´ a vypı´sˇe chybovou hla´sˇku. 1 man
vncserver
2
-geometry sˇ´ırˇkaxvy´sˇka Urcˇuje rozmeˇry plochy v pixelech, kterou chceme vytvorˇit. Vy´chozı´ hodnota je 1024x768. -depth bitova´ hloubka Uda´va´ s jakou barevnou hloubkou v bitech chceme plochu vytvorˇit. Mozˇne´ hodnoty jsou 8, 15, 16 a 24, ostatnı´ hodnoty mohou vyvolat neprˇedpokla´dane´ chova´nı´. Naprˇ. pokud chceme spustit VNC server prˇes modemove´ prˇipojenı´, mu˚zˇeme pouzˇ´ıt prˇ´ıkaz vncserver :10 -geometry 800x600 -depth 8 ktery´ zajistı´ spusˇteˇnı´ serveru s pevny´m cˇ´ıslem displeje, omezenou velikostı´ plochy a barevnou hloubkou. Pokud jizˇ VNC server nepouzˇ´ıva´me, ukoncˇ´ıme ho pomocı´ prˇ´ıkazu vncserver, kde za parametr -kill uvedeme cˇ´ıslo displeje beˇzˇ´ıcı´ho VNC serveru. V nasˇem prˇ´ıpadeˇ spustı´me xmikus01@prace$ vncserver -kill :1 Killing Xvnc process ID 9742 a eventua´lneˇ prˇipojenı´ klienti budou odpojeni. 2.1.2
Prˇipojenı´ VNC klienta
Pokud spustı´me prˇ´ıkaz vncviewer bez parametru˚, budeme vyzva´ni k zada´nı´ VNC serveru, ke ktere´mu se chceme prˇipojit. Pokud spustı´me na pocˇ´ıtacˇi domov prˇ´ıkaz vncviewer prace:1 provede se prˇipojenı´ k VNC serveru beˇzˇ´ıcı´m na pocˇ´ıtacˇi prace na displeji cˇ´ıslo 1. V obou prˇ´ıpadech budeme vyzva´ni k zada´nı´ hesla, ktere´ je nastaveno na VNC serveru. Prˇ´ıkaz vncviewer ma´ neˇkolik volitelny´ch parametru˚, ale jejich popis cı´leneˇ vynecha´va´m, protozˇe pro beˇzˇne´ prˇipojenı´ nejsou potrˇeba. Za´jemce mu˚zˇeme odka´zat na manua´love´ stra´nky programu vncviewer2 a [1]. Existuje take´ mozˇnost prˇipojit se k VNC serveru jen pomocı´ prohlı´zˇecˇe podporujı´cı´ technologii Java. Stacˇ´ı nasmeˇrovat prohlı´zˇecˇ na port 58xx, kde xx je cˇ´ıslo v displeje. V nasˇem prˇ´ıpadeˇ uzˇivatel do prohlı´zˇecˇe zada´ URL http://prace:5801 a spustı´ se mu stra´nka, ktera´ si automaticky nacˇte program Java VNC viewer a ten se prˇipojı´ k nasˇemu VNC serveru. 2.1.3
Zabezpecˇene´ prˇipojenı´ VNC klienta pomocı´ SSH
Autentizace je u protokolu VNC vcelku bezpecˇna´, pro oveˇrˇenı´ znalosti hesla se pouzˇ´ıva´ syste´m na´hodne´ho pozˇadavku a odpoveˇdi, takzˇe heslo nikdy neputuje po sı´ti v nezasˇifrovane´ podobeˇ. Ale pokud jsme jizˇ jednou prˇipojeni, sı´t’ovy´ provoz mezi klientem a serverem putuje nezasˇifrovaneˇ a mu˚zˇe by´t neˇky´m po cesteˇ odposloucha´va´n. Pokud je pro na´s bezpecˇnost na prvnı´m mı´steˇ, doporucˇuje se protokol VNC „tunelovat“ prˇes bezpecˇneˇjsˇ´ı protokol, jaky´m je trˇeba Secure Shell (SSH)3 . SSH poskytuje mozˇnost pracovat se vzda´leny´m pocˇ´ıtacˇem pomocı´ textove´ho okna, kde se zobrazuje vesˇkera´ cˇinnost prova´deˇna´ se vzda´leny´m pocˇ´ıtacˇem. Vsˇechen provoz mezi takto prˇipojeny´mi pocˇ´ıtacˇi je sˇifrova´n pomocı´ techniky verˇejne´ho klı´cˇe, takzˇe i kdyzˇ neˇkdo tuto komunikaci zachytı´, jen teˇzˇko ji mu˚zˇe deko´dovat. Budeme prˇedpokla´dat, zˇe na pocˇ´ıtacˇi prace je SSH server spra´vneˇ nastaven a na pocˇ´ıtacˇi domov ma´me SSH klient. Potom pokud se chceme prˇipojit k pocˇ´ıtacˇi prace, stacˇ´ı jednodusˇe na pocˇ´ıtacˇi domov spustit SSH klient pomocı´ prˇ´ıkazu: ssh prace 2 man
vncviewer
3 http://www.openssh.com/
3
Budeme vyzva´ni k zada´nı´ hesla k u´cˇtu na pocˇ´ıtacˇi prace a pote´ mu˚zˇeme s tı´mto pocˇ´ıtacˇem norma´lneˇ pracovat, jako bychom u neˇho fyzicky sedeˇli. SSH ale poskytuje i mozˇnost, zˇe bude naslouchat na urcˇite´m portu na nasˇem loka´lnı´m pocˇ´ıtacˇi a prˇeposı´lat pakety na jiny´ port na pocˇ´ıtacˇi na druhe´ straneˇ prˇes zabezpecˇene´ spojenı´. Naprˇ. prˇ´ıkaz ssh -L x:localhost:y prace znamena´: „Prˇipoj se prˇes SSH na pocˇ´ıtacˇ prace a naslouchej na portu x na me´m pocˇ´ıtacˇi a jake´koliv spojenı´ na tento port prˇeposı´lej na port y na pocˇ´ıtacˇi prace.“ VNC server standardneˇ nasloucha´ na portu 59xx, kde xx je cˇ´ıslo displeje na serveru. Takzˇe naprˇ. pokud VNC server pouzˇ´ıva´ cˇ´ıslo displeje 1, tak nasloucha´ na portu 5901, pro cˇ´ıslo 2 na portu 5902, atd. Na pocˇ´ıtacˇi prace by na´m meˇl beˇzˇet VNC server na displeji :1 a chceme se k neˇmu z pocˇ´ıtacˇe domov bezpecˇneˇ prˇipojit. Vytvorˇ´ıme SSH prˇipojenı´ pomocı´ ssh -L 5901:localhost:5901 prace a nynı´ se mu˚zˇeme na displej :1 na pocˇ´ıtacˇi prace odkazovat jako na displej :1 beˇzˇ´ıcı´ na loka´lnı´m pocˇ´ıtacˇi. Pokud jsme prˇed tı´m spousˇteˇli VNC klient pomocı´ prˇ´ıkazu vncviewer prace:1 nynı´ se mu˚zˇeme prˇipojit pomocı´ vncviewer localhost:1 s tı´m rozdı´lem, zˇe nynı´ je cela´ komunikace bezpecˇneˇ sˇifrova´na. Tento a ostatnı´ prˇ´ıpady, jak zabezpecˇit VNC spojenı´ pomocı´ SSH jsou v [2].
2.2
Syste´m pro videokonferenci
Videokonference se poslednı´ dobou stala velmi dobry´m prostrˇedkem pro komunikaci mezi skupinou vza´jemneˇ dislokovany´ch osob. Umozˇnˇuje prˇena´sˇet obraz a zvuk mluvı´cı´ osoby a tak se „prˇiblı´zˇit“ mozˇnostem osobnı´ komunikace. Prˇi videokonferencci mu˚zˇe obcˇas dojı´t k situaci, kdy je potrˇeba obraz z pocˇ´ıtacˇe jednoho z u´cˇastnı´ku˚ „dostat“ take´ k ostatnı´m u´cˇastnı´ku˚m. Je to prˇedevsˇ´ım pro u´cˇely prezentace prˇedna´sˇky, demonstrace neˇjake´ho programu cˇi cˇinnosti. Da´ se to vyrˇesˇit tak, zˇe kamera bude mı´sto oblicˇeje snı´mat obrazovku prˇedna´sˇejı´cı´ho. Toto rˇesˇenı´ je asi nejjednodusˇsˇ´ı (v prˇ´ıpadeˇ, zˇe kamera nenı´ pevneˇ umı´steˇna), ale tomu take´ odpovı´da´ kvalita obrazu. Dalsˇ´ım rˇesˇenı´m by bylo nainstalovat virtua´lnı´ ovladacˇ, ktery´ by snı´mal obrazovku a byl by to jaky´si alternativnı´ zdroj videa. Toto rˇesˇenı´ je z hlediska kvality prˇijatelneˇjsˇ´ı, ale tento ovladacˇ urcˇiteˇ neexistuje pro vsˇechny operacˇnı´ syste´my a navı´c je to silneˇ syste´mova´ za´lezˇitost, takzˇe kazˇdy´ u´cˇastnı´k by nebyl schopen (nechteˇl) toto podstupovat. Konecˇneˇ poslednı´m rˇesˇenı´m je zave´st postrannı´ kana´l, ktery´m by se obraz z pocˇ´ıtacˇe distribuoval k ostatnı´m. Pro tyto u´cˇely je vhodny´ syste´m VNC, protozˇe je multiplatformnı´ a jedna´ se o beˇzˇnou uzˇivatelskou aplikaci, kterou je jednoduche´ nainstalovat. Navı´c kvalita obrazu je oproti zminˇovany´m rˇesˇenı´m nedostizˇna´. Pojd’me si tedy podrobneˇ uka´zat, jak tzv. VNC videokonferenci zprovoznit. Na obra´zku 1 vidı´me pohled na nasˇi modelovou situaci. Prˇedpokla´dejme, zˇe ma´me server videoconf, ten ma´ verˇejneˇ dostupnou IP adresu a beˇzˇ´ı na neˇm operacˇnı´ syste´m rodiny Unix (Linux, Solaris, . . . ). Neˇkdo mu˚zˇe namı´tnout, zˇe tento pocˇ´ıtacˇ nenı´ trˇeba a u´cˇastnı´ci se mohou prˇ´ımo prˇipojit k pocˇ´ıtacˇi prˇedna´sˇejı´cı´ho. Je to mozˇne´, ale pak by prˇedna´sˇejı´cı´ musel zajistit spusˇteˇnı´ VNC serveru pomocı´ prˇ´ıkazu˚ uvedeny´ch v kapitole 2.2.2. Toto vsˇak nenı´ nasˇ´ım cı´lem, protozˇe nechceme prˇedna´sˇejı´cı´ho zateˇzˇovat a navı´c mu˚zˇe by´t jeho pocˇ´ıtacˇ nedostupny´ z internetu4 . 4 Naprˇ.
beˇzˇ´ı na loka´lnı´ sı´ti a je skryt za routerem s podporou prˇekladu adres (NAT).
4
vncviewer
vncserver
vncserver vncviewer
user1 ...
videoconf lecturer
userX
Obra´zek 1: Pohled na situaci prˇi VNC videokonferenci
Veˇtsˇinou jizˇ ma´me pocˇ´ıtacˇ, na ktere´m beˇzˇ´ı videokonferencˇnı´ software (naprˇ. RAT/VIC). Nemeˇlo by tedy by´t proble´mem ho vyuzˇ´ıt i pro spousˇteˇnı´ VNC serveru a klienta. Pocˇ´ıtacˇ prˇedna´sˇejı´cı´ho lecturer by meˇl by´t dostupny´ po sı´ti z pocˇ´ıtacˇe videoconf (po loka´lnı´ sı´ti, verˇejna´ IP adresa). Pozˇadavky na vy´beˇr operacˇnı´ho syste´mu nejsou omezeny a mu˚zˇeme pouzˇ´ıt Windows, Linux, Solaris, Macintosh, atd. Navı´c je potrˇeba mı´t zprovozneˇn VNC server. Na pocˇ´ıtacˇ´ıch ostatnı´ch ucˇastnı´ku˚ videokonference musı´ by´t nainstalova´n VNC klient, prˇ´ıpadneˇ jeho funkci mu˚zˇe zastat i webovy´ prohlı´zˇecˇ s podporou technologie Java, viz kapitola 2.1.2. 2.2.1
Pocˇı´tacˇ prˇedna´sˇejı´cı´ho
Prˇedna´sˇejı´cı´ veˇtsˇinou nenı´ zdatny´ syste´movy´ administra´tor, a proto klademe du˚raz na co nejjednodusˇsˇ´ı pouzˇitı´ videokonferencˇnı´ho syste´mu. Prˇedna´sˇejı´cı´mu proto postacˇ´ı pouze spustit na pocˇ´ıtacˇi lecturer VNC server bez parametru˚: xmikus01@lecturer$ vncserver New ’X’ desktop is lecturer:1 Starting applications specified in /etc/X11/Xsession Log file is /home/xmikus01/.vnc/lecturer:1.log a ten mu ozna´mı´, na jake´m cˇ´ıslu displeje beˇzˇ´ı (v nasˇem prˇ´ıpadeˇ :1). Tuto informaci spolecˇneˇ s IP adresou sve´ho pocˇ´ıtacˇe a heslem pro prˇ´ıstup ozna´mı´ administra´torovi videokonference, ktery´ zajistı´ vsˇe ostatnı´. 2.2.2
Videkonferencˇnı´ server
Na administra´tora serveru videoconf jsou kladeny nemale´ pozˇadavky. Musı´ zajistit spusˇteˇnı´ VNC serveru, ve ktere´m pak spustı´ VNC klient, ktery´ prˇipojı´ k VNC serveru prˇedna´sˇejı´cı´ho. Navı´c musı´ zajistit, aby se mohlo k takto spusteˇne´mu serveru prˇipojit vı´ce u´cˇastnı´ku˚ a ti nemohli ovlivnˇovat cˇinnost pocˇ´ıtacˇe prˇedna´sˇejı´cı´ho „na´hodny´mi“ pohyby mysˇ´ı cˇi stisky kla´ves. Nejprve musı´ spustit VNC server s teˇmito parametry vncserver :10 -geometry 1024x768 -depth 24 \ -alwaysshared -dontdisconnect 5
ktere´ zajistı´, zˇe VNC server pobeˇzˇ´ı na displeji :10 (prˇ´ıp. jine´m), bude mı´t zadane´ parametry plochy, noveˇ prˇipojivsˇ´ı VNC klient neodpojı´ jizˇ prˇipojene´ (parametr -alwaysshared) a zˇe nedojde k automaticke´mu ukoncˇenı´ po odpojenı´ vsˇech klientu˚ (-dontdisconnect). Pak musı´ na za´kladeˇ znalosti IP adresy a cˇ´ısla displeje od prˇedna´sˇejı´cı´ho spustit VNC klient, ktery´ ma´ beˇzˇet na prˇes celou plochu v pra´veˇ vznikle´m VNC serveru a ma´ umozˇnˇovat pouze prohlı´zˇenı´: vncviewer lecturer:1 -viewonly -fullscreen -display :10 VNC klient se ho jesˇteˇ zepta´ na heslo k prˇipojenı´ k prˇedna´sˇejı´cı´mu. Nynı´ opeˇt informace o VNC serveru (IP adresa, cˇ´ıslo displeje, heslo) ozna´mı´ ostatnı´m u´cˇastnı´ku˚m a od te´to chvı´le je mozˇne´, aby se prˇipojili a videˇli obrazovku prˇedna´sˇejı´cı´ho. Pro ukoncˇenı´ je trˇeba nejprve stiskem Ctrl+C ukoncˇit beˇzˇ´ıcı´ VNC klient a pak ukoncˇit i VNC server pomocı´ prˇ´ıkazu: vncserver -kill :10 Pro usnadneˇnı´ a parametrizova´nı´ te´to opakovane´ cˇinnosti byl vypracova´n jednoduchy´ skript, ktery´ je uveden v prˇ´ıloze A. 2.2.3
´ cˇastnı´ci videokonference U
´ cˇastnı´ci se prˇipojı´ k serveru videoconf postupem popsany´m v kapitole 2.1.2. Pro zopakova´nı´, U VNC klient se v nasˇem prˇ´ıpadeˇ spustı´ takto: vncviewer videoconf:10
3
Za´veˇr
Na prˇ´ıkladech jsme si uka´zali, zˇe syste´m VNC se da´ pouzˇ´ıt nejen pro da´lkove´ ovla´da´nı´ jednoho pocˇ´ıtacˇe, ale i v prˇ´ıpadech, kdy je potrˇeba obraz z jednoho pocˇ´ıtacˇe sledovat na vı´ce pocˇ´ıtacˇ´ıch.
Reference [1] RealVNC Ltd.: Dokumentace k implementaci protokolu RealVNC, 2002–2004. Dokument dostupny´ na URL http://www.realvnc.com/documentation.html (listopad 2004). [2] AT&T Laboratories Cambridge: Making VNC more secure using SSH, 1999. Dokument dostupny´ na URL http://www.uk.research.att.com/archive/vnc/sshvnc.html (listopad 2004). [3] Richardson, T., RealVNC Ltd.: The RFB Protocol, Version 3.8, 17. kveˇtna 2004. Dokument dostupny´ na URL http://www.realvnc.com/docs/rfbproto.pdf (listopad 2004). [4] Richardson, T., Stafford-Fraser, Q., Wood, K. R., Hopper, A.: Virtual Network Computing, IEEE Computing, Volume 2, Number 1, leden/u´nor 1998. Dokument dostupny´ na URL http: //www.uk.research.att.com/pub/docs/att/tr.98.1.pdf (listopad 2004).
6
A
Skript pro snadne´ spousˇteˇnı´ VNC videokonference
#!/bin/sh if [ $# -ne 2 ]; then echo ”usage: $0
<:local-display>” echo ”e.g. $0 lecturer:0 :10” exit 1 fi vncserver $2 -geometry 1024x768 -depth 24 \ -alwaysshared -dontdisconnect vncviewer $1 -viewonly -fullscreen -display $2 vncserver -kill $2
7