Ska man läsa flera av kurserna i detta block och har två eller flera datorer tillgängliga hemma så kan man konfigurera ett eget TCP/IP-baserat nätverk med en Linux-dator som server och Windows2000 som klienter enligt följande (specifika) förslag: här. Det är väldigt kul och man får lite övning i administativa saker för nätverks-miljöer :-) Notera att man troligtvis måste ändra en del saker, exempelvis så har man kanske inte tillgång till callback.

Nätverk hemma

Observera! Denna sida beskriver den konfiguration som jag använde när jag kopplade upp mig till Internet med ett vanligt modem. Nu kör jag via Telia ADSL och har konfigurerat om systemet (två nätverkskort i servern mm) och nyare distributioner har säkert enklare hantering än den jag beskrivit nedan. Jag ska uppgradera till samma distribution som används på DSV (Debian) och skriva om detta dokument så fort jag hinner.


Följande är en beskrivning av den konfiguration som jag (Pierre) använder hemma för att kunna laborera med Internetprogrammering. Systemet består av:

Det är en stor fördel att ha tillgång till både operativen Unix/Linux och Windows2000. Nätverket kör enbart TCP/IP och datorerna har följande IP-adresser och namn:

Och så vidare med de andra klienterna. Anledningen till att jag använder just dessa IP-nummer är att det finns vissa nummer som är reserverade för bruk i interna nät och som aldrig används på Internet:

Eftersom jag har färre än 253 datorer i mitt nätverk :-) så använder jag klass C-nätverket. Jag beskriver bara klient 1 i detta dokument eftersom det är exakt samma procedur för de övriga klienterna. 

Bra böcker är:

En bra tidning för administration och programmering är:

En bra tidning om man ska bygga datorn själv (vilket är mycket lätt och kul) är:

Kom gärna med förslag på förbättringar via e-post hit.

Server: Linux RedHat 7.2

Linux-servern kör på en Fujitsu med 166 MHz Pentium I med 48 MByte internminne, 2 GByte hårddisk och 17'' skärm och används till:

På servern utvecklar jag program, i huvudsak, för kursen Internetprogrammering II.

Nätverk och nätverkskort

Linux-servern har nätverkskortet: 3Com EtherLink III 3C5098-TPO. För att konfigurera operativet för detta, kör programmet: linuxconf& och ställ in enligt följande:

Config:
    Networking:
        Client tasks:
            Basic host information:
                Host name: linux.wijkman.se
            Adaptor 1
                Enabled: ja
                Config mode: Manual
                Primary name + domain: linux.wijkman.se
                Aliases (opt): linux
                IP-adress: 192.168.1.1
                Netmask (opt): 255.255.255.0
                Net device: eth0
                Kernel module: 3c509

Notera att "Kernel module" måste sättas olika för olika nätverkskort och om man inte vet vilket nätverkskort man har kan man ofta läsa detta direkt på nätverkskortet. När detta är gjort så ska en (nätverkskonfigurerad) klient kunna pinga Linux-servern med dess IP-nummer:

ping 192.168.1.1

Linux-servern ska också kunna pinga andra (nätverkskonfigurerade) klient-datorer i nätverket via deras IP-nummer, exempelvis:

ping 192.168.1.2

Notera att vi ännu inte kan pinga några datorer utanför nätverket på Internet. För att man ska kunna använda vanliga namn måste man associera datorernas IP-nummer med unika namn, så kallad namngivning.

Namngivning

Eftersom nätverket är litet körs ingen lokal DNS-server (namn-server) utan namngivningen finns beskrivet direkt i två filer:

/etc/hostname

linux.wijkman.se

/etc/hosts

127.0.0.1 localhost.localdomain localhost
192.168.1.1 linux.wijkman.se linux
192.168.1.2 pierre.wijkman.se pierre

Nu kan man använda vanliga namn för att från Linux-servern exempelvis pinga olika klient-datorer i nätverket:

ping pierre.wijkman.se

eller bara:

ping pierre

Fil- och skrivar-server

SAMBA ingår i RedHat's distribution. SAMBA används för att Win32-klienter ska kunna köra fil- och skrivar-server mot Linux-servern. Programmet är konfigurerat enligt följande:

Automatisk uppkoppling och nerkoppling till Internet

För att kunna använda Internet från Linux-servern och alla klienter så måste vi konfigurera operativet enligt följande.

Modem

För att konfigurera operativet för modemet, kör programmet: linuxconf& och ställ in enligt följande:

Config:
    Miscellaneous services:
        Modem:
            /dev/ttyS0 (COM under DOS): ja

Även /dev/cua0 fungerar.

Namnserver

För att datorn ska kunna veta vilka IP-adresserna som motsvarar olika namn för datorer på Internet måste vi ange IP-adressen till en namn-server. Kör programmet: linuxconf& och ställ in enligt följande:

Config:
    Networking:
        Client tasks:
            Name server specification:
                DNS usage: Ja
                Default domain: dsv.su.se
                Nameserver 1: 130.237.161.5

/etc/resolv.conf

domain dsv.su.se
nameserver 130.237.161.5

Kommunikation med modemet

Linux-servern ska om någon klient begär en koppling till en dator på Internet automatiskt (via modem) koppla upp till DSV's NT-RAS server. Om en klient inte använt Internet på en viss tid så ska Linux-servern automatiskt koppla ner anslutningen till Internet. Denna NT-RAS server använder Microsofts MS-Chap för autentifiering och möjliggör callback. Programmet ppp sköter modemets kommunikation och version 2.3.11 och senare har inbyggt stöd för MS-Chap men inte för callback. För att få callback att fungera måste man:

Detta görs enligt följande:

diff -r -c ppp-2.3.orig/pppd/Makefile.linux ppp-2.3/pppd/Makefile.linux
*** ppp-2.3.orig/pppd/Makefile.linux Tue Oct 8 15:42:41 1996
--- ppp-2.3/pppd/Makefile.linux Sat Apr 12 00:02:28 1997

***************
*** 14,20 ****
ipxcp.h cbcp.h
MANPAGES = pppd.8
PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \
! auth.o options.o demand.o sys-linux.o ipxcp.o
all: pppd

--- 14,20 ----
ipxcp.h cbcp.h
MANPAGES = pppd.8
PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap.o md5.o ccp.o \
! auth.o options.o demand.o sys-linux.o ipxcp.o cbcp.o
all: pppd

***************
*** 36,42 ****
#INCLUDE_DIRS= -I/usr/include -I..
INCLUDE_DIRS=
! COMPILE_FLAGS= -D_linux_=1 -DHAVE_PATHS_H -DIPX_CHANGE
CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS)

--- 36,42 ----
#INCLUDE_DIRS= -I/usr/include -I..
INCLUDE_DIRS=
! COMPILE_FLAGS= -D_linux_=1 -DHAVE_PATHS_H -DIPX_CHANGE -DCBCP_SUPPORT
CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS)

Nu är pppd klar och vi måste skriva de skript som ska köras mot modemet:

/root/dsv_dial:

#!/bin/bash
while true
do
/usr/sbin/pppd /dev/modem 38400 file "/etc/ppp/dsv_options_1" callback **********
/usr/sbin/pppd /dev/modem 38400 file "/etc/ppp/dsv_options_2"
done

Här ska ********** bytas ut mot det telefonnummer som ska användas för callback.

Detta är huvudskriptet som startas med: dsv_dial&. Vill man att detta skript ska anropas automatiskt (utan att man behöver logga in och skriva kommandot manuellt) så ska man lägga följande rad:

dsv_dial&

sist i filen:

/etc/rc.local

dsv_dial anropar följande filer:

/etc/ppp/dsv_options_1

demand
persist
connect '/usr/sbin/chat -v -f /etc/ppp/dsv_chat_1'
crtscts
bsdcomp 15
lock
debug
noipdefault
defaultroute
name pierre
remotename "dsv_ras"
-detach
receive-all

/etc/ppp/dsv_options_2

idle 1200
connect '/usr/sbin/chat -v -f /etc/ppp/dsv_chat_2'
crtscts
bsdcomp 15
lock
debug
lcp-echo-interval 20
lcp-echo-failure 2
noipdefault
defaultroute
name "pierre"
remotename "dsv_ras"
-detach
receive-all

Dessa anropar i sin tur filerna:

/etc/ppp/dsv_chat_1

TIMEOUT 60
ABORT "BUSY"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO CARRIER"
"" +++ATZ
OK ATM0
OK ATE1Q0&C1&S0DT**********
CONNECT ""

Här ska ********** bytas ut mot det telefonnummer som ska användas för uppringning.

/etc/ppp/dsv_chat_2

TIMEOUT 120
ABORT "NO CARRIER"
ABORT "BUSY"
ABORT "NO DIALTONE"
ABORT "ERROR"
"" +++ATZ
OK ATM0
OK ATE1Q0&C1&S0
RING ATA
CONNECT ""

Eftersom NT-servern använder MS-Chap så måste vi även ha filen:

/etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client server secret IP addresses
pierre dsv_ras **********
dsv_ras pierre **********

Här ska ********** bytas mot det egna passwordet. Nu kan man koppla upp Linux-servern till Internet men om någon klient begär en uppkoppling mot en maskin på Internet så fungerar inte detta ännu.

IP-forwarding / IP-masquerading

För att klienterna ska kunna dela på den koppling till Internet som Linux-servern upprättar automatiskt använder man programmet ipchains. Detta ingår i Linux-distrubitionen och man kör detta program med:

/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.1.0/24 -j MASQ

Den första raden nekar åtkomst för nätverket för alla och den andra anger att nätverket 192.168.1.0 får passerad i masquerad form. Man kan köra detta automatiskt vid uppstart av operativet genom att lägga dessa rader i filen:

/etc/rc.d/init.d/rc.local

eller i:

/etc/rc.d/rc.local

Nu fungerar Internet även från klienterna.

HTTP-Servern Apache

Ingår i RedHat's distribution. Välj server vid installationen.

Databas-servern MySQL

Ingår i RedHat's distribution. Välj server vid installationen.

Perl

Ingår i RedHat's distribution.

Klient: Windows2000

Klienterna som är:

På klienterna utvecklar jag, i huvudsak, program för kurserna Internetprogrammering 0, I, III, Mediateknik för Internet och Internetsäkerhet.

Nätverkskort

Identifieras automatiskt.

Namngivning

Skapa en fil med namnet: hosts och innehållet:

127.0.0.1 localhost
192.168.1.1 linux.wijkman.se
192.168.1.2 pierre.wijkman.se

och lägg den här:

C:\WINNT\system32\drivers\etc

Det ska nu gå att pinga Linux-servern och andra klienter i nätverket med både IP-nummer och namn. För att kunna prata med Samba på Linux-serven måste man även göra följande:

Gå till: Start/Settings/Network and Dial-up Connections och klicka på Network Identification:

Properties
    Computer name: pierre

More ...
    Primary DNS suffix of this computer: wijkman.se
    Change primary DNS suffix when domain membership changes: Ja

Workgroup: Ja
    WIJKMAN

Starta sedan om datorn.

Nätverket

Gå till: Start/Settings/Network and Dial-up Connections/Make New Connection/Local Area Connection och konfigurera enligt:

General:
    Client for Microsoft Networks
    Internet Protocol (TCP/IP)

Internet Protocol (TCP/IP) - Properties:
    Use the following IP address
        IP address: 192.168.1.2
        Subnet mask: 255.255.255.0
        Default gateway: 192.168.1.1

Use the following DNS server addresses:
    Preferred DNS server: 130.237.161.5
    Alternate DNS server:

Internet Protocol (TCP/IP) - Properties/Advanced/WINS:
    Enable NetBIOS over TCP/IP (detta är enbart för skrivar-servern)

Nu ska skrivaren synas och man installerar den på vanligt sätt.

Skrivare

Jag har en Minolta PagePro 6 PCL laserskrivar och den är ansluten på Linux-servern och nås med:

Information:
    Skriv till följande port: \\LINUX\lp
    Skriv ut med följande drivrutin: Minolta PagePro 6 PCL

På DSV ansluter jag till HP LaserJet 4M Plus i rum 16101 med:

Information:
    Skriv till följande port: \\SCROOGE\Rum16101
    Skriv ut med följande drivrutin: HP LaserJet 4M Plus

HTTP-servern IIS5

Ingår i Windows2000.

Java 1.3

Hämtas på: http://java.sun.com/

Telnet

Ingår i Windows2000. Kör kommandot telnet tellus.dsv.su.se (eller telnet luna.dsv.su.se) från en DOS-promt.

FTP

Ingår i Windows2000. Kör kommandot ftp ftp.dsv.su.se från en DOS-promt. Jag använder dock (den mer lätthanterliga) FTP-Voyager och för att detta ska fungera via Linux-servern så måste jag ställa in detta program enligt följande:

FTP Site Profile
    Advanced
        Connection
            PASV Mode - ska var ett klart X (inte med grå bakgrund)

För att föra över CGI-program är det viktigt att använda ASCII som överförings mode (annars får man oönskade radsluts-tecken), för bilder och kompilerade filer ska man använda binary mode.

X-Windows på Windows2000-klienten

Om man vill köra Linux på Windows2000-klienten kan man givetvis köra telnet mot Linux-servern från Windows2000-klienten. Vill man köra med ett grafiskt användargränssnitt så kan man man ladda ner:

X-Win32 (som kostar pengar men kan testas gratis).

Detta är mycket smidigt eftersom man då slipper gå till Linux-servern när man ska testa saker på den. Man kan till och med ta bort skärm, tangentbord, mus med mera helt från Linux-servern eftersom allt då kan köras från Windows2000-klienten. Det finns även andra helt fria X-Windows-program som man kan använda.

Man måste konfigurera både Linux-servern och Windows2000-klienten för att det ska fungera:

X-Win32 implementerar en X-Server på Windows2000-klienten som Linux-servern pratar med via ett visst protokoll (ingen grafik sänds mellan maskinerna). Allt som man gör i det grafiska gränssnittet hos Windows2000-klienten körs således Linux-servern, det går så fort att man tror att man sitter direkt vid Linux-serven, enormt bra!