VNC (tightvnc) - Aπομακρυσμένη σύνδεση σε γραφικό περιβάλλον

Υπάρχουν πολλές υλοποιήσεις του ανοιχτού πρωτοκόλλου vnc για απομακρυσμένη σύνδεση σε γραφικό περιβάλλον.

Μία από τις πιο δημοφιλείς και αποτελεσματική είναι το tightvnc.

Ρύθμιση server

Για να εγκαταστήσουμε τον tightvnc server

aptitude install tightvncserver

Μετά την εγκατάσταση οι εντολή vncserver είναι πανομοιότυπη με την tightvncserver

Εκκίνηση/τερματισμός

Αρχικά θα ορίσουμε κωδικούς για πλήρη πρόσβαση και μόνο για προβολή

tightvncpasswd 

Καλή πρακτική είναι να γίνεται σύνδεση πρώτα στο απομακρυσμένο μηχάνημα μέσω ssh και να εκκινείται ο tightvnc server ως

tightvncserver

με παραμέτρους

tightvncserver :1 -geometry 1024x768 -depth 16 -pixelformat rgb565

ή απλά

vncserver

Για να τερματίσει η 1η vnc συνεδρία που έχουμε εκκινήσει εκτελούμε

vncserver -kill :1

(Καθώς μπορούμε να εκτελέσουμε αρκετές συνεδρίες για τις τερματίσουμε, βάζουμε παράμετρο 2 για την 2η, 3 για την 3η κτλ)

Εκκίνηση μετά από αίτημα πελάτη

Για να εκκινήσουμε τον vncserver μετά από αίτημα πελάτη, εγκαθιστούμε το openbsd-inetd

aptitude install openbsd-inetd

Στην συνέχεια προσθέτουμε στο τέλος του αρχείου /etc/services γραμμές όπως οι παρακάτω

# Local services
vnc-640x480x8   5960/tcp
vnc-800x600x8   5961/tcp
vnc-800x600x16  5950/tcp
vnc-800x600x24  5962/tcp
vnc-1024x768x16 5900/tcp
vnc-1024x768x24 5963/tcp

Αυτό σημαίνει ότι μετά από αίτηση στην vnc οθόνη :0 ο vncserver θα εκτελεστεί σε ανάλυση 1024×768 σε 16bit χρώμα. Αντίστοιχα αίτηση στην οθόνη :50 θα εκκινήσει έναν vncserver σε 800×600 ανάλυση σε 16bit χρώμα

ΠΡΟΣΟΧΗ! το αρχείο /etc/services μπορεί να αντικατασταθεί σε αναβάθμιση του πακέτου netbase

Επίσης προσθέτουμε στο αρχείο /etc/inetd.conf, στο τέλος του

vnc-640x480x8   stream  tcp     nowait  nobody.tty      /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 640x480 -depth 8
vnc-800x600x8   stream  tcp     nowait  nobody.tty      /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 800x600 -depth 8
vnc-800x600x16  stream  tcp     nowait  nobody.tty      /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 800x600 -depth 16
vnc-800x600x24  stream  tcp     nowait  nobody.tty      /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 800x600 -depth 24
vnc-1024x768x16 stream  tcp     nowait  nobody.tty      /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 16
vnc-1024x768x24 stream  tcp     nowait  nobody.tty      /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 24

Επανεκκινούμε inetd και gdm

/etc/init.d/openbsd-inetd restart
/etc/init.d/gdm restart

Τώρα αρκεί να εκτελέσουμε το vnc χωρίς να ορίσουμε θύρα (προκαθορισμένη 0) για 1024x768x16bit color, ή ορίζοντας να εκτελεστεί σε άλλη ανάλυση και θα εμφανιστεί η οθόνη σύνδεσης του gdm

xtightvncviewer 192.168.1.100 -fullscreen

Θύρες

Οι θύρες που θα πρέπει να ανοίξουν από κάποιον firewall ή router είναι 5500, 5800 και 5900 έως π.χ. 5910 για 10 συνεδρίες vnc

Ρύθμιση client

Εγκατάσταση

Για να εγκαταστήσουμε τον tightvnc client

aptitude install xtightvncviewer

Μετά την εγκατάσταση οι εντολή xvncviewer είναι πανομοιότυπη με την xtightvncviewer

Σύνδεση

Σύνδεση μέσω τερματικού

Για να συνδεθούμε στον υπολογιστή με όνομα myserver.mydomain.com, στον οποίο έχουμε ήδη εκκινήσει μια συνεδρία vnc, εκτελούμε από τον υπολογιστή-πελάτη

xtightvncviewer myserver.mydomain.com:1

Για σύνδεση σε άλλες vnc υλοποιήσεις εξυπηρετητών που δεν κάνουν καλή συμπίεση με ταχύτητες adsl περίπου 256kbps

xtightvncviewer myserver.mydomain.com:1 -bgr233 -compresslevel 9 -quality 0 -depth 8

Για ταχύτητες adsl 192kbps έως 1Μbit

xtightvncviewer myserver.mydomain.com:1 -compresslevel 9 -quality 5 -depth 16 # (or -depth 8)

Για ταχύτητες τοπικού δικτύου

xtightvncviewer myserver.mydomain.com:1 -compresslevel 1 -quality 9 -depth 16 

Σύνδεση μέσω γραφικού πελάτη

Στο kde υπάρχει το krdc

Ασφαλής Σύνδεση

Το πρωτόκολλο vnc από μόνο του δεν υποστηρίζει κρυπτογράφηση. Για το λόγο αυτό συνίσταται να συνδεόμαστε μέσω ssh tunneling, δηλαδή να περνάμε τα δεδομένα μέσω μιας ασφαλής σύνδεσης ssh.

Πριν συνδεθούμε με vnc εκκινούμε μια απλή συνεδρία ssh και στον απομακρυσμένο υπολογιστή εκκινούμε τον vncserver

vncserver

Θα πρέπει να αντιστοιχίσουμε την απομακρυσμένη vnc θύρα π.χ. 5901 σε μια τοπική π.χ. ομοίως στην τοπική 5911. Από το τοπικό μηχάνημα λοιπόν εκτελούμε :

ssh -L 5911:server.mydomain.com:5901 user@server.mydomain.com

Και στην συνέχεια από τον τοπικό υπολογιστή τρέχουμε το πρόγραμμα - πελάτη

xtightvncviewer localhost:11 -encoding tight -compresslevel 9 -quality 5 -depth 16

Δοκιμές

Δοκιμές σε

  • γραμμή 100Mbit
  • athlon 2200+ ως server (1800 MHz)
  • celeron mobile 1300 ως πελάτη (2000 Mhz)

έδειξαν ότι

  • ακόμα και divx μπορεί να μεταδοθεί ομαλά σε ανάλυση 320×240 ή ακόμα και 400×300
    • Καλύτερη απόδοση είχε το xine σε σχέση με τον mplayer
    • O mplayer θα πρέπει να χρησιμοποιείται με παραμέτρους όπως
      • mplayer test.avi -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all
  • Αν ως πηγή επιλέξουμε τηλεόραση μπορούμε να δούμε ομαλά με
    • mplayer σε αναλύσεις 320×240 ή r 400×300
    • xdtv ρυθμίζοντας το xdtvrc
      • fullscreen = 640×480
      • windowsize = 400×300

Στατιστικά

  1. Οι cpus client και server πιέστηκαν σε πάνω από 80%,
  2. Για tv με xtightvncviewer σε non-compress mode η ταχύτητα μετάδοσης έφτασε τα 6Mb/s
  3. Με xtightvncviewer -compresslevel 9 έπεσε σε 500Kb/s

Πηγές

el/linux/debian/server/vnc.txt · Τελευταία τροποποίηση: 2011/06/04 00:25 (εξωτερική τροποποίηση)
 
Εκτός εάν αναφέρεται διαφορετικά, το περιεχόμενο σε αυτο το wiki διέπεται από την ακόλουθη άδεια: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Hosted by WebAllDesign - Powered by LServerAdmin Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki WebAllDesign