saved from url=http://faq.net.pl/EditModule.aspx?tabid=583&mid=1253&def=Cs_ITSCS_CMS_Articles_View&ArticleID=1394



  
     

VNC i Tight VNC

Date: 20-06-2004
Author: Paweł Wawrzyniak
Number of Views: 3324
Rate: 4.33



Paweł Wawrzyniak
 

Paweł Wawrzyniak

p.wawrzyniak@it-faq.pl

 
  Pasjonat starych komputerów, które składuje bez umiaru, wielbiący formalizm programista o humanistycznym usposobieniu, administrator sieci osiedlowej... z konieczności i żeglarz z zamiłowania.
Obsesyjnie poszukuje rozwiązań idealnych.
 
 
 

Zdalna administracja w klimacie Open Source

VNC i Tight VNC





Administrowanie sieciami komputerowymi może być uciążliwe, jeśli poszczególne komputery rozrzucone są na dużym obszarze. Zmiana ustawień każdej z maszyn lub odległych serwerów mogłaby zamienić się bardzo szybko w prawdziwy koszmar, gdyby nie możliwość zdalnej administracji. Dzięki odpowiedniemu oprogramowaniu można bez problemu prowadzić pracę na odległych komputerach - bez względu na to, czy są to stacje robocze, czy serwery. Na rynku znajduje się wiele rozwiązań pozwalających przeprowadzać zdalną administrację, czy szerzej - umożliwiających obsługę i wykorzystanie oprogramowania na zdalnych komputerach. Są one używane nie tylko przez działy techniczne dużych firm, ale także w mniejszych sieciach, a nawet w Amatorskich Sieciach Komputerowych. Podstawowym kryterium decydującym o wyborze jest tutaj cena. Zaawansowane rozwiązania są zwykle drogie i cechują się dużym stopniem bezpieczeństwa, niezawodności i prędkości działania (wyjątkiem może być tutaj np. komercyjny Radmin, który oferuje bardzo wysoką jakość za stosunkowo niską cenę). Istnieją też tańsze narzędzia, a niektóre z nich są nawet darmowe. Jak się okazuje, w większości przypadków całkowicie spełniają swoje zadanie i mogą bardzo ułatwić pracę. W niniejszym artykule przedstawimy dwie propozycje, opiszemy ich możliwości, wady i zalety. To z pewnością powinno ułatwić Wam podjęcie decyzji, które z rozwiązań najbardziej pasuje do Waszych potrzeb.


Virtual Network Computing

VNC (ang. Virtual Network Computing) to najbardziej popularne rozwiązanie pozwalające na zdalną pracę. Dzięki niemu możemy oglądać pulpit i korzystać z oprogramowania odległego komputera z dowolnego miejsca w sieci (także w Internecie, o ile interesujący nas komputer posiada publiczne IP). Jedynym warunkiem jest instalacja odpowiedniego oprogramowania. Maszyny, które mają udostępniać możliwość zdalnego wykonywania działań muszą zostać wyposażone w serwer VNC. Z kolei na komputerach, które zamierzamy wykorzystywać do kontrolowania zdalnych maszyn, instalujemy oprogramowanie klienckie (tzw. przeglądarki - ang. viewer). Jedną z najważniejszych zalet VNC jest fakt, że oprogramowanie to w dużym stopniu jest niezależne od platformy. Dzięki temu możemy np. zainstalować serwer VNC na określonym komputerze (np. serwerze firmowym), a następnie obsługiwać go z dowolnej lokalizacji, z komputera, na którym da się uruchomić przeglądarkę. Nic nie stoi na przeszkodzie, aby serwer działał pod systemem uniksowym (np. Solaris, FreeBSD, GNU/Linux), a klient wykorzystywany do jego kontroli pracował pod dowolnym systemem z rodziny MS Windows. Oczywiście możliwa jest także sytuacja odwrotna. Pod tym względem VNC okazuje się bardzo elastycznym rozwiązaniem. Posiadamy całkowitą dowolność i możemy nawiązywać połączenia z maszyn klienckich do serwerów bez względu na architekturę sprzętu, czy wykorzystywany system operacyjny. Dodatkowo, z jednym serwerem uniksowym może się jednocześnie łączyć kilka maszyn klienckich. VNC dostępne jest w postaci pakietów instalacyjnych na najpopularniejsze systemy operacyjne, w tym dla:
  • GNU/Linux 2.x dla architektury x86,
  • Solaris 2.5 (dla maszyn SPARC),
  • QNX,
  • Windows 9x/Me/NT/2000/XP/2003 (x86),
  • Mac OS/Mac OS X,
  • DEC Alpha OSF1 3.2,
  • Windows CE 2.x (beta wersja klienta - viewer o rozmiarze 50 KB) dla procesorów SH3 oraz MIPS.
    VNC rozpowszechniane jest na licencji GNU GPL, dzięki czemu użytkownicy uzyskują pełny dostęp do kodów źródłowych. Na stronie odnajdziemy źródła m.in. dla systemów uniksowych (np. FreeBSD, NetBSD, OpenBSD, GNU/Linux) oraz MS Windows. Dzięki temu VNC działa na dużej ilości platform i daje możliwość adaptacji kodu źródłowego do wymogów nowych środowisk. To właśnie ta cecha umożliwiła przeniesienie oprogramowania na tak wiele platform. Ponadto, dostępna jest wersja napisana w języku Java, co dodatkowo zwiększa krąg możliwych zastosowań VNC. Mamy do wyboru zarówno oprogramowanie klienckie, jak i serwer - VNC (więcej na ten temat w ramce "VNC w Sieci"). Warto także zauważyć, że popularność tego rozwiązania zaowocowała także tym, że jest ono dołączane w postaci pakietów instalacyjnych do wielu dystrybucji wolnych systemów operacyjnych (GNU/Linux oraz *BSD). Jest więc to rozwiązanie bardzo łatwo osiągalne.
    Zaletą VNC jest także wykorzystywany do transmisji protokół, który charakteryzuje się prostotą, otwartością (żadnych patentów) i niezależnością od platformy. Po stronie przeglądarki (klienta) nie są przechowywane jakiekolwiek informacje dotyczące maszyny zdalnej, więc w przypadku zerwania połączenia z serwerem i jego ponownego nawiązania nie zostaną utracone żadne dane. W każdej chwili możemy wznowić połączenie, nawet z innej maszyny klienckiej i kontynuować pracę na serwerze od miejsca, w którym ją zakończyliśmy. Oczywiście rozwiązanie to ma także swoje wady, zanim jednak je przedstawimy, skupmy się na instalacji i konfiguracji oprogramowania.
     
    Rys. 1: Wybór komponentów oprogramowania w czasie instalacji

     
     



    Instalacja

    VNC możemy pobrać ze strony głównej projektu (patrz Ramka - "VNC w Sieci"). Najnowsza wersja nosi numer 3.3.7. W przypadku systemu MS Windows najlepiej ściągnąć gotowy pakiet instalacyjny. Następnie wystarczy uruchomić standardowy program instalacyjny Setup.exe. W trakcie procesu instalacji będziemy mieli możliwość wybrania elementów składowych oprogramowania (cały pakiet - serwer i klient, tylko serwer, tylko klient - patrz rys. 1).
    Instalator pyta także o podstawowe ustawienia oprogramowania związane z wyświetlaniem obrazu, oraz proponuje, aby serwer był uruchamiany jako usługa systemowa, przy każdym starcie systemu (oczywiście, jeśli zdecydowaliśmy się zainstalować tą część oprogramowania).
    Dostępna jest również wersja w postaci pakietu instalacyjnego RPM dla systemu RedHat Linux. W pozostałych systemach uniksowych (np. FreeBSD, NetBSD, OpenBSD) należy skompilować źródła VNC. Proces ten wykonujemy w następujący sposób. Po pobraniu stosownego pliku, np. vnc-3.3.7-unixsrc.tar.gz, rozpakowujemy go komendą:
    $tar xvfz vnc-3.3.7-uni-xsrc.tar.gz
    do katalogu, w którym przechowujemy pliki źródłowe programów. Następnie wydajemy komendy:
    $./configure
    $make
    W ten sposób zostaną skompilowane wszystkie komponenty za wyjątkiem Xvnc, które wykorzystuje własną, okrojoną wersję serwera XFree86 3.3.2. Aby skompilować Xvnc wchodzimy do katalogu Xvnc:
    $cd Xvnc
    i wydajemy komendę:
    $make World
    Po udanej kompilacji należy skopiować pliki wynikowe do katalogu, który określony jest przez zmienną środowiskową PATH, np. /usr/local/bin. Do tego celu używa się skryptu vncinstall:
    $cd ..
    $./vncinstall /usr/local/bin
    Skrypt zainstaluje również strony podręcznika systemowego man. W przypadku wykorzystania wersji klienta VNC napisanej w języku Java, należy skopiować pliki klas z katalogu /classes do docelowego katalogu instalacyjnego, np. /usr/local/vnc/classes. W tym celu wydajemy komendy: $mkdir -p /usr/local/vnc/classes
    $cp classes/* /usr/local/vnc/classes
    Jeżeli nie jesteśmy zainteresowani kompilacją źródeł VNC, a musimy zainstalować to oprogramowanie na systemie uniksowym (np. FreeBSD) lub jednej z dystrybucji GNU/Linuksa, powinniśmy przejrzeć płyty instalacyjne w poszukiwaniu gotowych pakietów instalacyjnych. W większości systemów uniksowych można odnaleźć dedykowane pakiety. Dodatkowo, w dystrybucji Debian GNU/Linux można wykorzystać program aptget (i zainstalować VNC z sieci). W przypadku systemu FreeBSD najłatwiej skorzystać z systemu portów, w lokalizacji /usr/ports/net/vnc wystarczy wydać polecenie:
    $make install clean
    Źródła zostaną pobrane z sieci i przekompilowane zgodnie z ustawieniami w pliku /etc/make.conf. System sprawdzi także wszelkie zależności i w razie konieczności, automatycznie pobierze odpowiednie składniki oprogramowania.


    Uruchamianie serwera w systemach uniksowych

    W systemach uniksowych (również w GNU/Linuksie) serwer VNC jest traktowany przez aplikacje, które z niego korzystają, jak typowy serwer systemu okien X Window (tzw. serwer X). Nie ma tutaj znaczenia fakt, że obraz nie jest wyświetlany na osobnym fizycznym wyświetlaczu, a obraz przesyłany jest przez sieć. Z tego względu wszelkie uruchomione programy działają bez względu na to, czy aktualnie podglądamy ich przebieg za pomocą przeglądarki, czy też zerwaliśmy połączenie.
    Na maszynie uniksowej serwer startujemy wydając komendę:
    $vncserver
    Jeżeli nie znajdujemy się w pobliżu maszyny, na której mamy uruchomić serwer VNC, możemy skorzystać z telnetu (lub SSH) w celu zalogowania się na swoje konto i wydania powyższej komendy.
    Program vncserver to skrypt Perla, który ułatwia startowanie serwera. Jednak w przypadku niektórych środowisk może okazać się konieczne poddanie go edycji, w celu ustawienia odpowiednich ścieżek dostępu. Jeżeli serwer uruchamiany jest po raz pierwszy, użytkownik zostanie poproszony o podanie hasła dostępowego. Później można je zmienić za pomocą programu vncpasswd.
     
    VNC w Sieci

  • Strona poświęcona rozwojowi VNC:http://www.realvnc.com/
  • Strona VNC na University of Cambridge (wersja AT&T):http://www.uk.research.att.com/archive/vnc/index.html
  • Strona serwera VNCj (Java):http://www.amherst.edu/~tliron/vncj/
  • Lista około 40 wspieranych platform:http://www.uk.research.att.com/archive/vnc/platforms.html
  • Przeróżne dodatki do VNC:http://www.uk.research.att.com/archive/vnc/extras.html
  • Zabezpieczanie transmisji w VNC za pomocą SSH/OpenSSH:http://www.uk.research.att.com/archive/vnc/sshvnc.html

  • W przypadku systemów uniksowych możliwe jest uruchomienie kilku serwerów na jednej maszynie (na MS Windows sprawa wygląda inaczej, patrz ramka - "Kilka serwerów VNC/TightVNC w MS Windows?"). Każdy będzie dostarczał klientom osobnego, wirtualnego ekranu. W tym celu wystarczy jeszcze raz wywołać skrypt vncserver i wskazać numer ekranu, np.:
    $vncserver :4
    Jeżeli nie sprecyzujemy numeru zostanie automatycznie przydzielony pierwszy wolny w kolejności. Główny ekran systemu X Window zawsze dostępny jest pod numerem 0. Informacja o numerach ekranów jest potrzebna podczas uruchamiania przeglądarki po stronie klienta lub programów na zdalnej maszynie - możemy wówczas sprecyzować, który wirtualny ekran ma być wyświetlany lub wskazać ekran na jakim program ma wyświetlać efekty swojego działania, np.:
    $xterm -display tester:4 &
    W trakcie działania serwer tworzy plik dziennika, w którym zapisuje wszystkie zdarzenia. Dostępny jest on w lokalizacji: ~/.vnc. Działanie serwera kończymy komendą o następującej składni - vncserver -kill , np.:
    $vncserver -kill :4
    Lista wszystkich parametrów wywołania serwera dostępna jest po podaniu komendy:
    $vnceserwer -help



    Uruchamianie serwera w MS Windows

    Po zainstalowaniu oprogramowania w menu Start zostanie utworzona grupa RealVNC. Serwer może być uruchamiany automatycznie w postaci usługi systemowej przy starcie Windows lub ręcznie, poprzez skrót w menu Start->RealVNC->Run VNC Server. Przy pierwszym uruchomieniu serwera użytkownik zostanie zapytany o hasło dostępowe. Będzie ono wykorzystywane podczas nawiązywania połączeń za pośrednictwem przeglądarki ze zdalnych maszyn. W przypadku typowego wykorzystania VNC nie zachodzi potrzeba modyfikacji standardowych ustawień. Domyślny numer wirtualnego
     
    Rys. 2: Okno właściwości (ang. Properties) serwera VNC, w którym możemy modyfikować ustawienia dotyczące trybu pracy

     
     
    ekranu ma wartość 0. Podajemy go podczas łączenia się z przeglądarki (klienta). W trakcie działania serwer wyświetla małą ikonę w pasku systemowym. W tym momencie można już korzystać z oprogramowania klienckiego do zdalnego administrowania systemem, na którym uruchomiliśmy serwer. Możemy także zmieniać ustawienia działającego serwera. W tym celu klikamy prawym przyciskiem myszy na ikonę serwera VNC w pasku systemowym i wybieramy z menu kontekstowego opcje Properties (patrz rys. 2).
     
    Kilka serwerów VNC/TightVNC w MS Windows?

    Niestety jest to niemożliwe. W MS Windows można uruchomić tylko jeden serwer VNC/TightVNC, co spowodowane jest faktem, że MS Windows nie jest systemem wielodostępowym, takim jak Unix. Oznacza to, że jednocześnie można używać tylko jednego ekranu użytkownika. Kiedy komputer pracujący pod kontrolą systemu MS Windows jest zdalnie obsługiwany, to wszystkie ruchy kursora i wyniki działania klawiatury są na nim odtwarzane (może to zobaczyć lokalny użytkownik). W systemach uniksowych może działać kilka serwerów, a każda osoba znajdująca się po stronie klienta korzystać będzie z własnego pulpitu.
    W przypadku maszyn wykorzystujących system Windows Terminal Server można uruchomić kilka serwerów VNC, ale rozwiązanie to nie ma sensu, ponieważ poszczególne ekrany nie będą aktualizować swojej zawartości w czasie, kiedy do jednego z serwerów podpięty jest klient.
    W oknie właściwości możemy m.in.:
  • zmienić hasło dostępowe,
  • zmienić numer przydzielany dla wirtualnego ekranu,
  • włączyć/wyłączyć wsparcie dla apletów klienckich Java,
  • włączyć/wyłączyć obsługę lokalnej lub zdalnej klawiatury i myszy,
  • włączyć/wyłączyć przesyłanie tapety pulpitu na zdalny komputer,
  • określić działanie serwera w momencie, kiedy odłączy się od niego ostatni klient,
  • określić zasady odświeżania ekranu.
     
    Rys. 3: Wywołanie klienta pod systemem FreeBSD w oknie xterminala. Widać moment uwierzytelniania, w którym należy podać hasło.

     
     



    Uruchamianie przeglądarek (klientów) w systemach uniksowych i MS Windows

    Podczas uruchamiania przeglądarki, użytkownik musi określić nazwę serwera lub podać jego numer IP oraz wskazać numer wirtualnego ekranu, z którym zamierza się połączyć. Jeżeli np. na danym komputerze zdalnym działa serwer, używający numeru 4, to w systemach uniksowych wydajemy komendę (zakładamy, że serwer nazywa się tester i ma numer IP 192.168.1.5 - patrz rys. 3):
    $vncviewer tester:4
     
    Rys. 4: Okno klienta systemu MS Windows, w którym podajemy nazwę/numer IP serwera oraz wskazujemy numer wirtualnego ekranu X. Na tym etapie mamy także możliwość ustawienia parametrów połączenia. W tym celu wciskamy przycisk Options (patrz rys. 5)

     
     
    lub:
    $vncviewer 192.168.1.5:4
    Ważne, aby komendę wydać w oknie emulatora terminala systemu X Window maszyny klienckiej. Podobnie w systemie MS Windows, możemy wydać komendę w oknie konsoli (wiersz poleceń), np.:
    C:\vncviewer tester:4
     
    Rys. 5: Okno klienta systemu MS Windows, w którym można ustawić właściwości połączenia po stronie klienta, m.in. sposób wyświetlania obrazu, skalowanie, włączenie/wyłączenie obsługi schowka

     
     
    Jednak najprostszym sposobem jest wykorzystanie skrótu znajdującego się w menu Start->RealVNC->Start VNC Viewer. Wówczas zostaniemy poproszeni o podanie nazwy lub adresu IP komputera, z którym zamierzamy się połączyć (patrz rys. 4). Po wpisaniu tych danych wciskamy przycisk OK, a w następnym oknie podajemy hasło (ustawiliśmy je podczas pierwszego uruchamiania serwera). Zatwierdzamy hasło i jeśli zostało poprawnie podane, to na ekranie pojawi się okno wyświetlające aktualną zawartość wyświetlacza zdalnej maszyny (patrz rys. 6 - dla porównania patrz rys. 7).

    Rating: 4,33
    1 0 0 0 5

    1

    2

    3

    4

    5

    Number of ratings: 6

    Comments
    malo opisane, Leszek , 2004-11-11 17:27:23
    a jak sie polaczyc z kompem, ktory ma adres prywatny?? 192.168.0.3
    ??
    re: malo opisane, jasiu , 2004-11-18 08:18:01
    zrobic sobie przekierowanie portów, jakie porty - poszukaj w dokumentacji
    nie rozumiem, Ewa , 2005-01-19 22:56:37
    zainstalowałam u siebie i server i viver jestem prywatną osobą a że wiem trochę więcej niż mój siostrzeniec chcąc uniknąć ciągłych telefonów to też i u niego zainstalowałam ten sam program (widziałam jak to działa w pracy) ale nie wiem jak się łączyć, do tej pory mi się to nie udało mam u siebie nr zaczynający się na cyfrę 8 i łącznie jest ich osiem przedzielonych kropkami a u mojego siostrzeńca jest jeden nr zaczynający się 1 jest ich łącznie osiem następnie znak /i numer zaczynający się 8 a cyfr łącznie 10 i nie wiem co dalej. proszę o podpowiedź ja i siostrzeniec działamy na WIN XP Dzięki
    re: re: malo opisane, xyz , 2005-03-04 19:09:12
    przekierowywanie jest malo bezpieczne. googlaj po necie znajdziesz lepsze rozwiazanie. :)
    Add comment
    Title: 
    Name: 
    Comment:

    Save

    Return


  • Copyright (c) Autorzy & IT SCS Sp. z o.o.
    Powered by IT FAQ    Terms Of Use    Privacy Statement
    Portal engine source code is copyright © 2002-2005 by DotNetNuke. All Rights Reserved