Innehållsförteckning

6. Nätverksspecifik Information.

Följande delsektioner är specifika för vissa nätverkstekniker. Informationen i dessa sektioner gäller inte nödvändigtvis för någon annan nätverksteknik.

6.1 ARCNet

Enhetsnamn för ARCNet är `arc0e', `arc1e', `arc2e' osv eller `arc0s', `arc1s', `arc2s' osv. Det första kortet som hittas av kärnan tilldelas `arc0e' eller `arc0s' och resten tilldelas namn sekvensiellt i den ordning som de hittas. Bokstaven på slutet av namnet betecknar om man har valt Ethenet-inkapsling som paketformat eller RFC1051 som paketformat.

Kompileringsalternativ för Kärnan:

Network device support  --->
    [*] Network device support
    <*> ARCnet support
    [ ]   Enable arc0e (ARCnet "Ether-Encap" packet format)
    [ ]   Enable arc0s (ARCnet RFC1051 packet format)

När man väl har en kärna som stöder sitt Ethernetkort så är konfiguration av kortet lätt.

Man skulle kunna använda något som liknar:

# ifconfig arc0e 192.168.0.1 netmask 255.255.255.0 up
# route add -net 192.168.0.0 netmask 255.255.255.0 arc0e
Titta gärna i filerna /usr/src/linux/Documentation/networking/arcnet.txt och /usr/src/linux/Documentation/networking/arcnet-hardware.txt för mer information.

ARCNet-stöd utvecklades av Avery Pennarun, apenwarr@foxnet.net.

6.2 Appletalk (AF_APPLETALK)

Appletalk har inga särskilda enhetsnamn eftersom det använder existerande nätverksenheter.

Kompileringsalternativ för Kärnan:

Networking options  --->
    <*> Appletalk DDP
Appletalk-stöd gör det möjligt för Linuxburken att kommunicera med Apple-nätverk. Ett viktigt användningsområde för detta är möjligheten att kunna dela resurser, som till exempel skrivare och hårddiskar, mellan Linux- och Appledatorer. Man behöver ytterligare programvara, netatalk, för detta. Wesley Craig, netatalk@umich.edu, representerar en grupp som heter `Research Systems Unix Group' på University of Michigan och de har utvecklat netatalk-paketet som tillhandahåller programvara som implementerar protokollstacken för Appletalk och några andra användbara verktyg. Paketet netatalk finns antingen med i Linuxditributionen, eller så kan man ladda hem det via ftp från University of Michigan

För att kompilera och installera paketet gör man ungefär så här:

# cd /usr/src
# tar xvfz .../netatalk-1.4b2.tar.Z
- You may want to edit the `Makefile' at this point, specifically to change
  the DESTDIR variable which defines where the files will be installed later.
  The default of /usr/local/atalk is fairly safe.
# make
- as root:
# make install

Att konfigurera mjukvaran för Appletalk.

Det första man måste göra för att få det att fungera är att se till att de rätta raderna finns med i filen /etc/services. Raderna man behöver är:

rtmp    1/ddp   # Routing Table Maintenance Protocol
nbp     2/ddp   # Name Binding Protocol
echo    4/ddp   # AppleTalk Echo Protocol
zip     6/ddp   # Zone Information Protocol

Nästa steg är att skapa konfigurationsfiler för Appletalk i katalogen /usr/local/atalk/etc (eller var man nu installerade paketet).

Den första filen som behövs är /usr/local/atalk/etc/atalkd.conf. Till en början behöver denna fil endast en rad som anger namnet på den nätverksenhet som är kopplad nätverket där Applemaskinerna finns:

eth0

Daemonen för Appletalk kommer att lägga dit fler detaljer när den körs.

Att exportera ett Linuxfilsystem via Appletalk.

Man kan exportera filsystem från sin Linuxburk till nätverket så att Applemaskinerna på nätverket kan använda dem.

För att göra detta så behöver man konfigurera filen /usr/local/atalk/etc/AppleVolumes.system. Det finns ytterligare en konfigurationsfil som heter /usr/local/atalk/etc/AppleVolumes.default som har precis samma format och beskriver vilka filsystem som kan användas av användare som ansluter med gäst-rättigheter.

Alla detaljer om hur man konfigurerar dessa finns i manualbladet för afpd.

Ett enkelt exempel:

/tmp Scratch
/home/ftp/pub "Public Area"

Detta skulle exportera /tmp-filsystemet som en AppleShare-volym `Scratch' och /home/ftp/pub-katalogen som en AppleShare-volym `Public Area'. Volymnamnen är inte obligatoriska, daemonen väljer namn om man inte anger dem, men det skadar inte att ange dem ändå.

Att dela sin skrivare via Appletalk.

Man kan dela sin Linuxskrivare med sina Applemaskiner ganska enkelt. Man behöver köra programmet papd (Appletalk Printer Access Protocol Daemon). När man kör detta program så tar det emot förfrågningar från Applemaskinerna och spoolar utskriftsjobben till den lokala line-printer daemonen.

Man behöver ändra filen /usr/local/atalk/etc/papd.conf för att konfigurera daemonen. Syntaxen för denna fil är densamma som för den vanliga /etc/printcap filen. Namnet som man ger till definitionen registreras med Appletalks namnsättningsprotokoll, NBP.

En exempelkonfiguration kan se ut så här:

TricWriter:\
   :pr=lp:op=cg:

Vilken skulle skapa en printer som kallas för `TricWriter' som blir tillgänglig för Appletalknätverket och alla accepterade jobb skulle skrivas ut på Linuxskrivaren `lp' (som den definieras i filen /etc/printcap) genom att använda lpd. Uttrycket `op=cg' talar om att Linux-användaren `cg' är ansvarig för skrivaren.

Att starta programvaran för Appletalk.

Nu bör man var redo att testa denna enkla konfiguration. Det finns en fil rc.atalk som följer med paketet netatalk som borde fungera för de flesta, så allt man behöver göra är följande:

# /usr/local/atalk/etc/rc.atalk

och allt borde startas och fungera. Man skall inte se några felmeddelanden och programvaran kommer att skicka meddelanden till konsolen som indikerar varje steg som startas.

Att testa programvaran för Appletalk.

För att testa att mjukvaran fungerar som den skall, så går man till en av sina Applemaskiner, tar ner äpplemenyn, väljer Väljaren (Chooser), klickar på AppleShare, och Linuxburken bör synas.

Brister i programvaran för Appletalk.

Mer information.

En mycket mer detaljerad information om hur man konfigurerar Appletalk för Linux finns i Anders Brownworths Linux Netatalk-HOWTO sida på thehamptons.com.

6.3 ATM

Werner Almesberger <werner.almesberger@lrc.di.epfl.ch> håller i ett projekt för att skapa stöd för Asynchronous Transfer Mode i Linux. Uppdaterad information om statusen för projektet kan fås från lrcwww.epfl.ch.

6.4 AX25 (AF_AX25)

Enhetsnamn för AX.25 är `sl0', `sl1', osv i 2.0.* kärnor eller `ax0', `ax1', osv i 2.1.* kärnor.

Kompileringsalternativ för Kärnan:

Networking options  --->
    [*] Amateur Radio AX.25 Level 2
AX25, Netrom och Rose protokollen täcks av AX25-HOWTO. Dessa protokoll används av Amatörradio-operatörer i hela världen för paketradio experiment.

Det mesta arbetet för att implementera protokollen har utförts av Jonathon Naylor, jsn@cs.nott.ac.uk.

6.5 DECNet

Stöd för DECNet håller för tillfället på att utvecklas. Man kan räkna med att det dyker upp i sena 2.1.* kärnor.

6.6 EQL - trafikutjämnare för multipla linor.

Enhetsnamnet för EQL är `eql'. Med standardkärnan kan man endast ha en EQL-enhet per maskin. EQL tillhandahåller hjälpmedel för att använda multipla punkt till punkt förbindelser (tex PPP, SLIP eller PLIP) som en ensam logisk länk för att bära TCP/IP. Ofta är det billigare att använda flera linor med lägre hastighet än att ha en höghastighetslina installerad.

Kompileringsalternativ för Kärnan:

Network device support  --->
    [*] Network device support
    <*> EQL (serial line load balancing) support

För att stödja denna mekanism så måste maskinen på andra sidan av linorna också stödja EQL. Linux, Livingstone Portmasters och nyare dial-in servrar stöder kompatibla tjänster.

För att konfigurera EQL behöver man eql-verktygen som finns på: sunsite.unc.edu.

Konfigurationen är hyfsat okomplicerad. Man börjar med att konfigurera eql-gränssnittet. Eql-gränssnittet är precis som alla andra nätverksgränssnitt. Man kan konfigurera IP-adressen och MTU genom att använda ifconfig, så ungefär som:

ifconfig eql 192.168.10.1 mtu 1006

Sedan behöver man manuellt initiera var och en av linorna som man skall använda. Dessa kan vara en valfri kombination av punkt till punkt förbindelser. Hur man initierar de anslutningarna beror på vilken typ av länkar de är, se passande sektioner för mer information.

Till sist skall man associera den seriella länken med EQL-enheten, detta kallas för `enslaving' och görs med kommandot eql_enslave:

eql_enslave eql sl0 28800
eql_enslave eql ppp0 14400
Parametern `estimated speed' som man ger till eql_enslave gör ingen direkt nytta. Den används av EQL-drivrutinen för att avgöra hur stor del av datagrammen som den enheten skall få ta emot, så man kan finjustera balansen hos linorna genom att ändra på detta värde.

För att disassociera en lina från en EQL-enhet så använder man kommandot eql_emancipate:

eql_emancipate eql sl0

Man lägger till routing som om det vore en normal punkt till punkt förbindelse, förutom att router skall referera till eql enheten istället för de verkliga seriella enheterna:

route add default eql

EQL-drivrutinen utvecklades av Simon Janes, simon@ncm.com.

6.7 Ethernet

Enhetsnamn för Ethernet är `eth0', `eth1', `eth2' osv. Det första kortet som hittas får namnet `eth0' och resten tilldelas namn sekvensiellt i den ordning som de hittas.

För att ta reda på hur man får sitt Ethernet-kort att fungera i Linux så bör man titta i Ethernet-HOWTO.

När man väl har en kärna som stöder sitt Ethernet-kort så är det enkelt att konfigurera kortet.

Vanligtvis så används ungefär följande:

# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0

De flesta drivrutinerna för Ethernet utvecklades av Donald Becker, becker@CESDIS.gsfc.nasa.gov.

6.8 FDDI

Enhetsnamnen för FDDI är `fddi0', `fddi1', `fddi2' osv. Det första kortet som hittas får namnet `fddi0' och resten tilldelas namn sekvensiellt i den ordning som de hittas.

Larry Stefani, lstefani@ultranet.com, har utvecklat en drivrutin för EISA och PCI FDDI-kort från Digital Equipment Corporation.

Kompileringsalternativ för Kärnan:

Network device support  --->
    [*] FDDI driver support
    [*] Digital DEFEA and DEFPA adapter support
När man väl har en kärna som stöder sitt FDDI-kort, så konfigureras FDDI-kortet nästan likadant som Ethernet-kortet. Man behöver bara ange lämpliga FDDI-enhetsnamn till kommandona ifconfig och route.

6.9 Frame Relay

Enhetsnamnen för Frame Relay är `dlci00', `dlci01' osv för DLCI inkapslingsenheter och `sdla0', `sdla1' osv för FRAD(s).

Frame Relay är en ny teknik att bygga nätverk och är designad att passa datakommunikation vars trafik är av oregelbunden karaktär. Man ansluter till ett Frame Realay nätverk genom att använda en Frame Relay Access Device (FRAD). Linux Frame Relay stödjer IP över Frame Relay så som det beskrivs i RFC1490.

Kompileringsalternativ för Kärnan:

Network device support  --->
    <*> Frame relay DLCI support (EXPERIMENTAL)
    (24)   Max open DLCI
    (8)   Max DLCI per device
    <*>   SDLA (Sangoma S502/S508) support

Mike McLagan, mike.mclagan@linux.org, utvecklade stödet och konfigurationsverktygen för Frame Relay.

För närvarande är de FRADs som stöds följande: Sangoma Technologies S502A, S502E och S508.

För att konfigurera FRAD och DLCI enheter efter det att man har kompilerat om sin kärna så behöver man konfigurationsverktygen för Frame Relay. Dessa finns på: ftp.invlogic.com. Det är okomplicerat att kompilera och installera verktygen, men avsaknaden av en toppnivå-Makefile gör det till en manuell process:

# cd /usr/src
# tar xvfz .../frad-0.15.tgz
# cd frad-0.15
# for i in common dlci frad; make -C $i clean; make -C $i; done
# mkdir /etc/frad
# install -m 644 -o root -g root bin/*.sfm /etc/frad
# install -m 700 -o root -g root frad/fradcfg /sbin
# install -m 700 -o root -g root dlci/dlcicfg /sbin
Efter att man har installerat verktygen skall man skapa en fil som heter /etc/frad/router.conf. Man kan använda följande mall, som är en modifierad version av en exempelfil:
# /etc/frad/router.conf
# This is a template configuration for frame relay.
# All tags are included. The default values are based on the code
# supplied with the DOS drivers for the Sangoma S502A card.
#
# A '#' anywhere in a line constitutes a comment
# Blanks are ignored (you can indent with tabs too)
# Unknown [] entries and unknown keys are ignored
#

[Devices]
Count=1                 # number of devices to configure
Dev_1=sdla0             # the name of a device
#Dev_2=sdla1            # the name of a device

# Specified here, these are applied to all devices and can be overriden for 
# each individual board.
#
Access=CPE
Clock=Internal
KBaud=64
Flags=TX
#
# MTU=1500              # Maximum transmit IFrame length, default is 4096
# T391=10               # T391 value    5 - 30, default is 10
# T392=15               # T392 value    5 - 30, default is 15
# N391=6                # N391 value    1 - 255, default is 6
# N392=3                # N392 value    1 - 10, default is 3
# N393=4                # N393 value    1 - 10, default is 4

# Specified here, these set the defaults for all boards
# CIRfwd=16             # CIR forward   1 - 64
# Bc_fwd=16             # Bc forward    1 - 512 
# Be_fwd=0              # Be forward    0 - 511
# CIRbak=16             # CIR backward  1 - 64
# Bc_bak=16             # Bc backward   1 - 512
# Be_bak=0              # Be backward   0 - 511


#
#
# Device specific configuration
#
#

#
# The first device is a Sangoma S502E
#
[sdla0]
Type=Sangoma            # Type of the device to configure, currently only 
                        # SANGOMA is recognised
#
# These keys are specific to the 'Sangoma' type
#
# The type of Sangoma board - S502A, S502E, S508
Board=S502E
#
# The name of the test firmware for the Sangoma board
# Testware=/usr/src/frad-0.10/bin/sdla_tst.502
#
# The name of the FR firmware
# Firmware=/usr/src/frad-0.10/bin/frm_rel.502
#
Port=360                # Port for this particular card
Mem=C8                  # Address of memory window, A0-EE, depending on card
IRQ=5                   # IRQ number, do not supply for S502A
DLCIs=1                 # Number of DLCI's attached to this device
DLCI_1=16               # DLCI #1's number, 16 - 991
# DLCI_2=17
# DLCI_3=18
# DLCI_4=19
# DLCI_5=20
#
# Specified here, these apply to this device only, 
# and override defaults from above
#
# Access=CPE            # CPE or NODE, default is CPE 
# Flags=TXIgnore,RXIgnore,BufferFrames,DropAborted,Stats,MCI,AutoDLCI
# Clock=Internal        # External or Internal, default is Internal
# Baud=128              # Specified baud rate of attached CSU/DSU
# MTU=2048              # Maximum transmit IFrame length, default is 4096
# T391=10               # T391 value    5 - 30, default is 10
# T392=15               # T392 value    5 - 30, default is 15
# N391=6                # N391 value    1 - 255, default is 6
# N392=3                # N392 value    1 - 10, default is 3
# N393=4                # N393 value    1 - 10, default is 4

#
# The second device is some other card
#
# [sdla1]
# Type=FancyCard        # Type of the device to configure.
# Board=                # Type of Sangoma board
# Key=Value             # values specific to this type of device


#
# DLCI Default configuration parameters
# These may be overridden in the DLCI specific configurations
#
CIRfwd=64               # CIR forward   1 - 64
# Bc_fwd=16             # Bc forward    1 - 512 
# Be_fwd=0              # Be forward    0 - 511
# CIRbak=16             # CIR backward  1 - 64
# Bc_bak=16             # Bc backward   1 - 512
# Be_bak=0              # Be backward   0 - 511

#
# DLCI Configuration
# These are all optional. The naming convention is
# [DLCI_D<devicenum>_<DLCI_Num>]
#

[DLCI_D1_16]
# IP=
# Net=
# Mask=
# Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
# DLCIFlags=TXIgnore,RXIgnore,BufferFrames
# CIRfwd=64
# Bc_fwd=512
# Be_fwd=0
# CIRbak=64
# Bc_bak=512
# Be_bak=0

[DLCI_D2_16]
# IP=
# Net=
# Mask=
# Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
# DLCIFlags=TXIgnore,RXIgnore,BufferFrames
# CIRfwd=16
# Bc_fwd=16
# Be_fwd=0
# CIRbak=16
# Bc_bak=16
# Be_bak=0

När man har skapat sin /etc/frad/router.conf fil så är det enda som återstår att konfigurera enheterna. Detta är bara lite svårare än att konfigurera en normal nätverksenhet. Man måste komma ihåg att starta upp FRAD-enheten innan DLCI inkapslingsenheterna.

# Configure the frad hardware and the DLCI parameters
/sbin/fradcfg /etc/frad/router.conf || exit 1
/sbin/dlcicfg file /etc/frad/router.conf
#
# Bring up the FRAD device
ifconfig sdla0 up
#
# Configure the DLCI encapsulation interfaces and routing
ifconfig dlci00 192.168.10.1 pointopoint 192.168.10.2 up
route add -net 192.168.10.0 netmask 255.255.255.0 dlci00
#
ifconfig dlci01 192.168.11.1 pointopoint 192.168.11.2 up
route add -net 192.168.11.0 netmask 255.255.255.0 dlci00
#
route add default dev dlci00
#

6.10 IP-redovisning (IP Accounting)

Med IP-redovisningsegenskaperna i Linuxkärnan kan man samla ihop och analysera viss data från nätverksanvändningen. Datan som samlas ihop består av antalet paket och antalet bytes ackumulerade sedan talen senast nollställdes. Man kan specificera en mängd olika regler för att kategorisera talen för att passa sina ändamål.

Kompileringsalternativ för Kärnan:

Networking options  --->
    [*] IP: accounting
När man har kompilerat och installerat kärnan så behöver man använda kommandot ipfwadm för att konfigurera IP-redovisningen. Det finns många olika sätt att bryta ner redovisningsinformationen. Jag har valt ett enkelt exempel på vad som skulle kunna vara användbart, man kan läsa manualbladet för kommandot ipfwadm för mer information.

Scenario: man har ett Ethernet-nätverk som är anslutet till Internet via en PPP-länk. På sitt Ethernet har man en maskin som erbjuder ett antal tjänster och man är intresserad av att veta hur mycket trafik som genereras av telnet, rlogin, ftp och www trafik.

Man skulle då kunna använda följande:

#
# Flush the accounting rules
ipfwadm -A -f
#
# Add rules for local ethernet segment
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 20
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 20
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 23
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 23
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 80
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 80
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 513
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 513
ipfwadm -A in -a -P tcp -D 44.136.8.96/29
ipfwadm -A out -a -P tcp -D 44.136.8.96/29
ipfwadm -A in -a -P udp -D 44.136.8.96/29
ipfwadm -A out -a -P udp  -D 44.136.8.96/29
ipfwadm -A in -a -P icmp -D 44.136.8.96/29
ipfwadm -A out -a -P icmp -D 44.136.8.96/29
#
# Rules for default
ipfwadm -A in -a -P tcp -D 0/0 20
ipfwadm -A out -a -P tcp -S 0/0 20
ipfwadm -A in -a -P tcp -D 0/0 23
ipfwadm -A out -a -P tcp -S 0/0 23
ipfwadm -A in -a -P tcp -D 0/0 80
ipfwadm -A out -a -P tcp -S 0/0 80
ipfwadm -A in -a -P tcp -D 0/0 513
ipfwadm -A out -a -P tcp -S 0/0 513
ipfwadm -A in -a -P tcp -D 0/0
ipfwadm -A out -a -P tcp -D 0/0
ipfwadm -A in -a -P udp -D 0/0
ipfwadm -A out -a -P udp  -D 0/0
ipfwadm -A in -a -P icmp -D 0/0
ipfwadm -A out -a -P icmp -D 0/0
#
# List the rules
ipfwadm -A -l -n
#
Det sista kommandot listar var och en av redovisningsreglerna och visar de ihopsamlade summorna.

En viktig notering är att när man analyserar datan är att summan för alla regler som passar in kommer att ökas så för att erhålla summor för enskilda protokoll så måste man räkna lite grann. Om jag tex ville veta hur mycket data som inte var ftp, telnet, rlogin eller www så skulle jag subtrahera de individuella summorna från den regel som passar in på alla portarna.

# ipfwadm -A -l -n
IP accounting rules
 pkts bytes dir prot source               destination          ports
    0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 20
    0     0 out tcp  44.136.8.96/29       0.0.0.0/0            20 -> *
    0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 23
    0     0 out tcp  44.136.8.96/29       0.0.0.0/0            23 -> *
   10  1166 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 80
   10   572 out tcp  44.136.8.96/29       0.0.0.0/0            80 -> *
  242  9777 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 513
  220 18198 out tcp  44.136.8.96/29       0.0.0.0/0            513 -> *
  252 10943 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> *
  231 18831 out tcp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 in  udp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 out udp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 in  icmp 0.0.0.0/0            44.136.8.96/29       *
    0     0 out icmp 0.0.0.0/0            44.136.8.96/29       *
    0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 20
    0     0 out tcp  0.0.0.0/0            0.0.0.0/0            20 -> *
    0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 23
    0     0 out tcp  0.0.0.0/0            0.0.0.0/0            23 -> *
   10  1166 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 80
   10   572 out tcp  0.0.0.0/0            0.0.0.0/0            80 -> *
  243  9817 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 513
  221 18259 out tcp  0.0.0.0/0            0.0.0.0/0            513 -> *
  253 10983 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> *
  231 18831 out tcp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 in  udp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 out udp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 in  icmp 0.0.0.0/0            0.0.0.0/0            *
    0     0 out icmp 0.0.0.0/0            0.0.0.0/0            *
# 

6.11 IP Aliasing

Det finns vissa applikationer där det är användbart att kunna tilldela flera IP-adresser till en och samma nätverksenhet. Titta i IP-Aliasing mini-HOWTO för mer information än vad man hittar här.

Kompileringsalternativ för Kärnan:

Networking options  --->
    ....
    [*] Network aliasing
    ....
    <*> IP: aliasing support
När man har kompilerat och installerat sin kärna med stöd för IP Aliasing så är det väldigt enkelt att konfigurera. Aliasen läggs till virtuella nätverksenheter som är associerade med den verkliga enheten. En enkel namnkonvention används, nämligen <enhetsnamn>:<virtuellt enhetsnummer>, tex eth0:0, ppp0:1 osv. Notera att en virtuell enhet endast kan konfigureras efter det att den riktiga enheten har konfigurerats.

Till exempel, antag att man har ett Ethernet-nätverk som innehåller två olika IP-subnät på en gång. Man vill nu att maskinen skall ha direkt access till båda. Man skulle använda något som:

#
# ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
#
# ifconfig eth0:0 192.168.10.1 netmask 255.255.255.0 up
# route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0
#
För att ta bort ett alias så lägger man till ett `-' i slutet på dess namn:
# ifconfig eth0:0- 0
Alla router som är relaterade till det aliaset kommer också att tas bort automatiskt.

6.12 IP Brandväggar (IP Firewalls)

IP-brandväggar täcks mer i detalj i Firewall-HOWTO. Med en IP-brandvägg kan man skydda sin maskin mot otillåten åtkomst via nätverket genom att filtrera bort eller tillåta datagram till eller ifrån IP-adresser som man anger. Det finns regler i tre olika klasser: inkommande filtrering, utgående filtrering och filtrering vid vidareskickning. Reglerna för inkommande gäller datagram som tas emot av en nätverksenhet. Reglerna för utgående gäller datagram som skall skickas av en nätverksenhet. Reglerna för vidareskickning gäller de datagram som tas emot men inte skall till den aktuella maskinen, dvs datagram som skall routas.

Kompileringsalternativ för Kärnan:

Networking options  --->
    [*] Network firewalls
    ....
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: firewalling
    [ ] IP: firewall packet logging

Konfigurationen av reglerna för brandväggen görs med hjälp av kommandot ipfwadm. Som jag nämnde tidigare så är jag ingen expert på säkerhet, så även om jag visar ett exempel som går att använda så rekommenderas egna undersökningar i ämnet om säkerhet är särskilt viktigt.

Det kanske vanligaste användningsområdet för en brandvägg är när man använder sin Linuxburk som en router och brandvägg för att skydda sitt lokala nätverk mot otillåten åtkomst utifrån.

Följande konfiguration är baserad på ett bidrag från Arnt Gulbrandsen, <agulbra@troll.no>.

Exemplet beskriver en konfiguration av brandväggsreglerna i Linux-brandväggen/routern som illustreras i denna figur:

-                                   -
 \                                  | 172.16.37.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |  172.16.174.30 | Linux |      |
NET =================|  f/w  |------|    ..37.19
    |    PPP         | router|      |  --------
   /                 ---------      |--| Mail |
  /                                 |  | /DNS |
 /                                  |  --------
-                                   -

Kommandona som följer placeras normalt i en rc fil så att de startas automatiskt varje gång systemet startas. För maximal säkerhet så borde de utföras efter det att nätverksgränssnitten konfigurerats, men innan enheterna aktiveras så att man på detta sätt hindrar att någon får tillgång till maskinen medan den startar upp.

#!/bin/sh

# Flush the 'Forwarding' rules table
# Change the default policy to 'accept'
#
/sbin/ipfwadm -F -f
/sbin/ipfwadm -F -p accept
#
# .. and for 'Incoming'
#
/sbin/ipfwadm -I -f
/sbin/ipfwadm -I -p accept

# First off, seal off the PPP interface
# I'd love to use '-a deny' instead of '-a reject -y' but then it
# would be impossible to originate connections on that interface too.
# The -o causes all rejected datagrams to be logged. This trades
# disk space against knowledge of an attack of configuration error.
#
/sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30

# Throw away certain kinds of obviously forged packets right away:
# Nothing should come from multicast/anycast/broadcast addresses
#
/sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
#
# and nothing coming from the loopback network should ever be
# seen on a wire
#
/sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24

# accept incoming SMTP and DNS connections, but only
# to the Mail/Name Server
#
/sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53
#
# DNS uses UDP as well as TCP, so allow that too
# for questions to our name server
#
/sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53
#
# but not "answers" coming to dangerous ports like NFS and
# Larry McVoy's NFS extension.  If you run squid, add its port here.
#
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \
        -D 172.16.37.0/24 2049 2050

# answers to other user ports are okay
#
/sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \
        -D 172.16.37.0/24 53 1024:65535

# Reject incoming connections to identd
# We use 'reject' here so that the connecting host is told
# straight away not to bother continuing, otherwise we'd experience
# delays while ident timed out.
#
/sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113

# Accept some common service connections from the 192.168.64 and
# 192.168.65 networks, they are friends that we trust.
#
/sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \
        -D 172.16.37.0/24 20:23

# accept and pass through anything originating inside
#
/sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0

# deny most other incoming TCP connections and log them
# (append 1:1023 if you have problems with ftp not working)
#
/sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24

# ... for UDP too
#
/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24

Att göra en bra konfiguration av brandväggen är lite trixigt. Exemplet ovan borde dock vara en hyfsad startpunkt. Manualbladet för kommandot ipfwadm innehåller mer hjälp om hur man använder det. Om man tänker konfigurera en brandvägg, så skall man se till att fråga runt och få så mycket råd man kan ifrån källor som man anser vara pålitliga. Låt sedan någon testa konfigurationen från utsidan.

6.13 IPIP Inkapsling (IPIP Encapsulation)

Varför skulle man vilja kapsla in IP-datagram i andra IP-datagram? Det låter som en konstig sak att göra om man aldrig sett ett exempel på det innan. Ok, här är ett par vanliga områden där det används: Mobil IP och IP-Multicast. Men där det antagligen används mest är också det mest okända området, Amatörradio.

Kompileringsalternativ för Kärnan:

Networking options  --->
    [*] TCP/IP networking
    [*] IP: forwarding/gatewaying
    ....
    <*> IP: tunneling

Tunnlingsenheterna heter `tunl0', `tunl1' osv.

"Men varför....?". Ok, ok. Konventionella regler för IP-routing säger att ett IP-nätverk består av en nätverksadress och en nätmask. Detta producerar en serie kontinuerliga adresser som alla kan routas till en och samma utgående lina. Detta är väldigt bekvämt, men det innebär att man bara kan använda en viss IP-adress när man är ansluten till ett visst nätverk som adressen tillhör. I de flesta fall går detta bra, men om man är en mobil 'nät-invånare' så kanske man inte alltid är ansluten till ett och samma nätverk hela tiden. IPIP inkapsling (IP-tunnling) gör det möjligt att slippa den restriktionen genom att låta datagram som är destinerade till en viss IP-adress packas in i ett nytt IP-paket och omdirigeras till en annan IP-adress. Om man vet att man kommer att arbeta på ett annat IP-nätverk ett tag så kan man ställa in en maskin på sitt hemmanät att ta emot ens datagram och sedan omdirigera dem till den adress som man använder temporärt.

En tunnlad nätverkskonfiguration.

Som alltid, så tycker jag att en figur fungerar bättre än en massa förvirrande text, så här kommer en:

 192.168.1/24                          192.168.2/24

     -                                     -
     |      ppp0 =            ppp0 =       |
     |  aaa.bbb.ccc.ddd  fff.ggg.hhh.iii   |
     |                                     |
     |   /-----\                 /-----\   |
     |   |     |       //        |     |   |
     |---|  A  |------//---------|  B  |---|
     |   |     |     //          |     |   |
     |   \-----/                 \-----/   |
     |                                     |
     -                                     -

Figuren illustrerar en annan möjlig anledning till IPIP-inkapsling, ett virtuellt privat nätverk. Detta exempel förutsätter att man har två maskiner som båda har en enkel uppringd anslutning till Internet. Båda datorerna allokeras en IP-adress. Bakom dessa maskiner finns några privata LAN konfigurerade med reserverade nätverksadresser. Antag att man vill låta vilken dator som helst på nätverk A kommunicera med vilken dator som helst på nätverk B, precis som om de vore anslutna till Internet med en nätverksroute. IPIP-inkapsling fixar detta. Notera att inkapslingen inte löser problemet med att låta datorerna på nätverken A och B kommunicera med någon annan dator på Internet, då behöver man trix som IP-maskering. Inkapsling görs normalt av maskiner som uppträder som routrar.

Linux routern `A' skulle konfigureras med:

#
PATH=/sbin:/usr/sbin
#
# Ethernet configuration
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
#
# ppp0 configuration (start ppp link, set default route)
pppd
route add default ppp0
#
# Tunnel device configuration
ifconfig tunl0 192.168.1.1 up
route add -net 192.168.2.0 netmask 255.255.255.0 gw fff.ggg.hhh.iii tunl0

Linux routern `B' skulle konfigureras med:

#
PATH=/sbin:/usr/sbin
#
# Ethernet configuration
ifconfig eth0 192.168.2.1 netmask 255.255.255.0 up
route add -net 192.168.2.0 netmask 255.255.255.0 eth0
#
# ppp0 configuration (start ppp link, set default route)
pppd
route add default ppp0
#
# Tunnel device configuration
ifconfig tunl0 192.168.2.1 up
route add -net 192.168.1.0 netmask 255.255.255.0 gw aaa.bbb.ccc.ddd tunl0

Kommandot:

route add -net 192.168.1.0 netmask 255.255.255.0 gw aaa.bbb.ccc.ddd tunl0
betyder: 'Skicka alla datagram ämnade för 192.168.1.0/24 inuti ett IPIP-inkapslat datagram med destinationsadressen aaa.bbb.ccc.ddd'.

Notera att konfigurationen finns på båda sidor. Tunnlingsenheten använder `gw' parametern i routen som destination för IP-datagrammet som kapslar in originaldatagrammet. Den maskinen måste då veta hur man 'packar upp' ett IPIP-datagram, dvs den måste också ha en tunnlingsenhet.

En tunnlad datorkonfiguration.

Man måste inte routa ett helt nätverk. Man skulle till exempel kunna routa en enskild IP-adress. I sådana fall skulle man kunna konfigurera tunl enheten på den 'avlägsna' maskinen med sin hemma-IP-adress och i A-ändan bara använda dator-route (och Proxy Arp) istället för en nätverksroute via tunnlingsenheten. Låt oss rita om och modifiera vår konfiguration efter detta. Nu har vi bara datorn `B' som vill agera och uppföra sig som om den både var ansluten till Internet och även en del av nätverket som stöds av datorn `A':

 192.168.1/24

     -
     |      ppp0 =                ppp0 =
     |  aaa.bbb.ccc.ddd      fff.ggg.hhh.iii
     |
     |   /-----\                 /-----\
     |   |     |       //        |     |
     |---|  A  |------//---------|  B  |
     |   |     |     //          |     |
     |   \-----/                 \-----/
     |                      also: 192.168.1.12
     -

Linux routern `A' skulle konfigureras med:

#
PATH=/sbin:/usr/sbin
#
# Ethernet configuration
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 up
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
#
# ppp0 configuration (start ppp link, set default route)
pppd
route add default ppp0
#
# Tunnel device configuration
ifconfig tunl0 192.168.1.1 up
route add -host 192.168.1.12 gw fff.ggg.hhh.iii tunl0
#
# Proxy ARP for the remote host
arp -s 192.168.1.12 xx:xx:xx:xx:xx:xx pub

Linuxdatorn `B' skulle konfigureras med:

#
PATH=/sbin:/usr/sbin
#
# ppp0 configuration (start ppp link, set default route)
pppd
route add default ppp0
#
# Tunnel device configuration
ifconfig tunl0 192.168.1.12 up
route add -net 192.168.1.0 netmask 255.255.255.0 gw aaa.bbb.ccc.ddd tunl0

Denna typ av konfiguration är mer typisk för Mobil IP. Där en enskild dator vill flytta omkring på Internet och hela tiden använda samma IP-adress. Mer information om detta finns i sektionen om Mobil IP.

6.14 IPX (AF_IPX)

IPX-protokollet används mest i LAN-omgivningar med Novell NetWare(tm). Linux har stöd för att kunna agera som en nätverksändpunkt, eller som en router för IPX.

Kompileringsalternativ för Kärnan:

Networking options  --->
    [*] The IPX protocol
    [ ] Full internal IPX network

IPX-protokollet och NCPFS täcks mer detaljerat i IPX-HOWTO.

6.15 IPv6

Precis när man tror att man förstår hur IP-nätverk fungerar så ändras reglerna! IPv6 är en förkortning av Internet Protocol version 6. IPv6 kan ibland också kallas för IPng (IP next generation) (SvÖ). IPv6 utvecklades i huvudsak för att ta bort oron i Internetvärlden att det snart är slut på IP-adresser som kan delas ut. IPv6-adresserna är 16 bytes stora (128 bits). IPv6 har ett antal andra ändringar, mest förenklingar, som kommer att göra IPv6-nätverk lättare att underhålla än IPv4-nätverk.

Linux har redan en fungerande, men inte komplett, IPv6-implementation i version 2.1.* av kärnan.

Om man vill experimentera med nästa generations Internetteknik, eller om man behöver den, så bör man läsa IPv6-FAQ som finns på www.terra.net.

6.16 ISDN

Integrated Services Digital Network (ISDN) är en serie standarder som specificerar ett generellt switchat digitalt nätverk. En ISDN-`uppringning' skapar en synkron punkt till punkt förbindelse till destinationen. ISDN körs normalt på höghastighetslänkar som delas in i ett antal diskreta kanaler. Det finns två olika typer av kanaler, `B-kanaler' som bär användardatan och `D-kanaler' som används för kontrollinformation till ISDN-växeln. I Australien till exempel så kan ISDN levereras med en 2Mbps-länk som delas in i 30 diskreta 64kbps B-kanaler och en 64kbps D-kanal. Valfritt antal kanaler kan användas samtidigt i valfri kombination. Man kan till exempel upprätta 30 olika anslutningar på 64kbps var till 30 olika destinationer, eller så kan man upprätta 15 olika anslutningar på 128kbps var till 15 olika destinationer (med två kanaler per anslutning), eller bara ett litet antal kanaler och lämna resten vilande. En kanal kan användas till både inkommande och utgående anslutningar. Den ursprungliga avsikten med ISDN var att telefonbolagen ville kunna erbjuda en enda datatjänst som kunde ge antingen telefon- (digitalt) eller datatjänster till hem och kontor utan att kunden skulle behöva ändra någon konfiguration.

Det finns några olika sätt att ansluta en dator till en ISDN-tjänst. Ett sätt är att använda enhet som heter `Terminaladapter' som ansluter till en `Network Terminating Unit' vilken telefonbolaget har installerat i samband med ISDN-tjänsten och som har ett antal seriella gränssnitt. Ett av de gränssnitten används för att skicka kommandon som upprättar en förbindelse och konfiguration och de andra är anslutna till nätverket som skall användas. Linux fungerar i denna omgivningen utan modifikation, man behandlar bara terminaladaptern som vilken annan seriell enhet som helst. Ett annat sätt, vilket är så som kärnan stöder ISDN, är att installera ett ISDN-kort i Linuxburken och sedan låta mjukvaran i Linux hantera protokollen och upprätta förbindelser.

Kompileringsalternativ för Kärnan:

ISDN subsystem  --->
        <*> ISDN support
        [ ] Support synchronous PPP
        [ ] Support audio via ISDN
        < > ICN 2B and 4B support
        < > PCBIT-D support
        < > Teles/NICCY1016PC/Creatix support

Implementationen av ISDN i Linux stöder ett antal olika interna ISDN-kort. Dessa finns listade i konfigurationen för kärnan:

Några av dessa kort kräver att man laddar hem särskild programvara för att de skall fungera. Det finns ett separat verktyg att göra detta med.

Alla detaljer om hur man konfigurerar ISDN för Linux finns tillgängligt i katalogen /usr/src/linux/Documentation/isdn/ och en FAQ för isdn4linux finns på www.lrz-muenchen.de.

En anmärkning om PPP. PPP-protokollen fungerar antingen för asynkrona eller synkrona seriella linor. PPP-daemonen som vanligtvis levereras med Linux, `pppd', stöder endast asynkront läge. Om man vill köra PPP-protokoll via ISDN så måste man använda en särskilt modifierad version. Var man hittar den finns beskrivet i dokumentationen som nämns ovan.

6.17 IP-maskering (IP Masquerade).

Många har en enkel uppringd anslutning till Internet. Nästan alla som använder den typen av konfiguration allokeras en enda IP-adress av ISPn. Det räcker normalt för att en dator skall ha full åtkomst till Internet. IP-maskering är ett smart trix som gör det möjligt att ha många maskiner som använder en enda IP-adress genom att låta de andra datorerna se ut som, därav termen maskering, maskinen som har den uppringda anslutningen. Det finns dock en liten brist, maskeringsfunktionen fungerar nästan alltid bara i ena riktningen. Det betyder att de förklädda datorerna kan ansluta utåt, men de kan inte ta emot nätverksanslutningar från andra datorer. Detta betyder att vissa nätverkstjänster inte fungerar, tex talk, och andra som till exempel ftp måste konfigureras att köra i passivt (PASV) läge för att fungera. Lyckligtvis så fungerar de vanligaste tjänsterna som till exempel telnet, World Wide Web och irc utmärkt.

Kompileringsalternativ för Kärnan:

Code maturity level options  --->
    [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
    [*] Network firewalls
    ....
    [*] TCP/IP networking
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: masquerading (EXPERIMENTAL)

Vanligtvis har man sin Linuxburk konfigurerad för uppringd SLIP eller PPP, precis som om det var en friståenda dator. Dessutom så skulle den ha en ytterligare nätverksenhet konfigurerad, kanske Ethernet som är konfigurerat med en reserverad nätverksadress. Datorerna som skall förklädas skulle då finnas på det nätverket. Var och en av de datorerna skulle ställa in IP-adressen på Linuxboxens Ethernet-kort som `default gateway' eller router. Observera att de andra datorerna (de som inte har den uppringda anslutningen) inte behöver konfigureras med IP-maskering, de behöver endast veta vilken dator som är `default gateway' (SvÖ).

En typisk konfiguration:

-                                   -
 \                                  | 192.168.1.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |                | Linux | .1.1 |
NET =================| masq  |------|
    |    PPP/slip    | router|      |  --------
   /                 ---------      |--| host |
  /                                 |  |      |
 /                                  |  --------
-                                   -

De viktigaste kommandona för denna konfiguration är:

# Network route for ethernet
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
#
# Default route to the rest of the internet.
route add default ppp0
#
# Cause all hosts on the 192.168.1/24 network to be masqueraded.
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 

Man kan hitta mer information om detta på IP Masquerade Resource Page eller i IP-Masquerade-MINI-HOWTO.

6.18 IP Transparent Proxy

Med IP transparent proxy kan man omdirigera servrar eller tjänster ämnade för en annan dator till tjänsterna på denna maskinen. Detta kan till exempel vara användbart om man har en Linuxburk som router och även tillhandahåller en proxy-server. Då skulle man omdirigera alla anslutningar ämnade för en avlägsen tjänst till den lokala proxy-servern.

Kompileringsalternativ för Kärnan:

Code maturity level options  --->
        [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
        [*] Network firewalls
        ....
        [*] TCP/IP networking
        ....
        [*] IP: firewalling
        ....
        [*] IP: transparent proxy support (EXPERIMENTAL)

Man konfigurerar transparent proxy med kommandot ipfwadm.

Ett exempel som kan vara användbart följer:

ipfwadm -I -a accept -D 0/0 telnet -r 2323
Detta exempel gör att alla försök att upprätta en telnet-anslutning (port 23) till någon dator kommer att omdirigeras till port 2323 på denna dator. Om man kör en tjänst på den porten så kan man vidarebefodra telnet-anslutningar, logga dem eller göra vadhelst man önskar.

Ett mer intressant exempel är att omdirigera all http-trafik genom en lokal cache. Men protokollet som används av proxy-servrar är annorlunda än vanlig http: där en klient ansluter till www.server.com:80 och frågar efter /sökväg/sida/, men när den ansluter till en lokal cache kontaktar den proxy.local.domain:8080 och frågar efter www.server.com/path/page.

För att filtrera en http-förfrågan genom den lokala proxyn så behöver man lägga till det protokollet genom att köra en liten server, som heter transproxy (som man hittar på www). Man kan då köra transproxy på port 8081 och ge följande kommando:

ipfwadm -I -a accept -D 0/0 80 -r 8081
Programmet transproxy kommer då att ta emot alla anslutningar ämnade för externa servrar och dirigera dem till den lokala proxyn efter att den har fixat till protokollskillnaderna.

6.19 Mobil IP

Termen IP-mobilitet beskriver förmågan att för en dator flytta sina nätverksanslutningar från en punkt på Internet till en annan utan att ändra sin IP-adress eller tappa anslutningen. Vanligtvis när en IP-dator byter anslutningspunkt så måste den även byta IP-adress. IP-mobilitet övervinner detta problem genom att allokera en fix IP-adress till den mobila datorn och använda IP-inkapsling (tunnling) med automatisk routing för att se till att datagrammen som är ämnade för den routas till den IP-adress som den verkligen använder.

Ett projekt är igång för att ta fram ett komplett paket med verktyg för IP-mobilitet i Linux. Information om projektet kan fås på Linux Mobile IP Home Page.

6.20 Multicast

Med IP-multicasting kan datagram routas till ett godtyckligt antal IP-datorer på olika IP-nätverk samtidigt. Denna mekanism kan till exempel användas för att sända broadcastmaterial, som tex video eller ljud, till ett stort antal datorer på Internet samtidigt utan att var och en av dessa datorer behöver belasta nätverket med en egen `kopia' av materialet.

Kompileringsalternativ för Kärnan:

Networking options  --->
        [*] TCP/IP networking
        ....
        [*] IP: multicasting

Man behöver även ett paket med verktyg och göra mindre nätverkskonfiguration. Ett ställe att hämta information om hur man installerar dessa för Linux finns på: www.teksouth.com.

6.21 NAT - Översättning av nätverksadresser (Network Address Translation)

NAT är en standardiserad storebror till Linux IP-maskering. Det finns en detaljerad specifikation i RFC1631. NAT tillhandahåller funktioner som IP-maskering inte gör vilket gör det mer passande för användning i brandväggsroutrar hos företag och i större installationer.

En alpha-implementation av NAT för Linux 2.0.29 kärnan har utvecklats av Michael Hasenstein, Michael.Hasenstein@informatik.tu-chemnitz.de. Michaels dokumentation och implementation finn på 6.14 IPX (AF_IPX)

IPX-protokollet används mest i LAN-omgivningar med Novell NetWare(tm). Linux har stöd för att kunna agera som en nätverksändpunkt, eller som en router för IPX.

Kompileringsalternativ för Kärnan:

Networking options  --->
    [*] The IPX protocol
    [ ] Full internal IPX network

IPX-protokollet och NCPFS täcks mer detaljerat i IPX-HOWTO.

6.15 IPv6

Precis när man tror att man förstår hur IP-nätverk fungerar så ändras reglerna! IPv6 är en förkortning av Internet Protocol version 6. IPv6 kan ibland också kallas för IPng (IP next generation) (SvÖ). IPv6 utvecklades i huvudsak för att ta bort oron i Internetvärlden att det snart är slut på IP-adresser som kan delas ut. IPv6-adresserna är 16 bytes stora (128 bits). IPv6 har ett antal andra ändringar, mest förenklingar, som kommer att göra IPv6-nätverk lättare att underhålla än IPv4-nätverk.

Linux har redan en fungerande, men inte komplett, IPv6-implementation i version 2.1.* av kärnan.

Om man vill experimentera med nästa generations Internetteknik, eller om man behöver den, så bör man läsa IPv6-FAQ som finns på www.terra.net.

6.16 ISDN

Integrated Services Digital Network (ISDN) är en serie standarder som specificerar ett generellt switchat digitalt nätverk. En ISDN-`uppringning' skapar en synkron punkt till punkt förbindelse till destinationen. ISDN körs normalt på höghastighetslänkar som delas in i ett antal diskreta kanaler. Det finns två olika typer av kanaler, `B-kanaler' som bär användardatan och `D-kanaler' som används för kontrollinformation till ISDN-växeln. I Australien till exempel så kan ISDN levereras med en 2Mbps-länk som delas in i 30 diskreta 64kbps B-kanaler och en 64kbps D-kanal. Valfritt antal kanaler kan användas samtidigt i valfri kombination. Man kan till exempel upprätta 30 olika anslutningar på 64kbps var till 30 olika destinationer, eller så kan man upprätta 15 olika anslutningar på 128kbps var till 15 olika destinationer (med två kanaler per anslutning), eller bara ett litet antal kanaler och lämna resten vilande. En kanal kan användas till både inkommande och utgående anslutningar. Den ursprungliga avsikten med ISDN var att telefonbolagen ville kunna erbjuda en enda datatjänst som kunde ge antingen telefon- (digitalt) eller datatjänster till hem och kontor utan att kunden skulle behöva ändra någon konfiguration.

Det finns några olika sätt att ansluta en dator till en ISDN-tjänst. Ett sätt är att använda enhet som heter `Terminaladapter' som ansluter till en `Network Terminating Unit' vilken telefonbolaget har installerat i samband med ISDN-tjänsten och som har ett antal seriella gränssnitt. Ett av de gränssnitten används för att skicka kommandon som upprättar en förbindelse och konfiguration och de andra är anslutna till nätverket som skall användas. Linux fungerar i denna omgivningen utan modifikation, man behandlar bara terminaladaptern som vilken annan seriell enhet som helst. Ett annat sätt, vilket är så som kärnan stöder ISDN, är att installera ett ISDN-kort i Linuxburken och sedan låta mjukvaran i Linux hantera protokollen och upprätta förbindelser.

Kompileringsalternativ för Kärnan:

ISDN subsystem  --->
        <*> ISDN support
        [ ] Support synchronous PPP
        [ ] Support audio via ISDN
        < > ICN 2B and 4B support
        < > PCBIT-D support
        < > Teles/NICCY1016PC/Creatix support

Implementationen av ISDN i Linux stöder ett antal olika interna ISDN-kort. Dessa finns listade i konfigurationen för kärnan:

Några av dessa kort kräver att man laddar hem särskild programvara för att de skall fungera. Det finns ett separat verktyg att göra detta med.

Alla detaljer om hur man konfigurerar ISDN för Linux finns tillgängligt i katalogen /usr/src/linux/Documentation/isdn/ och en FAQ för isdn4linux finns på www.lrz-muenchen.de.

En anmärkning om PPP. PPP-protokollen fungerar antingen för asynkrona eller synkrona seriella linor. PPP-daemonen som vanligtvis levereras med Linux, `pppd', stöder endast asynkront läge. Om man vill köra PPP-protokoll via ISDN så måste man använda en särskilt modifierad version. Var man hittar den finns beskrivet i dokumentationen som nämns ovan.

6.17 IP-maskering (IP Masquerade).

Många har en enkel uppringd anslutning till Internet. Nästan alla som använder den typen av konfiguration allokeras en enda IP-adress av ISPn. Det räcker normalt för att en dator skall ha full åtkomst till Internet. IP-maskering är ett smart trix som gör det möjligt att ha många maskiner som använder en enda IP-adress genom att låta de andra datorerna se ut som, därav termen maskering, maskinen som har den uppringda anslutningen. Det finns dock en liten brist, maskeringsfunktionen fungerar nästan alltid bara i ena riktningen. Det betyder att de förklädda datorerna kan ansluta utåt, men de kan inte ta emot nätverksanslutningar från andra datorer. Detta betyder att vissa nätverkstjänster inte fungerar, tex talk, och andra som till exempel ftp måste konfigureras att köra i passivt (PASV) läge för att fungera. Lyckligtvis så fungerar de vanligaste tjänsterna som till exempel telnet, World Wide Web och irc utmärkt.

Kompileringsalternativ för Kärnan:

Code maturity level options  --->
    [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
    [*] Network firewalls
    ....
    [*] TCP/IP networking
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: masquerading (EXPERIMENTAL)

Vanligtvis har man sin Linuxburk konfigurerad för uppringd SLIP eller PPP, precis som om det var en friståenda dator. Dessutom så skulle den ha en ytterligare nätverksenhet konfigurerad, kanske Ethernet som är konfigurerat med en reserverad nätverksadress. Datorerna som skall förklädas skulle då finnas på det nätverket. Var och en av de datorerna skulle ställa in IP-adressen på Linuxboxens Ethernet-kort som `default gateway' eller router. Observera att de andra datorerna (de som inte har den uppringda anslutningen) inte behöver konfigureras med IP-maskering, de behöver endast veta vilken dator som är `default gateway' (SvÖ).

En typisk konfiguration:

-                                   -
 \                                  | 192.168.1.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |                | Linux | .1.1 |
NET =================| masq  |------|
    |    PPP/slip    | router|      |  --------
   /                 ---------      |--| host |
  /                                 |  |      |
 /                                  |  --------
-                                   -

De viktigaste kommandona för denna konfiguration är:

# Network route for ethernet
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
#
# Default route to the rest of the internet.
route add default ppp0
#
# Cause all hosts on the 192.168.1/24 network to be masqueraded.
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 

Man kan hitta mer information om detta på IP Masquerade Resource Page eller i IP-Masquerade-MINI-HOWTO.

6.18 IP Transparent Proxy

Med IP transparent proxy kan man omdirigera servrar eller tjänster ämnade för en annan dator till tjänsterna på denna maskinen. Detta kan till exempel vara användbart om man har en Linuxburk som router och även tillhandahåller en proxy-server. Då skulle man omdirigera alla anslutningar ämnade för en avlägsen tjänst till den lokala proxy-servern.

Kompileringsalternativ för Kärnan:

Code maturity level options  --->
        [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
        [*] Network firewalls
        ....
        [*] TCP/IP networking
        ....
        [*] IP: firewalling
        ....
        [*] IP: transparent proxy support (EXPERIMENTAL)

Man konfigurerar transparent proxy med kommandot ipfwadm.

Ett exempel som kan vara användbart följer:

ipfwadm -I -a accept -D 0/0 telnet -r 2323
Detta exempel gör att alla försök att upprätta en telnet-anslutning (port 23) till någon dator kommer att omdirigeras till port 2323 på denna dator. Om man kör en tjänst på den porten så kan man vidarebefodra telnet-anslutningar, logga dem eller göra vadhelst man önskar.

Ett mer intressant exempel är att omdirigera all http-trafik genom en lokal cache. Men protokollet som används av proxy-servrar är annorlunda än vanlig http: där en klient ansluter till www.server.com:80 och frågar efter /sökväg/sida/, men när den ansluter till en lokal cache kontaktar den proxy.local.domain:8080 och frågar efter www.server.com/path/page.

För att filtrera en http-förfrågan genom den lokala proxyn så behöver man lägga till det protokollet genom att köra en liten server, som heter transproxy (som man hittar på www). Man kan då köra transproxy på port 8081 och ge följande kommando:

ipfwadm -I -a accept -D 0/0 80 -r 8081
Programmet transproxy kommer då att ta emot alla anslutningar ämnade för externa servrar och dirigera dem till den lokala proxyn efter att den har fixat till protokollskillnaderna.

6.19 Mobil IP

Termen IP-mobilitet beskriver förmågan att för en dator flytta sina nätverksanslutningar från en punkt på Internet till en annan utan att ändra sin IP-adress eller tappa anslutningen. Vanligtvis när en IP-dator byter anslutningspunkt så måste den även byta IP-adress. IP-mobilitet övervinner detta problem genom att allokera en fix IP-adress till den mobila datorn och använda IP-inkapsling (tunnling) med automatisk routing för att se till att datagrammen som är ämnade för den routas till den IP-adress som den verkligen använder.

Ett projekt är igång för att ta fram ett komplett paket med verktyg för IP-mobilitet i Linux. Information om projektet kan fås på Linux Mobile IP Home Page.

6.20 Multicast

Med IP-multicasting kan datagram routas till ett godtyckligt antal IP-datorer på olika IP-nätverk samtidigt. Denna mekanism kan till exempel användas för att sända broadcastmaterial, som tex video eller ljud, till ett stort antal datorer på Internet samtidigt utan att var och en av dessa datorer behöver belasta nätverket med en egen `kopia' av materialet.

Kompileringsalternativ för Kärnan:

Networking options  --->
        [*] TCP/IP networking
        ....
        [*] IP: multicasting

Man behöver även ett paket med verktyg och göra mindre nätverkskonfiguration. Ett ställe att hämta information om hur man installerar dessa för Linux finns på: www.teksouth.com.

6.21 NAT - Översättning av nätverksadresser (Network Address Translation)

NAT är en standardiserad storebror till Linux IP-maskering. Det finns en detaljerad specifikation i RFC1631. NAT tillhandahåller funktioner som IP-maskering inte gör vilket gör det mer passande för användning i brandväggsroutrar hos företag och i större installationer.

En alpha-implementation av NAT för Linux 2.0.29 kärnan har utvecklats av Michael Hasenstein, Michael.Hasenstein@informatik.tu-chemnitz.de. Michaels dokumentation och implementation finn på 6.14 IPX (AF_IPX)

IPX-protokollet används mest i LAN-omgivningar med Novell NetWare(tm). Linux har stöd för att kunna agera som en nätverksändpunkt, eller som en router för IPX.

Kompileringsalternativ för Kärnan:

Networking options  --->
    [*] The IPX protocol
    [ ] Full internal IPX network

IPX-protokollet och NCPFS täcks mer detaljerat i IPX-HOWTO.

6.15 IPv6

Precis när man tror att man förstår hur IP-nätverk fungerar så ändras reglerna! IPv6 är en förkortning av Internet Protocol version 6. IPv6 kan ibland också kallas för IPng (IP next generation) (SvÖ). IPv6 utvecklades i huvudsak för att ta bort oron i Internetvärlden att det snart är slut på IP-adresser som kan delas ut. IPv6-adresserna är 16 bytes stora (128 bits). IPv6 har ett antal andra ändringar, mest förenklingar, som kommer att göra IPv6-nätverk lättare att underhålla än IPv4-nätverk.

Linux har redan en fungerande, men inte komplett, IPv6-implementation i version 2.1.* av kärnan.

Om man vill experimentera med nästa generations Internetteknik, eller om man behöver den, så bör man läsa IPv6-FAQ som finns på www.terra.net.

6.16 ISDN

Integrated Services Digital Network (ISDN) är en serie standarder som specificerar ett generellt switchat digitalt nätverk. En ISDN-`uppringning' skapar en synkron punkt till punkt förbindelse till destinationen. ISDN körs normalt på höghastighetslänkar som delas in i ett antal diskreta kanaler. Det finns två olika typer av kanaler, `B-kanaler' som bär användardatan och `D-kanaler' som används för kontrollinformation till ISDN-växeln. I Australien till exempel så kan ISDN levereras med en 2Mbps-länk som delas in i 30 diskreta 64kbps B-kanaler och en 64kbps D-kanal. Valfritt antal kanaler kan användas samtidigt i valfri kombination. Man kan till exempel upprätta 30 olika anslutningar på 64kbps var till 30 olika destinationer, eller så kan man upprätta 15 olika anslutningar på 128kbps var till 15 olika destinationer (med två kanaler per anslutning), eller bara ett litet antal kanaler och lämna resten vilande. En kanal kan användas till både inkommande och utgående anslutningar. Den ursprungliga avsikten med ISDN var att telefonbolagen ville kunna erbjuda en enda datatjänst som kunde ge antingen telefon- (digitalt) eller datatjänster till hem och kontor utan att kunden skulle behöva ändra någon konfiguration.

Det finns några olika sätt att ansluta en dator till en ISDN-tjänst. Ett sätt är att använda enhet som heter `Terminaladapter' som ansluter till en `Network Terminating Unit' vilken telefonbolaget har installerat i samband med ISDN-tjänsten och som har ett antal seriella gränssnitt. Ett av de gränssnitten används för att skicka kommandon som upprättar en förbindelse och konfiguration och de andra är anslutna till nätverket som skall användas. Linux fungerar i denna omgivningen utan modifikation, man behandlar bara terminaladaptern som vilken annan seriell enhet som helst. Ett annat sätt, vilket är så som kärnan stöder ISDN, är att installera ett ISDN-kort i Linuxburken och sedan låta mjukvaran i Linux hantera protokollen och upprätta förbindelser.

Kompileringsalternativ för Kärnan:

ISDN subsystem  --->
        <*> ISDN support
        [ ] Support synchronous PPP
        [ ] Support audio via ISDN
        < > ICN 2B and 4B support
        < > PCBIT-D support
        < > Teles/NICCY1016PC/Creatix support

Implementationen av ISDN i Linux stöder ett antal olika interna ISDN-kort. Dessa finns listade i konfigurationen för kärnan:

Några av dessa kort kräver att man laddar hem särskild programvara för att de skall fungera. Det finns ett separat verktyg att göra detta med.

Alla detaljer om hur man konfigurerar ISDN för Linux finns tillgängligt i katalogen /usr/src/linux/Documentation/isdn/ och en FAQ för isdn4linux finns på www.lrz-muenchen.de.

En anmärkning om PPP. PPP-protokollen fungerar antingen för asynkrona eller synkrona seriella linor. PPP-daemonen som vanligtvis levereras med Linux, `pppd', stöder endast asynkront läge. Om man vill köra PPP-protokoll via ISDN så måste man använda en särskilt modifierad version. Var man hittar den finns beskrivet i dokumentationen som nämns ovan.

6.17 IP-maskering (IP Masquerade).

Många har en enkel uppringd anslutning till Internet. Nästan alla som använder den typen av konfiguration allokeras en enda IP-adress av ISPn. Det räcker normalt för att en dator skall ha full åtkomst till Internet. IP-maskering är ett smart trix som gör det möjligt att ha många maskiner som använder en enda IP-adress genom att låta de andra datorerna se ut som, därav termen maskering, maskinen som har den uppringda anslutningen. Det finns dock en liten brist, maskeringsfunktionen fungerar nästan alltid bara i ena riktningen. Det betyder att de förklädda datorerna kan ansluta utåt, men de kan inte ta emot nätverksanslutningar från andra datorer. Detta betyder att vissa nätverkstjänster inte fungerar, tex talk, och andra som till exempel ftp måste konfigureras att köra i passivt (PASV) läge för att fungera. Lyckligtvis så fungerar de vanligaste tjänsterna som till exempel telnet, World Wide Web och irc utmärkt.

Kompileringsalternativ för Kärnan:

Code maturity level options  --->
    [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
    [*] Network firewalls
    ....
    [*] TCP/IP networking
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: masquerading (EXPERIMENTAL)

Vanligtvis har man sin Linuxburk konfigurerad för uppringd SLIP eller PPP, precis som om det var en friståenda dator. Dessutom så skulle den ha en ytterligare nätverksenhet konfigurerad, kanske Ethernet som är konfigurerat med en reserverad nätverksadress. Datorerna som skall förklädas skulle då finnas på det nätverket. Var och en av de datorerna skulle ställa in IP-adressen på Linuxboxens Ethernet-kort som `default gateway' eller router. Observera att de andra datorerna (de som inte har den uppringda anslutningen) inte behöver konfigureras med IP-maskering, de behöver endast veta vilken dator som är `default gateway' (SvÖ).

En typisk konfiguration:

-                                   -
 \                                  | 192.168.1.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |                | Linux | .1.1 |
NET =================| masq  |------|
    |    PPP/slip    | router|      |  --------
   /                 ---------      |--| host |
  /                                 |  |      |
 /                                  |  --------
-                                   -

De viktigaste kommandona för denna konfiguration är:

# Network route for ethernet
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
#
# Default route to the rest of the internet.
route add default ppp0
#
# Cause all hosts on the 192.168.1/24 network to be masqueraded.
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 

Man kan hitta mer information om detta på IP Masquerade Resource Page eller i IP-Masquerade-MINI-HOWTO.

6.18 IP Transparent Proxy

Med IP transparent proxy kan man omdirigera servrar eller tjänster ämnade för en annan dator till tjänsterna på denna maskinen. Detta kan till exempel vara användbart om man har en Linuxburk som router och även tillhandahåller en proxy-server. Då skulle man omdirigera alla anslutningar ämnade för en avlägsen tjänst till den lokala proxy-servern.

Kompileringsalternativ för Kärnan:

Code maturity level options  --->
        [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
        [*] Network firewalls
        ....
        [*] TCP/IP networking
        ....
        [*] IP: firewalling
        ....
        [*] IP: transparent proxy support (EXPERIMENTAL)

Man konfigurerar transparent proxy med kommandot ipfwadm.

Ett exempel som kan vara användbart följer:

ipfwadm -I -a accept -D 0/0 telnet -r 2323
Detta exempel gör att alla försök att upprätta en telnet-anslutning (port 23) till någon dator kommer att omdirigeras till port 2323 på denna dator. Om man kör en tjänst på den porten så kan man vidarebefodra telnet-anslutningar, logga dem eller göra vadhelst man önskar.

Ett mer intressant exempel är att omdirigera all http-trafik genom en lokal cache. Men protokollet som används av proxy-servrar är annorlunda än vanlig http: där en klient ansluter till www.server.com:80 och frågar efter /sökväg/sida/, men när den ansluter till en lokal cache kontaktar den proxy.local.domain:8080 och frågar efter www.server.com/path/page.

För att filtrera en http-förfrågan genom den lokala proxyn så behöver man lägga till det protokollet genom att köra en liten server, som heter transproxy (som man hittar på www). Man kan då köra transproxy på port 8081 och ge följande kommando:

ipfwadm -I -a accept -D 0/0 80 -r 8081
Programmet transproxy kommer då att ta emot alla anslutningar ämnade för externa servrar och dirigera dem till den lokala proxyn efter att den har fixat till protokollskillnaderna.

6.19 Mobil IP

Termen IP-mobilitet beskriver förmågan att för en dator flytta sina nätverksanslutningar från en punkt på Internet till en annan utan att ändra sin IP-adress eller tappa anslutningen. Vanligtvis när en IP-dator byter anslutningspunkt så måste den även byta IP-adress. IP-mobilitet övervinner detta problem genom att allokera en fix IP-adress till den mobila datorn och använda IP-inkapsling (tunnling) med automatisk routing för att se till att datagrammen som är ämnade för den routas till den IP-adress som den verkligen använder.

Ett projekt är igång för att ta fram ett komplett paket med verktyg för IP-mobilitet i Linux. Information om projektet kan fås på Linux Mobile IP Home Page.

6.20 Multicast

Med IP-multicasting kan datagram routas till ett godtyckligt antal IP-datorer på olika IP-nätverk samtidigt. Denna mekanism kan till exempel användas för att sända broadcastmaterial, som tex video eller ljud, till ett stort antal datorer på Internet samtidigt utan att var och en av dessa datorer behöver belasta nätverket med en egen `kopia' av materialet.

Kompileringsalternativ för Kärnan:

Networking options  --->
        [*] TCP/IP networking
        ....
        [*] IP: multicasting

Man behöver även ett paket med verktyg och göra mindre nätverkskonfiguration. Ett ställe att hämta information om hur man installerar dessa för Linux finns på: www.teksouth.com.

6.21 NAT - Översättning av nätverksadresser (Network Address Translation)

NAT är en standardiserad storebror till Linux IP-maskering. Det finns en detaljerad specifikation i RFC1631. NAT tillhandahåller funktioner som IP-maskering inte gör vilket gör det mer passande för användning i brandväggsroutrar hos företag och i större installationer.

En alpha-implementation av NAT för Linux 2.0.29 kärnan har utvecklats av Michael Hasenstein, Michael.Hasenstein@informatik.tu-chemnitz.de. Michaels dokumentation och implementation finn på 6.14 IPX (AF_IPX)

IPX-protokollet används mest i LAN-omgivningar med Novell NetWare(tm). Linux har stöd för att kunna agera som en nätverksändpunkt, eller som en router för IPX.

Kompileringsalternativ för Kärnan:

Networking options  --->
    [*] The IPX protocol
    [ ] Full internal IPX network

IPX-protokollet och NCPFS täcks mer detaljerat i IPX-HOWTO.

6.15 IPv6

Precis när man tror att man förstår hur IP-nätverk fungerar så ändras reglerna! IPv6 är en förkortning av Internet Protocol version 6. IPv6 kan ibland också kallas för IPng (IP next generation) (SvÖ). IPv6 utvecklades i huvudsak för att ta bort oron i Internetvärlden att det snart är slut på IP-adresser som kan delas ut. IPv6-adresserna är 16 bytes stora (128 bits). IPv6 har ett antal andra ändringar, mest förenklingar, som kommer att göra IPv6-nätverk lättare att underhålla än IPv4-nätverk.

Linux har redan en fungerande, men inte komplett, IPv6-implementation i version 2.1.* av kärnan.

Om man vill experimentera med nästa generations Internetteknik, eller om man behöver den, så bör man läsa IPv6-FAQ som finns på www.terra.net.

6.16 ISDN

Integrated Services Digital Network (ISDN) är en serie standarder som specificerar ett generellt switchat digitalt nätverk. En ISDN-`uppringning' skapar en synkron punkt till punkt förbindelse till destinationen. ISDN körs normalt på höghastighetslänkar som delas in i ett antal diskreta kanaler. Det finns två olika typer av kanaler, `B-kanaler' som bär användardatan och `D-kanaler' som används för kontrollinformation till ISDN-växeln. I Australien till exempel så kan ISDN levereras med en 2Mbps-länk som delas in i 30 diskreta 64kbps B-kanaler och en 64kbps D-kanal. Valfritt antal kanaler kan användas samtidigt i valfri kombination. Man kan till exempel upprätta 30 olika anslutningar på 64kbps var till 30 olika destinationer, eller så kan man upprätta 15 olika anslutningar på 128kbps var till 15 olika destinationer (med två kanaler per anslutning), eller bara ett litet antal kanaler och lämna resten vilande. En kanal kan användas till både inkommande och utgående anslutningar. Den ursprungliga avsikten med ISDN var att telefonbolagen ville kunna erbjuda en enda datatjänst som kunde ge antingen telefon- (digitalt) eller datatjänster till hem och kontor utan att kunden skulle behöva ändra någon konfiguration.

Det finns några olika sätt att ansluta en dator till en ISDN-tjänst. Ett sätt är att använda enhet som heter `Terminaladapter' som ansluter till en `Network Terminating Unit' vilken telefonbolaget har installerat i samband med ISDN-tjänsten och som har ett antal seriella gränssnitt. Ett av de gränssnitten används för att skicka kommandon som upprättar en förbindelse och konfiguration och de andra är anslutna till nätverket som skall användas. Linux fungerar i denna omgivningen utan modifikation, man behandlar bara terminaladaptern som vilken annan seriell enhet som helst. Ett annat sätt, vilket är så som kärnan stöder ISDN, är att installera ett ISDN-kort i Linuxburken och sedan låta mjukvaran i Linux hantera protokollen och upprätta förbindelser.

Kompileringsalternativ för Kärnan:

ISDN subsystem  --->
        <*> ISDN support
        [ ] Support synchronous PPP
        [ ] Support audio via ISDN
        < > ICN 2B and 4B support
        < > PCBIT-D support
        < > Teles/NICCY1016PC/Creatix support

Implementationen av ISDN i Linux stöder ett antal olika interna ISDN-kort. Dessa finns listade i konfigurationen för kärnan:

Några av dessa kort kräver att man laddar hem särskild programvara för att de skall fungera. Det finns ett separat verktyg att göra detta med.

Alla detaljer om hur man konfigurerar ISDN för Linux finns tillgängligt i katalogen /usr/src/linux/Documentation/isdn/ och en FAQ för isdn4linux finns på www.lrz-muenchen.de.

En anmärkning om PPP. PPP-protokollen fungerar antingen för asynkrona eller synkrona seriella linor. PPP-daemonen som vanligtvis levereras med Linux, `pppd', stöder endast asynkront läge. Om man vill köra PPP-protokoll via ISDN så måste man använda en särskilt modifierad version. Var man hittar den finns beskrivet i dokumentationen som nämns ovan.

6.17 IP-maskering (IP Masquerade).

Många har en enkel uppringd anslutning till Internet. Nästan alla som använder den typen av konfiguration allokeras en enda IP-adress av ISPn. Det räcker normalt för att en dator skall ha full åtkomst till Internet. IP-maskering är ett smart trix som gör det möjligt att ha många maskiner som använder en enda IP-adress genom att låta de andra datorerna se ut som, därav termen maskering, maskinen som har den uppringda anslutningen. Det finns dock en liten brist, maskeringsfunktionen fungerar nästan alltid bara i ena riktningen. Det betyder att de förklädda datorerna kan ansluta utåt, men de kan inte ta emot nätverksanslutningar från andra datorer. Detta betyder att vissa nätverkstjänster inte fungerar, tex talk, och andra som till exempel ftp måste konfigureras att köra i passivt (PASV) läge för att fungera. Lyckligtvis så fungerar de vanligaste tjänsterna som till exempel telnet, World Wide Web och irc utmärkt.

Kompileringsalternativ för Kärnan:

Code maturity level options  --->
    [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
    [*] Network firewalls
    ....
    [*] TCP/IP networking
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: masquerading (EXPERIMENTAL)

Vanligtvis har man sin Linuxburk konfigurerad för uppringd SLIP eller PPP, precis som om det var en friståenda dator. Dessutom så skulle den ha en ytterligare nätverksenhet konfigurerad, kanske Ethernet som är konfigurerat med en reserverad nätverksadress. Datorerna som skall förklädas skulle då finnas på det nätverket. Var och en av de datorerna skulle ställa in IP-adressen på Linuxboxens Ethernet-kort som `default gateway' eller router. Observera att de andra datorerna (de som inte har den uppringda anslutningen) inte behöver konfigureras med IP-maskering, de behöver endast veta vilken dator som är `default gateway' (SvÖ).

En typisk konfiguration:

-                                   -
 \                                  | 192.168.1.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |                | Linux | .1.1 |
NET =================| masq  |------|
    |    PPP/slip    | router|      |  --------
   /                 ---------      |--| host |
  /                                 |  |      |
 /                                  |  --------
-                                   -

De viktigaste kommandona för denna konfiguration är:

# Network route for ethernet
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
#
# Default route to the rest of the internet.
route add default ppp0
#
# Cause all hosts on the 192.168.1/24 network to be masqueraded.
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 

Man kan hitta mer information om detta på IP Masquerade Resource Page eller i IP-Masquerade-MINI-HOWTO.

6.18 IP Transparent Proxy

Med IP transparent proxy kan man omdirigera servrar eller tjänster ämnade för en annan dator till tjänsterna på denna maskinen. Detta kan till exempel vara användbart om man har en Linuxburk som router och även tillhandahåller en proxy-server. Då skulle man omdirigera alla anslutningar ämnade för en avlägsen tjänst till den lokala proxy-servern.

Kompileringsalternativ för Kärnan:

Code maturity level options  --->
        [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
        [*] Network firewalls
        ....
        [*] TCP/IP networking
        ....
        [*] IP: firewalling
        ....
        [*] IP: transparent proxy support (EXPERIMENTAL)

Man konfigurerar transparent proxy med kommandot ipfwadm.

Ett exempel som kan vara användbart följer:

ipfwadm -I -a accept -D 0/0 telnet -r 2323
Detta exempel gör att alla försök att upprätta en telnet-anslutning (port 23) till någon dator kommer att omdirigeras till port 2323 på denna dator. Om man kör en tjänst på den porten så kan man vidarebefodra telnet-anslutningar, logga dem eller göra vadhelst man önskar.

Ett mer intressant exempel är att omdirigera all http-trafik genom en lokal cache. Men protokollet som används av proxy-servrar är annorlunda än vanlig http: där en klient ansluter till www.server.com:80 och frågar efter /sökväg/sida/, men när den ansluter till en lokal cache kontaktar den proxy.local.domain:8080 och frågar efter www.server.com/path/page.

För att filtrera en http-förfrågan genom den lokala proxyn så behöver man lägga till det protokollet genom att köra en liten server, som heter transproxy (som man hittar på www). Man kan då köra transproxy på port 8081 och ge följande kommando:

ipfwadm -I -a accept -D 0/0 80 -r 8081
Programmet transproxy kommer då att ta emot alla anslutningar ämnade för externa servrar och dirigera dem till den lokala proxyn efter att den har fixat till protokollskillnaderna.

6.19 Mobil IP

Termen IP-mobilitet beskriver förmågan att för en dator flytta sina nätverksanslutningar från en punkt på Internet till en annan utan att ändra sin IP-adress eller tappa anslutningen. Vanligtvis när en IP-dator byter anslutningspunkt så måste den även byta IP-adress. IP-mobilitet övervinner detta problem genom att allokera en fix IP-adress till den mobila datorn och använda IP-inkapsling (tunnling) med automatisk routing för att se till att datagrammen som är ämnade för den routas till den IP-adress som den verkligen använder.

Ett projekt är igång för att ta fram ett komplett paket med verktyg för IP-mobilitet i Linux. Information om projektet kan fås på Linux Mobile IP Home Page.

6.20 Multicast

Med IP-multicasting kan datagram routas till ett godtyckligt antal IP-datorer på olika IP-nätverk samtidigt. Denna mekanism kan till exempel användas för att sända broadcastmaterial, som tex video eller ljud, till ett stort antal datorer på Internet samtidigt utan att var och en av dessa datorer behöver belasta nätverket med en egen `kopia' av materialet.

Kompileringsalternativ för Kärnan:

Networking options  --->
        [*] TCP/IP networking
        ....
        [*] IP: multicasting

Man behöver även ett paket med verktyg och göra mindre nätverkskonfiguration. Ett ställe att hämta information om hur man installerar dessa för Linux finns på: www.teksouth.com.

6.21 NAT - Översättning av nätverksadresser (Network Address Translation)

NAT är en standardiserad storebror till Linux IP-maskering. Det finns en detaljerad specifikation i RFC1631. NAT tillhandahåller funktioner som IP-maskering inte gör vilket gör det mer passande för användning i brandväggsroutrar hos företag och i större installationer.

En alpha-implementation av NAT för Linux 2.0.29 kärnan har utvecklats av Michael Hasenstein, Michael.Hasenstein@informatik.tu-chemnitz.de. Michaels dokumentation och implementation finn på