Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

X, VNC, RDP, ? -Hjälp

 Hej,

 

Min dator börjar nu efter sex långa och trogna år bli lite trött, och tanke på lite ny hårdvara har grott i skallen ett tag nu. Men hur jag än tänker blir jag inte riktigt nöjd. Så en tanke slog mig, för ett tag sedan köpte jag mig en Prolliant DL380 G4 som jag hade lite idéer att omvandla till min stationära burk. Men saker som ljudnivån och grafikkort har stått i vägen. Jag kör linux med dualscreen (med tanke på att bygga ut till tripple- /quadscreen) vilket gör att jag behöver en (två!?) PCI-E port för att köra ett hyffsat grafikkort. Detta finns givetvis inte på servrar eftersom det inte är tänkt att använda dessa grafiskt.

 

Så idag slog det mig. Jag kör Vmware ESXi på Prollianten idag och skulle ju kunna köra en tunn-klient med min existerande dator. Således köra någon remote X-server mot maskinen och på så sett få ut dualscreen (eller trippel..) till min nuvarande burk. Detta skulle ju bli perfekt eftersom jag skulle kunna köra en extremt light linuxdist (typ min nuvarande archlinux installation nerbantad), som per default ansluter till min server med gigabit lina. Men jag skulle också urenkelt kunna köra RDP mot min Windows XP installation som finns på servern (för exempelvis flash och autocad). Kan jag dessutom få min light-dist att boota supersnabbt skulle jag kunna stänga av den när den inte används (i motsats till idag då den står igång 24/7/365). Jag skulle också kunna sätta upp någon användare med singlescreen för att snabbt och enkelt komma åt allt från i princip vilken dator som helst, även utifrån.

 

Så vad ska man köra för att "tunnla X" (missförstå mig rätt!)? Jag vill alltså inte köra något WM på min nuvarande dator, utan ansluta via RDP/Remote-X(?)/VNC mot min installation på Prollianten. Prollianten kör alltså min installation (direkt eller via ESXi). Vad bör jag sätta upp för att göra detta? Jag vill alltså inte sätta upp en grafisk installation och "visa innehållet" på min nuvarande dator, utan göra likt man gör med RDP mot Windows XP, köra en remote-session på den nuvarande datorn.

 

Idéer, tips. Allt är välkommet!

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

fsns bild

X är designat för nätverkstransparens, så den funktionen finns redan inbyggd i systemet från grunden, så att säga. Din server agerar Xserver och maskinen du sitter framför agerar Xklient och ritar saker på din bildskärm.

Sen kanske det inte är helt självklart att konfigurera. Jag hittade en howto här: http://tldp.org/HOWTO/XDMCP-HOWTO/ Googla på XDMCP så får du mer information.

Sedan kommer du inte att få full funktionalitet jämfört med att ha ett "lokalt" grafikkort. Jag är exempelvis inte säker på att hårdvaruaccelererad OpenGL fungerar.

LAltinells bild

 Jo så långt är jag med ang. nätverkstransparansen. Men sedan vilken X-klient man bör använda är ju en annan sak. Är det XDMCP man bör använda? Jag tänker på ljud och sånt också! Jag vill helt enkelt ha en "komplett" X-server om du förstår vad jag menar? Jag vet att jag för några år sedan satte upp en headless spotify-dator som styrdes över VNC, men kommer inte ihåg speciellt mycket från den upplevelsen. VNC känns inte så stabilt, eller?

 

Jag använder extremt sällan grafiskt krävande program. Blir mest terminalen, Chrome och Spotify. Lite Inkscape och The Gimp. Någon gång i månaden blir det en runda Quake 3 och givetvis en del film. Jag vet inte vilka utav dessa som använder sig av hårdvaruacceleration, men eftersom det är högst en handfull program går det ju faktiskt att köra de programmen lokalt.

fsns bild

X jobbar bara med bild. För ljud måste du använda en nätverksljudserver, exempelvis PulseAudio. Om PulseAudio kan jag inget, men det måste också sättas upp.

X är ett komplicerat system, och jag vet inte om jag kan snabbt förmedla här hur det fungerar, men jag gör ett försök:

På den maskin du sitter framför, som grafikkortet och bildskärmen är kopplad till, så startar du en Xserver. Den har som ansvar att rita upp bilden du ser framför dig, och även ansvar för att ta emot signaler när du flyttar på musen och skriver på tangentbordet.

På den maskinen du har i garderoben, din Proliant, startar du en DisplayManager. Det finns idag (minst) tre huvudspår där, XDM från X, KDM från KDE och GDM från Gnome. Dom har hand om användarautenticering och att starta upp en användarsession. Kort sagt, det är det programmet som har ansvar för att rita upp inloggningsrutan (eller, om man skall vara petig, det har ansvar för att be Xservern göra det fysiska ritandet av inloggningsrutan).

När Xservern och XDM/KDM/GDM körs på samma maskin så kan man få dem att prata med varandra direkt. När dom körs på olika maskiner så måste Xservern hitta DisplayManagern nånstans, och det gör den med protokollet XDMCP. När Xservern startas upp, och den är konfigurerad för det, så gör den ett XDMCP-anrop, antingen riktat direkt mot en DisplayManager, eller så skickar den ett broadcast för att försöka hitta den, och då skulle den kunna hitta flera och då får man välja vilken man vill koppla upp sig mot. Gissningsvis så skulle du konfigurera din Xserver att gå direkt mot din DisplayManager.

Nu har Xservern och DisplayManagern hittat varandra och du får upp en inloggningsruta, som du är van vid, och du kan logga in. Alla program som körs på din serverdator som vill rita något på din bildskärm, kopplar upp sig mot din Xserver, och kallas därför Xklienter. Så, Spotify är en Xklient, Chrome är en Xklient, xterm är en Xklient osv. (En vanlig kritik mot X är att man uppfattar det som att man vänt på begreppet klient och server, men jag anser att när man ser hur systemet fungerar så är X's terminologi helt rätt.)

Chrome, Spotify och terminalen är inga problem, Inkscape och The Gimp bör inte heller vara några konstigheter. Men, fräcka komposita effekter, roterande skrivbordskub, genomskinliga fönster, skuggning etc. kräver OpenGL-stöd och fungerar därmed troligen inte. Inte heller Quake. Film är tveksamt, det använder hårdvarudekomprimering och/eller hårdvaruskalning. Det kan fungera, men då gör den allt det där i mjukvara, och det kommer dra mycket mer CPU både på klient och på server.

VNC är nog så stabilt, och kanske har en bättre helhetslösning med bild/ljud. Arkitekturen ser annorlunda ut, där agerar VNCservern som en lokal Xserver på den fysiska servern (är du med?), ungefär som en proxy, som de Xklienter, Spotify och Chrome, som du kör på din server kopplar upp sig mot. Och din vncklient kör du lokalt på din maskin (som, om du kör Linux, i sig är en Xklient mot din lokala Xserver....) och kopplar upp sig mot VNCservern för att få bildinformationen. Kristallklart va...? Jag tror att den har ännu sämre stöd för applikationer som kräver accelererad grafik.

Hmm... Gick det att förstå?

LAltinells bild

 Okej, nu greppar jag bättre! Tog för givet att Prolianten körde X-servern och att man anslöt från en annan dator med en X-klient.

 

Hur är det med XDMCP? Jag har läst på lite och det verkar vara ett gammalt protokoll utan stöd för kryptering, är det "säkert" att köra det? Jag menar, hur enkelt är det att sniffa den trafiken? Bör man köra det genom en ssh-tunnel? Hur skulle det påverka prestandan? Hur gör Thinlink?

 

Jag kör idag med SLIM en väldigt lightweight DisplayManager som tyvärr inte har stöd för XDMCP. Har tidigare kört med GDM (och KDM under kde distar). Blir nog till att peta in GDM igen då om det inte finns någon fördel med att köra XDM? 

 

Så kortfattat menar du att alla grafiska program är X-klienter? Inklusive mitt WindowManager (OpenBox)? Compiz och annat jox används inte idag heller så det kommer inte att saknas. Jag kör idag ett väldigt rent OpenBox utan ikoner, panel och taskmanager. Jag har dock tillåtit mig köra en lätt conky, med klocka, uptime och mail! Wink Så rent grafiskt körs inte speciellt mycket.

 

Jag tänkte sätta upp en lösning för att kunna köra Quake 3, Spotify, XBMC och RDP lokalt. För att få OpenGL stöd till Q3 och XBMC. För att slippa "tunnla" till nästa "tunnel" för RDP (vilket i och för sig inte bör vara något problem, får tänka på den...), och underlätta nätverket för Spotify (men nu slog det mig att jag redan idag streamar HD-filmer över nätverket så är det verkligen nödvändigt? Hum, får tänka på den..)

 

Det kommer bli väldigt mycket trafik på nätverket, kan det vara värt att köra ett separat nätverk mellan maskinerna för att underlätta för routern? Om inte, räcker det med 100mbit nätverk, eller får jag uppgradera mitt nätverk till 1000mbit tro?

 

Så för att sammanfatta:

Dator 1:

Snabbstartad dist (ArchLinux/Debian eller liknande)

X-server (X11)

Ljudklient (klient och inte server?) (PulseAudio?)

Fixa en lösning för att montera ex. USB-minnen mot servern (förmodligen sshfs)

Fixa en lösning för att köra grafiskt krävande program lokalt (typ bash-script över SSH)

Server 1:

Min Linux dist (ArchLinux)

DisplayManager (GDM/XDM)

Ljudserver (PulseAudio?)

Plus all program, både grafiska och inte.

fsns bild

Okej, nu greppar jag bättre! Tog för givet att Prolianten körde X-servern och att man anslöt från en annan dator med en X-klient.

Jag förstår var den uppfattningen kommer ifrån, speciellt om man är van vid VNC. Smile

Hur är det med XDMCP? Jag har läst på lite och det verkar vara ett gammalt protokoll utan stöd för kryptering, är det "säkert" att köra det? Jag menar, hur enkelt är det att sniffa den trafiken? Bör man köra det genom en ssh-tunnel? Hur skulle det påverka prestandan?

XDMCP är ett protokoll i X-familjen, och används bara för att hitta DisplayManagern. Jämför med DHCP, det är inte heller krypterat. X-protokollet är inte krypterat heller, så keyevents (ex.vis när du skriver ditt lösenord) skickas i klartext i någon mening. Om du tycker att det är ett problem beror på hur paranoid du är. Är det ett problem, sätt upp en tunnel av något slag mellan maskinerna och styr trafiken den vägen. Jag kanske skulle kika på en OpenVPN-tunnel snarare än en SSHtunnel, eftersom SSH inte är avsett för den här typen av persistenta uppkopplingar, och det är trickigt att få SSH att fixa autmotatisk uppsättning av tunneln med ombinding om den går ner osv. Inte omöjligt men trickigt.

Eftersom det låter som om du har Prolianten och datorn nära, så hade inte jag brytt mig så mycket. Jag gissar att du har ett switchat, trådfullt nätverk, och då är du ganska safe.

Blir nog till att peta in GDM igen då om det inte finns någon fördel med att köra XDM?

XDM är ju lite retro, om man gillar sånt. :-)  Annars, nej.

Så kortfattat menar du att alla grafiska program är X-klienter? Inklusive mitt WindowManager (OpenBox)?

Exakt så, ja.

Det kommer bli väldigt mycket trafik på nätverket, kan det vara värt att köra ett separat nätverk mellan maskinerna för att underlätta för routern? Om inte, räcker det med 100mbit nätverk, eller får jag uppgradera mitt nätverk till 1000mbit tro?

I Forntiden(tm) körde vi Xterminaler på 10Mbit-nätverk. Det funkade helt OK. Jag har kört min Amiga som Xterminal över ett 14400 bauds-modem, men det tog lite tid. Jag skulle säga att det är jämförbart med RDP. Nu kör vi applikationer med lite högre krav, men jag tror fortfarande att det skall gå ganska bra.

Jag skulle säga pröva, och uppgradera vid behov. Du vet, "Premature optimization is the root of all evil...". Eftersom nätverkstransparensen är inbyggd i X kan du ju pröva redan idag. Logga in på Prolianten med SSH med X-forwarding påslaget och starta en lagom grafikintensiv applikation och se hur det funkar.

Pulseaudio kan jag inte så bra, så jag vet inte hur det funkar. Men principen är densamma som för X, har jag för mig, dvs. PulseAudio-server på din lokala maskin, och PulseAudioklienter på Prolianten som kopplar upp sig mot servern. Tror jag. Men det är inte lika tydligt eftersom applikationerna går via en annan typ av interface, dvs. ett audiodevice, som döljer klient/server-lagret.

LAltinells bild

 XDMCP är ett protokoll i X-familjen, och används bara för att hitta DisplayManagern. Jämför med DHCP, det är inte heller krypterat. X-protokollet är inte krypterat heller, så keyevents (ex.vis när du skriver ditt lösenord) skickas i klartext i någon mening. Om du tycker att det är ett problem beror på hur paranoid du är. Är det ett problem, sätt upp en tunnel av något slag mellan maskinerna och styr trafiken den vägen. Jag kanske skulle kika på en OpenVPN-tunnel snarare än en SSHtunnel, eftersom SSH inte är avsett för den här typen av persistenta uppkopplingar, och det är trickigt att få SSH att fixa autmotatisk uppsättning av tunneln med ombinding om den går ner osv. Inte omöjligt men trickigt.

Jag är egentligen inte speciellt paranoid men det känns som att det är värt att tänka tanken innan. Wink

Jag slänger upp en OpenVPN tunnel som ett senare projekt för att kunna komma åt den utifrån, om behovet finns. Det är inte mycket man inte klarar med SSH Smile


Eftersom det låter som om du har Prolianten och datorn nära, så hade inte jag brytt mig så mycket. Jag gissar att du har ett switchat, trådfullt nätverk, och då är du ganska safe.

Tja, sådär 60-70m i från. Men när jag drog TP passade jag på att gräva ner en extra lina, funderar bara om det är värt det extra jobbet. :/



Jag skulle säga pröva, och uppgradera vid behov. Du vet, "Premature optimization is the root of all evil...". Eftersom nätverkstransparensen är inbyggd i X kan du ju pröva redan idag. Logga in på Prolianten med SSH med X-forwarding påslaget och starta en lagom grafikintensiv applikation och se hur det funkar.

Jag försöker starta vlc (och xterm) via SSH med X forwarding, men den klagar bara på att variabeln $DISPLAY inte är satt. Hur sätter jag egentligen den variabeln när den ska gå till en annan dator? Jag testade med 'export DISPLAY=10.10.10.100:12.0' men det fungerade inte... Detta är en nyinstallation utav ArchLinux. När jag kör lokalt till samma dator (min nuvarande) fungerar det fint. Vad behöver jag på Prolianten eg.?

 

Pulseaudio kan jag inte så bra, så jag vet inte hur det funkar. Men principen är densamma som för X, har jag för mig, dvs. PulseAudio-server på din lokala maskin, och PulseAudioklienter på Prolianten som kopplar upp sig mot servern. Tror jag. Men det är inte lika tydligt eftersom applikationerna går via en annan typ av interface, dvs. ett audiodevice, som döljer klient/server-lagret.

Jag väntar med ljud, det känns viktigare att få bild först!

 

Hur ansluter jag till Prolianten egentligen?

 

fsns bild

Jag försöker starta vlc (och xterm) via SSH med X forwarding, men den klagar bara på att variabeln $DISPLAY inte är satt. Hur sätter jag egentligen den variabeln när den ska gå till en annan dator? Jag testade med 'export DISPLAY=10.10.10.100:12.0' men det fungerade inte... Detta är en nyinstallation utav ArchLinux. När jag kör lokalt till samma dator (min nuvarande) fungerar det fint. Vad behöver jag på Prolianten eg.?

Om du loggar in med SSH och vill tunnla X över SSH, så kan inte DISPLAYvariablen sättas till IPadressen där din Xserver körs, då smiter den förbi SSH-tunneln (eller snarare den går direkt mot Xservern). Om du sätter upp en explicit SSHtunnel, exempelvis på port 7112 på Prolianten mot Xservern på Arch'en, så måste Xklienterna koppla sig mot port 7112 på Prolianten, så att dom går via SSHtunneln. Så då skulle display-variabeln vara satt till "127.0.0.1:12.0". Troligen kommer det inte funka ändå, eftersom X har ett cookie-baserat säkerhetssystem, som bara är jobbigt. Du kan slå av det, men det rekommenderar jag inte. Alls. Men "xauth -" på Arch'en, där du kör Xservern, gör att alla kan koppla upp sig mot Xservern utan problem. Kan vara bra i testsyfte. "xauth +" för att slå på säkerheten igen.

Men, SSH har ett mycket bättre inbyggt stöd för X än så, X-forwardering som du skriver. Det verkar inte som om du fått det att funka riktigt. Om du använder -X eller -Y -flaggorna, så borde SSH fixa allt X-igt åt dig, sätter upp tunneln, sätter DISPLAYvariabeln, och fixar X-kakan åt dig. Pröva "ssh -X <user>@<proliant> xterm" eller "ssh -Y <user>@<proliant> xterm", så borde du få upp en xterm utan vidare problem. Jag förutsätter här att du har ssh-agent igång, eller att du satt upp ssh-keyauth, så du slipper ange lösenord. Eller så får du ange ditt lösenord på Prolianten.

Skillnaden mellan -X och -Y har att göra med hur den hanterar säkerhetsuppsättningen. Nån av dem skall funka.

Jag tror att vissa Xservrar kan konfigureras att inte lyssna på tcp över huvud taget. Vissa Linux-distar gör det för att "höja säkerheten". Isåfall får man försöka hitta hur ma slår på det.

Tja, sådär 60-70m i från. Men när jag drog TP passade jag på att gräva ner en extra lina

Coolt! Jag vill också ha en egen datorhall off-site! Smile

fredentofts bild

 Det gäller också att sshd på Prolianten är konfigurerad att tillåta X-forwarding.

-
För övrigt anser jag att trådindenteringen måste lagas
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

LAltinells bild

Men "xauth -" på Arch'en, där du kör Xservern, gör att alla kan koppla upp sig mot Xservern utan problem. Kan vara bra i testsyfte. "xauth +" för att slå på säkerheten igen.

Menar du inte 'xhost +' för att slå på och 'xhost -' för att slå av?

 

Men, SSH har ett mycket bättre inbyggt stöd för X än så, X-forwardering som du skriver. Det verkar inte som om du fått det att funka riktigt. Om du använder -X eller -Y -flaggorna, så borde SSH fixa allt X-igt åt dig, sätter upp tunneln, sätter DISPLAYvariabeln, och fixar X-kakan åt dig. Pröva "ssh -X <user>@<proliant> xterm" eller "ssh -Y <user>@<proliant> xterm", så borde du få upp en xterm utan vidare problem. Jag förutsätter här att du har ssh-agent igång, eller att du satt upp ssh-keyauth, så du slipper ange lösenord. Eller så får du ange ditt lösenord på Prolianten.

Jag kände inte till -Y flaggan, den gjorde biffen. Dock vill den inte med -X flaggan :/ VLC startar utan problem nu. Men hur startar jag mitt WM egentligen? Dvs, utan ssh? Jag skulle egentligen vilja starta en egen Xserver på tty8 som enbart tar emot anslutningarna från servern. På så sätt skulle jag kunna ha mitt lokala på tty7 och min remote session på tty8