Servers

Wat is een Server?

Een server is een computer dat een programma draait zodat je er via (bijvoorbeeld) internet verbinding mee kan maken. Voorbeelden van servers zijn webservers, game servers, ftp-servers, en zo voort. Het 'tegenovergestelde' van een server is een client; dit is de computer die het initiatief neemt om de verbinding te maken (zoals de webbrowser waarmee je nu deze pagina zit te lezen). Een server staat normaal dus ook continue te luisteren of er iemand is die verbinding wil hebben.

Ook peer-to-peer netwerken, als bijvoorbeeld limewire of het nieuwere FrostWire, gebruiken dit principe; zulke programma's bevatten zowel een cliënt (waarmee je zelf bij anderen files kunt ophalen) als een server (waarmee de anderen files bij jou kunnen ophalen).

Hoe kan je zelf een web-server (of andere server) draaien op een lokaal netwerk zodat deze ook op internet zichtbaar is?  Informatie op je eigen computer op laten halen over het internet met FTP? Host voor spelletjes zijn? Een peer-to-peer netwerk opzetten? Voor alles waarbij anderen direct op je computer of netwerk moeten kunnen moet je computer als 'server' kunnen werken. Voorbeelden:

Web server (HTTP server)

Normaal zien gebruikers alleen je webpages op de server van je provider (de pagina's die je nu ziet staan bijvoorbeeld op de server van budgetwebhosting), en kunnen ze niet direkt bij je eigen computer, en dat is meestal maar goed ook. Soms wil je dat mensen direkt op de web pages op je eigen PC kunnen kijken (kan natuurlijk alleen als'ie aan staat), zodat je dingen kan die de server van je provider niet support (zoals PHP of Perl scripts bij de HCC).

FTP Server

Een ander voor beeld van een server is een FTP server: hiermee kan een ander (op een veilige manier, mits goed ingesteld) files up- en down-loaden direkt naar je computer, of kan je het bijvoorbeeld zelf vanaf je werk. Dit kan door een eigen FTP-server (File Transfer Protocol) te draaien. Ik gebruik zelf het gratis open source programma FileZilla. Een ander gratis (en wat simpeler) programma is CesarFTP.

Let op: je hebt geen server nodig om files van je eigen computer naar een andere computer te sturen. Hiervoor heb je alleen een FTP (client) programma nodig, zoals het gratis SmartFTP of FileZilla.

Let op: al is het downloaden van MP3's nog toegestaan; het aan anderen beschikbaar maken van materiaal waar copyright op zit is strafbaar! Dus laat anderen geen copyrighted materiaal vanaf jouw computer uploaden!

Game servers (Hosten van spelletjes) en peer-to-peer netwerken

Ook als je spelletjes wilt hosten of files via een peer-to-peer netwerk als limewire aan een ander ter beschikking wilt stellen draai je in feite een server op de PC, dus lees ook het volgende deel door.

Wat is het probleem van een server

Om een server te kunnen draaien op een lokaal netwerk (zodat deze vanaf het internet zichtbaar is) moet je er voor zorgen dat berichten en verzoeken van buitenaf door je router naar je juiste lokale computer worden doorgestuurd (zie de uitleg over het instellen van routers). Hiervoor moet de router weten op welke poort deze verzoeken binnenkomen, en naar welke lokale computer hij vervolgens deze verzoeken moet doorsturen.

Voor FTP moet je bijvoorbeeld poort 21 doorlaten (van buiten naar binnen), en moet je modem/router weten naar welke computer dit request moet (als je meerdere computers hebt). Je kan dit doen door alle binnenkomende verzoeken naar een computer door te sturen (door een default server adres in te stellen) of door dit per poort in te stellen (veiliger). Hoe: zie router page. Let op: er is onderscheid tussen active FTP en passive FTP, met verschillende gevolgen voor de instelingen; kijk hier voor uitleg en details over de gebruikte poorten: meer dan alleen poort 21; voor actieve FTP ook nog poort 20, en voor passieve FTP (gebruikt door veel browsers) nog meer...

Voor web servers en spelletjes hosting geld hetzelfde, maar met andere poortnummers: 80 voor web (http), en voor spelletjes moet je in de handleiding van het spel kijken.

Daarnaast moet je ook zorgen dat een eventuele fire wall deze binnenkomende berichten op de poortnummers gebruikt door de (spel-)server wel doorlaat.

Instellen van de router voor een server

Zoals gezegd: Het probleem is het dat er nieuwe verzoeken van buitenaf komen naar je lokale netwerk (of computer) toe. Dit kan alleen als je een (of meer) van je lokale computers als 'server' hebt ingesteld (hackers even buiten beschouwing gelaten). Voor een router is het dan van belang te weten waar die binnenkomende pakketten naar toe moeten: welke computer de server is voor dat type pakketten. Denk hierbij bijvoorbeeld aan een lokale file (FTP) server, luisterend naar externe verzoeken op poort 21. Voor dat doel moet de server computer een bij de router bekend IP adres hebben (zie mijn: Instellen van een vast IP adres). Daarna zijn er twee mogelijkheden:

  • Een computer instellen als vaste server voor alle binnenkomende pakketten (default server of DMZ): makkelijk maar onveilig (want ook ongevraagde verzoeken worden doorgestuurd)
  • Per type pakket (poort) instellen naar welke computer het verzoek toe moet (network address translation, NAT): iets meer werk.

Instellen 'Default Server'

Oftewel het instellen van in LinkSys terminology de DMZ: demilitarised zone (vertrouwd gebied). Let op: alle binnenkomende pakketten worden in deze configuratie naar de ingestelde computer doorgestuurd, ook die van hackers etc (dus bekijk ook onderstaande veiliger mogelijkheid!). Draai dus een fire wall op je server-computer!!! Overigens: hoewel dat niet algemeen bekend is heeft het SpeedTouch 510 modem ook uitgebreide firewall mogelijkheden, al gebruik ik die maar gedeeltelijk; zie mijn firewall pagina.

Instellen voor SpeedTouch: Ga met je web browser naar je modem (voor SpeedTouch in internet explorer: ga naar IP adres '10.0.0.138', zonder 'www' of 'http://' er voor, voor andere merken kan dit een ander adres zijn). Je moet hierbij vermoedelijk een naam en wachtwoord invullen. Je komt dan in de 'System Info' pagina terecht. Ga daar in de linkerkolom naar 'Advanced', en kies 'NAT' (Network Address Translation). Hier vind je een vakje 'Default Server'. Hier kan je het adres van je hoofdcomputer (bij mij dus 10.0.0.201) invullen. Druk op 'Apply' en vervolgens op 'Save All'.

Bij Linksys gaat het soortgelijk, maar ga hier met je browser zoals hierboven beschreven naar je router (maar, in dit geval vermoedelijk op 192.168.1.1), menu item 'Applications & Gaming', sub-item 'DMZ', enable aanklikken, IP adres van je default server PC instellen, en opslaan (save settings).

Veiliger: Individuele poorten doorlaten in plaats van alles (of als uitzondering)

Alternatief zou je in plaats van de 'Default Server' of 'DMZ' in te vullen, alleen die poorten kunnen doorgeven waarop je verbinding toe wilt staan, door de NAPT (Network Address/Port Translation)tabel in te vullen (kijk bij Details voor veel gebruikte poorten). Dit is bijvoorbeeld nuttig voor het draaien van je eigen FTP server. Ook kan je dit gebruiken om sommige servers op een andere dan de default server te laten draaien. In 5 stappen (op de SpeedTouch):

  1. Log met je browser in op je modem (adres 10.0.0.138), je moet hier mogelijk je username en password opgeven.
  2. Kies in de linker kolom 'Advanced', en uit het nu uitgeklapte menu kies 'NAT'
  3. Screen capture van NAT instelschermMaak een nieuwe entry in de vertaaltabel aan ('New'), met als waardes: protocol: tcp, 'Inside ip': 10.0.0.201, 'Inside port': 21 (Ip adres en poort aan de PC kant), 'Outside address: 0.0.0.0 (buitenwereld IP is door provider geleverd; 0.0.0.0 neemt deze waarde over), 'Outside port': 21.
  4. Op 'Apply' drukken, je zal nu de nieuwe waarde in de tabel zien (denk ik, niet gecheckt) met als type 'Temp'. Dit staat niet voor 'tijdelijk' maar voor 'template', geeft aan dat het meerdere adressen aan kan.
  5. Druk uiteindelijk op 'Save All' om het definitief op te slaan in het modem (eventueel na het testen).

Mocht je dit 'eng' vinden: misschien dan eerst de huidige configuratie opslaan? Dit gaat via 'Advanced' -> 'Setup' -> 'Backup', en de file ergens neerzetten waar je hem later terug kan vinden...

Waar is mijn server voor anderen te vinden?

Tja, nu heb je je server netjes ingesteld, maar hoe kunnen anderen die nu vinden? Normaal hebben servers netjes een domeinnaam (b.v. keesmoerman.nl). Via deze naam kunnen anderen dan het IP-adres van de server opvragen, en dan via dat IP adres contact leggen.

Maar, de meeste mensen hebben meestal geen domein naam voor de thuiscomputer; alleen maar een IP als toegewezen door de provider. En dat is vaak nog dynamisch ook; dat wil zeggen kan zonder melding wijzigen. Voor tijdelijk gebruik is dit goed te doen; geef naar anderen gewoon je IP adres door. Maar, mooier is:

Dynamische DNS service

Het bedrijf dynu.com kan je thuisnetwerk een echte domeinnaam geven, en dat up-to-date houden. Op die manier kunnen anderen op naam (in plaats van op IP adres) je computer aanspreken. En, die service is nog gratis ook! Andere providers hiervoor kan je vinden op providers voor Dynamic DNS. Mijn vorige DynDNS is gestopt met gratis services.

Wel moet DyNu op de hoogte gebracht worden van wijzigingen: dit gaat automatisch, via een programma'tje dat op je computer loopt en wijzigingen in de gaten houdt. Voor Linux gebruik ik ddclient, geïnstalleerd via het standaard Ubuntu Software Center (met installation wizzard). Zie ook mijn pagina voor de Raspberry.