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.
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
.
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 MichiganFö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
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.
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å.
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.
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.
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.
/etc/rc.d/rc.inet1
fil..AppleDesktop
och Network Trash Folder
.
Sedan för varje katalog som man besöker så kommer den att skapa en
.AppleDouble
under dem så att den kan spara diverse information. Så man bör
tänka efter innan man exporterar /
, man kommer att ha det skoj när man
städar upp efteråt./proc/net/
om man behöver den.
En mycket mer detaljerad information om hur man konfigurerar Appletalk för Linux finns i Anders Brownworths Linux Netatalk-HOWTO sida på thehamptons.com.
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.
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
.
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.
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
.
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
.
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.
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
#
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 *
#
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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
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.
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å
Linux IP Network Address Web Page
Nyare Linux 2.1.* kärnor har också viss NAT-funktionalitet i routingalgoritmen.
AF_NETROM
)
Enhetsnamn för NetRom är `nr0
', `nr1
', osv.
Kompileringsalternativ för Kärnan:
Networking options --->
[*] Amateur Radio AX.25 Level 2
[*] Amateur Radio NET/ROM
Protokollen AX25, Netrom och Rose finns beskrivna i
AX25-HOWTO.
Dessa protokoll används av radioamatörer i hela världen i experiment med
paketradio.
Det mesta arbetet med implementationen av dessa protokoll har gjorts av
Jonathon Naylor, jsn@cs.nott.ac.uk
.
Enhetsnamn för PLIP är `plip0
', `plip1
and plip2
.
Kompileringsalternativ för Kärnan:
Networking options --->
<*> PLIP (parallel port) support
PLIP, är som SLIP i den mening att det används för att skapa en punkt till punkt nätverksförbindelse mellan två maskiner. Men det skiljer sig genom att det är designat för att använda de parallella skrivarportarna på datorn istället för de seriella (ett kabelschema finns längre fram i dokumentet). Eftersom det är möjligt att överföra mer än en bit åt gången med en parallellport, så är det möjligt att uppnå högre hastigheter med PLIP-gränssnittet än vad man gör med seriell enhet. Dessutom kan även den enklaste av alla parallellportar, skrivarporten, användas i stället för att man skall behöva köpa jämförelsevis dyra 16550AFN UARTs till de seriella portarna. PLIP använder dock mycket CPU-tid jämfört med en seriell länk och är naturligtvis inget bra val om man kan få tag på några billiga Ethernet-kort, men det fungerar om inget annat finns tillgängligt och det fungerar dessutom ganska bra. Man kan förvänta sig en överföringshastighet på ungefär 20 kB/s när en länk fungerar bra.
PLIP-drivrutinerna slåss med parallell-drivrutinen om hårdvaran. Om man vill använda båda drivrutinerna så skall man kompilera båda som moduler så kan man välja vilken port man skall använda för PLIP och vilka portar man skall använda för skrivardrivrutinen. Se Modules-HOWTO för mer information om hur man konfigurerar moduler till kärnan.
Notera att vissa bärbara datorer använder chipsets som inte fungerar med PLIP därför att de inte tillåter vissa kombinationer av signaler som PLIP behöver, som skrivare inte använder.
Linux PLIP-gränssnitt är kompatibelt med Crynwyr Packet Driver PLIP vilket betyder att man kan ansluta sin Linuxburk till en DOS-maskin som kör en annan typ av TCP/IP via PLIP.
I 2.0.* kärnor är PLIP-enheterna mappade mot I/O-port och IRQ som följer:
device i/o IRQ
------ ----- ---
plip0 0x3bc 5
plip1 0x378 7
plip2 0x278 2
Om man inte har parallellportar som stämmer överens med någon av ovanstående
kombinationer så kan man ändra en ports IRQ med kommandot ifconfig och
parametern `irq
'. Man måste då slå på IRQ på skrivarportarna i sitt ROM
BIOS (om det stöder det).
I senare 2.1.* kärnor med Plug'n'Play stöd så allokeras PLIP-enheterna sekvensiellt när de hittas precis som Ethernet-enheterna.
När man kompilerar kärnan är det en fil som man kanske behöver titta i för att
konfigurera PLIP. Filen är /usr/src/linux/driver/net/CONFIG
och
den innehåller PLIP timrar i millisekunder. De förvalda är antagligen ok i
de flesta fall. Man måste antagligen öka på dem om man har en särskilt långsam
dator, då man faktiskt skall öka timrarna på den andra datorn. Det finns
ett program plipconfig med vilket man kan ändra dessa timerinställningar
utan att kompilera om kärnan. Det kommandot följer med i många
Linuxdistributioner.
För att konfigurera ett PLIP-gränssnitt så måste man lägga till
följande rader i sin rc
-fil för nätverket:
#
# Attach a PLIP interface
#
# configure first parallel port as a plip device
/sbin/ifconfig plip0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# End plip
Där:
representerar ens egen IP-adress.
representerar IP-adress på den andra maskinen.
Parametern pointopoint har samma betydelse som för SLIP, den specificerar adressen på maskinen i andra änden av länken.
I nästan alla fall kan man behandla PLIP-gränssnittet som om det var ett SLIP-gränssnitt, förutom att varken dip eller slattach behöver, eller kan användas.
Mer information om PLIP kan hittas i: PLIP-mini-HOWTO
Enhetsnamn för PPP är `ppp0
', `ppp1
, osv. Enheter numreras
sekvensiellt och den första enheten som konfigureras får `ppp0
'.
Kompileringsalternativ för Kärnan:
Networking options --->
<*> PPP (point-to-point) support
Detaljer om PPP-konfiguration finns i PPP-HOWTO.
Om man har en semi-permanent anslutning till nätet och vill att ens maskin automatiskt skall återuppta PPP-anslutningen om den bryts så finns det ett enkelt trix som gör detta:
Konfigurera PPP så att det kan startas genom att root
-användaren ger
kommandot:
# pppd
Se till att `-detach
' parametern finns konfigurerad i filen
/etc/ppp/options
. Sedan skall följande rader läggas in i filen
/etc/inittab
, tillsammans med getty-definitionerna:
pd:23:respawn:/usr/sbin/pppd
Detta gör så att programmet init håller koll på pppd och automatiskt
startar om det ifall det dör.
AF_ROSE
)
Enhetsnamn för Rose är `rs0
', `rs1
', osv. i 2.1.*
kärnor.
Rose finns endast i 2.1.*
kärnor.
Kompileringsalternativ för Kärnan:
Networking options --->
[*] Amateur Radio AX.25 Level 2
[*] Amateur Radio NET/ROM
Protokollen AX25, Netrom och Rose finns beskrivna i
AX25-HOWTO.
Dessa protokoll används av radioamatörer i hela världen i experiment med
paketradio.
Det mesta arbetet med implementationen av dessa protokoll har gjorts av
Jonathon Naylor, jsn@cs.nott.ac.uk
.
SAMBA är en implementation av protokollet `Session Management Block'. Med SAMBA kan system från bland annat Microsoft använda diskar och skrivare i en Linuxbox.
Detaljer om SAMBA och dess konfiguration finns i SMB-HOWTO.
Enhetsnamn för SLIP är `sl0
', `sl1
' osv. Enheter numreras
sekvensiellt och den första enheten som konfigureras får `sl0
'.
Kompileringsalternativ för Kärnan:
Network device support --->
[*] Network device support
<*> SLIP (serial line) support
[ ] CSLIP compressed headers
[ ] Keepalive and linefill
[ ] Six bit SLIP encapsulation
Med SLIP kan man använda TCP/IP över en seriell lina, som kan vara en telefonledning och modem, eller en hyrd ledning av något slag. För att kunna använda SLIP behöver man ha tillgång till en SLIP-server i sitt närområde. Många universitet och företag i hela världen tillhandahåller SLIP-åtkomst.
SLIP använder de seriella portarna på datorn för att bära IP-datagram. För att göra detta måste det ha kontroll över de seriella enheterna. SLIP-enheter benämns med sl0, sl1 osv. Hur motsvarar detta de seriella enheterna? Nätverkskoden använder vad som heter ett ioctl-anrop (i/o control) för att ändra de seriella enheterna till SLIP-enheter. Det finns två program som kan göra detta, de heter dip och slattach.
dip är ett smart program som kan ställa in hastigheten på den seriella enheten, kommendera modemet att ringa upp den andra ändan av länken, automatiskt logga in på servern, söka efter meddelanden som man får från servern och ta fram information från dem som tex IP-adress och dessutom kan programmet utföra ioctl-kommandot som behövs för att sätta den seriella porten i SLIP-läge. dip har ett kraftfullt scriptspråk i vilket man kan automatisera sitt inloggningsförfarande.
Programmet finns på: sunsite.unc.edu.
För att installera det, försök med följande:
#
# cd /usr/src
# gzip -dc dip337o-uri.tgz | tar xvf -
# cd dip-3.3.7o
<edit Makefile>
# make install
#
Makefile
antar att det finns en grupp som heter uucp, men om man
vill kan man ändra det till dip eller SLIP beroende på sin
konfiguration.
I motsats till dip så är slattach ett väldigt enkelt program som är väldigt enkelt att använda, men det är inte så sofistikerat som dip. Det har inte något scriptspråk och allt det gör är att konfigurera den seriella enheten som en SLIP-enhet. Det antar att man har all information man behöver och att den seriella länken är upprättad när man kör programmet. slattach är idealiskt att använda om man har en permanent förbindelse till en server, till exempel en fysisk kabel eller en hyrd ledning.
Man skulle använda dip om man har en uppringd förbindelse, eller någon annan temporär förbindelse, till sin SLIP-server. Man skulle använda slattach om man har en hyrd ledning mellan sin maskin och SLIP-servern och när man inte behöver göra något särskilt för att förbindelsen skall fungera. Se avsnittet `Permanent SLIP-anslutning' för mer information.
Att konfigurera SLIP är ungefär som att konfigurera ett Ethernet-gränssnitt ( Läs avsnittet `Att konfigurera en Ethernet-enhet' ovan). Det finns dock vissa viktiga skillnader.
Först och främst så är SLIP-länkar olika Ethernet-nätverk i den meningen att det alltid endast finns två datorer på nätverket, en i varje ända av länken. Till skillnad från Ethernet, som är tillgängligt så fort man är inkopplad, så måste man kanske, beroende på typen av länk, initialisera anslutningen på något speciellt sätt.
Om man använder dip så gör man det normalt inte vid systemstarten, utan senare när man är redo att använda länken. Det är möjligt att automatisera den processen. Om man använder slattach så vill man antagligen lägga till några rader i sin rc.inet1-fil. Detta beskrivs snart.
Det finns två huvudtyper av SLIP-servrar: Dynamisk IP-adress servrar och statisk IP-adress servrar. Nästan alla SLIP-servrar presenterar en prompt där man skall logga in med användarnamn och lösenord. dip kan logga in automatiskt.
En statisk SLIP-server är en server i vilken man har fått en IP-adress
som är ens egen. Varje gång man ansluter till servern så konfigurerar man sin
SLIP-port med den adressen. Den statiska SLIP-servern kommer att svara på
modemuppringningen, eventuellt fråga efter användarnamn och lösenord, och sedan
routa alla datagram ämnade för ens IP-adress genom den anslutningen. Om man har
en statisk server, så kanske man vill lägga in rader med sitt datornamn och sin
IP-adress (eftersom man vet vad den kommer att vara) i sin fil
/etc/hosts/
. Man bör också konfigurera lite andra filer, såsom
rc.inet2
, host.conf
, resolv.conf
,
/etc/HOSTNAME
och rc.local
. Kom ihåg att när man
konfigurerar rc.inet1
så behöver man inte lägga till några särskilda
kommandon för SLIP eftersom dip sköter om allt som behöver göras där. Man
behöver dock ge dip all nödvändig information så att det kan konfigurera
gränssnittet efter det att det har upprättat förbindelsen och loggat in på
SLIP-servern.
Om det är såhär ens SLIP-server fungerar så kan man gå vidare till avsnittet `Att använda dip' för att få reda på hur man konfigurerar dip.
En dynamisk SLIP-server är en server där man slumpvis allokeras en IP-adress, från en pool med adresser, varje gång man loggar på. Detta betyder att det inte finns någon garanti för att man har en viss adress varje gång och att adressen kan användas av någon annan efter det att man har loggat av. Administratören för SLIP-servern har angett en mängd IP-adresser där servern väljer den första lediga när den får en ny anslutning varefter den guidar användaren igenom loginprocessen och sedan skriver ett välkomstmeddelande som innehåller IP-adressen som sedan används under resten av anslutningen.
Konfigurationen för denna typ av server liknar den för en statisk server förutom att man måste lägga till ett steg där man tar emot IP-adressen som servern har allokerat och konfigurera SLIP-enheten med den.
Återigen så gör dip det hårda jobbet och nyare versioner är tillräckligt smarta för att inte bara logga in, utan även ta reda på IP-adressen och spara den så att man kan konfigurera SLIP-enheten med den.
Om det är såhär ens SLIP-server fungerar så kan man gå vidare till avsnittet `Att använda dip' för att få reda på hur man konfigurerar dip.
Som nämnts tidigare så är dip ett kraftfullt program som kan förenkla och automatisera processen där man ringer upp SLIP-servern, loggar in, aktivera anslutningen och konfigurera SLIP-enheter med lämpliga ifconfig och route kommandon.
För att använda dip så skall man skriva ett `dip script', som formellt är
en lista av kommandon som dip förstår och som talar om för dip hur
det skall utföra varje sak som man vill att det skall utföra. Se
sample.dip
för att få en aning om hur det fungerar. dip är ett ganska
kraftfullt program med många alternativ. Istället för att gå in på alla här så
är det lämpligt att titta på manualbladet, README- och exempelfiler för
dip.
Exempelfilen sample.dip
förutsätter att man använder en statisk
SLIP-server, där man vet sin IP-adress i förväg. För dynamiska SLIP-servrar så
har nyare versioner av dip ett kommando som automatiskt läser och
konfigurerar SLIP-enheten med IP-adressen som man allokeras. Följande exempel
är en modifierad version av sample.dip
som kom med dip337j-uri.tgz
och kan vara en bra utgångspunkt. Det kan vara bra att spara det som
/etc/dipscript
och sedan ändra det efter behov:
#
# sample.dip Dialup IP connection support program.
#
# This file (should show) shows how to use the DIP
# This file should work for Annex type dynamic servers, if you
# use a static address server then use the sample.dip file that
# comes as part of the dip337-uri.tgz package.
#
#
# Version: @(#)sample.dip 1.40 07/20/93
#
# Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
#
main:
# Next, set up the other side's name and address.
# My dialin machine is called 'xs4all.hacktic.nl' (== 193.78.33.42)
get $remote xs4all.hacktic.nl
# Set netmask on sl0 to 255.255.255.0
netmask 255.255.255.0
# Set the desired serial port and speed.
port cua02
speed 38400
# Reset the modem and terminal line.
# This seems to cause trouble for some people!
reset
# Note! "Standard" pre-defined "errlevel" values:
# 0 - OK
# 1 - CONNECT
# 2 - ERROR
#
# You can change those grep'ping for "addchat()" in *.c...
# Prepare for dialing.
send ATQ0V1E1X4\r
wait OK 2
if $errlvl != 0 goto modem_trouble
dial 555-1234567
if $errlvl != 1 goto modem_trouble
# We are connected. Login to the system.
login:
sleep 2
wait ogin: 20
if $errlvl != 0 goto login_trouble
send MYLOGIN\n
wait ord: 20
if $errlvl != 0 goto password_error
send MYPASSWD\n
loggedin:
# We are now logged in.
wait SOMEPROMPT 30
if $errlvl != 0 goto prompt_error
# Command the server into SLIP mode
send SLIP\n
wait SLIP 30
if $errlvl != 0 goto prompt_error
# Get and Set your IP address from the server.
# Here we assume that after commanding the SLIP server into SLIP
# mode that it prints your IP address
get $locip remote 30
if $errlvl != 0 goto prompt_error
# Set up the SLIP operating parameters.
get $mtu 296
# Ensure "route add -net default xs4all.hacktic.nl" will be done
default
# Say hello and fire up!
done:
print CONNECTED $locip ---> $rmtip
mode CSLIP
goto exit
prompt_error:
print TIME-OUT waiting for sliplogin to fire up...
goto error
login_trouble:
print Trouble waiting for the Login: prompt...
goto error
password:error:
print Trouble waiting for the Password: prompt...
goto error
modem_trouble:
print Trouble occurred with the modem...
error:
print CONNECT FAILED to $remote
quit
exit:
exit
Ovanstående exempel förutsätter att man kontaktar en dynamisk SLIP-server,
om man kontaktar en statisk server så bör sample.dip
som följer med
dip337-uri.tgz fungera bra.
Där dip får kommandot get $local så söker det igenom den inkommande texten efter en textsträng som ser ut som en IP-adress, dvs tal som är separerade med '.'-tecken. Denna modifiering gjordes speciellt för att fungera med dynamiska SLIP-servrar, så att processen att läsa in IP-adressen från servern skulle bli automatiserad.
Ovanstående exempel skapar automatiskt en `default route' via SLIP-länken, om det inte är detta man vill, om man tex har en Ethernet-anslutning som skall vara `default route, så tar man bort kommandot default från scriptet.
Om man, då scriptet kört färdigt, ger kommandot ifconfig så ser man att det finns en enhet sl0. Detta är SLIP-enheten. Om så behövs så kan man modifiera dess konfiguration manuellt efter det att dip har kört färdigt, genom att använda kommandona ifconfig och route.
Notera att med dip kan man välja ett antal olika protokoll att använda med
mode
-kommandot, det vanligaste är cSLIP för SLIP med kompression.
Notera att båda ändar av länken måste komma överens, så man måste välja det som
ens server är inställt på.
Ovanstående exempel är hyfsat stabilt och skall klara av de flesta felen. Titta annars i manualbladet för dip för mer information. Naturligtvis så kan man skriva scriptet så att det till exempel försöker ringa upp servern igen om det inte lyckas få en anslutning inom en given tid, eller till och med försöka med en serie olika servrar om man har tillgång till mer än en.
Om man har en kabel mellan två maskiner, eller är lyckligt lottad och har en hyrd ledning, eller någon annan permanent seriell anslutning mellan sin maskin och en annan, så behöver man inte besvära sig med att använda dip för att sätta upp en seriell länk. slattach är ett väldigt enkelt verktyg att använda som har precis tillräckligt med funktionalitet för att konfigurera en anslutning.
Eftersom anslutningen är permanent så vill man lägga till några kommandon i sin
rc.inet1
-fil. Det enda man egentligen behöver göra för en permanent
anslutning är att konfigurera den seriella enheten till korrekt hastighet och
ställa in den i SLIP-läge. Med slattach kan man göra detta i ett enda kommando. Man
lägger till följande i sin rc.inet1
-fil:
#
# Attach a leased line static SLIP connection
#
# configure /dev/cua0 for 19.2kbps and cslip
/sbin/slattach -p cslip -s 19200 /dev/cua0 &
/sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# End static SLIP.
Där:
representerar IP-adressen.
representerar the IP-adressen i andra ändan.
slattach allokerar den första icke allokerade SLIP-enheten till den specificerade seriella enheten. slattach börjar börjar med sl0. Därför så parar slattach ihop sl0 med den specifierade seriella enheten och därefter sl1 osv.
Med slattach kan man konfigurera ett antal olika protokoll med parametern -p
.
Vanligtvis så använder man SLIP eller cSLIP beroende på om man vill
ha kompression eller inte, men båda sidor måste vara överens.
Om man har en maskin, som kanske är nätverksansluten, som man vill att andra skall kunna ansluta till och använda nätverkstjänster, så skall man konfigurera sin maskin som en server. Om man vill använda SLIP som protokoll så har man för närvarande tre valmöjligheter för hur man skall konfigurera Linuxboxen som en SLIP-server. Mitt råd skulle vara att använda det som presenteras först , sliplogin, eftersom det verkar vara det enklaste att konfigurera och förstå, men jag kommer att presentera en sammanfattning av varje så att man kan bilda sig en egen uppfattning.
sliplogin är ett program som man kan använda istället för det normala login-shellet för SLIP-användare som konverterar terminallinjen till en SLIP-länk. Man kan med sliplogin konfigurera sin Linuxbox som antingen en statisk adressserver, användare får samma IP-adress varje gång de ansluter, eller som en dynamisk adresserver där användare inte nödvändigtvis får samma IP-adress varje gång de ansluter.
De som ansluter kommer att logga in på vanligt vis med användarnamn och
lösenord, men istället för att få ett shell efter de loggat in så exekveras
sliplogin, som söker i sin konfigurationsfil (/etc/slip.hosts
) efter en rad
med ett loginnamn som motsvarar det som använts vid inloggningen. Om detta
hittas så konfigurerar sliplogin linjen som en ren 8 bitars länk och använder
ioctl för att konvertera länken till en SLIP-länk. Sedan återstår ett steg
där sliplogin kör ett shellscript som konfigurerar SLIP-gränssnittet med relevant
IP-adress, nätmask och routing. Scriptet heter normalt
/etc/slip.login
, men på liknande sätt som för getty om man har
särskilda användare som behöver speciell initiering, så kan man skapa script
som heter /etc/slip.login.loginname
som körs istället för det
allmänna.
Det finns antingen tre eller fyra filer att konfigurera för att sliplogin skall fungera. Jag skall i detalj gå igenom hur man får tag på programvara och hur man konfigurerar detta. Filerna är:
/etc/passwd
, för användarkonton.
/etc/slip.hosts
, för att innehålla information som är unik för
varje användare.
/etc/slip.login
, vilken tar hand om konfiguration av routing.
/etc/slip.tty
, vilken endast behövs om man skall konfigurera en
server som skall använda dynamisk adressallokering och innehåller en
tabell med adresser att allokera.
/etc/slip.logout
, vilken innehåller kommandon för att städa upp
efter det att en användare har lagt på eller loggat ut.
Vissa kanske redan har sliplogin-paketet installerat som en del av sin distribution, om inte så kan sliplogin hämtas ifrån: sunsite.unc.edu. Tar-filen innehåller både källkod, kompilerade körbara filer och manualblad.
För att se till att bara auktoriserade användare skall kunna köra sliplogin, så bör
man lägga till en rad i filen /etc/group
, ungefär som följande:
..
slip::13:radio,fred
..
När man installerar sliplogin-paketet så kommer Makefile
att ändra ägargruppen
för kommandot sliplogin till slip
, och det betyder att endast användare som
tillhör den gruppen kan köra programmet. I exemplet ovan kan endast radio
och fred
köra sliplogin.
För att installera binärfilerna i katalogen /sbin
gör man följande:
# cd /usr/src
# gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf -
# cd sliplogin-2.1.1
# <..edit the Makefile if you don't use shadow passwords..>
# make install
Om man vill kompilera om binärfilerna innan man installerar så skall man göra
make clean
innan man kör make install
. Om man vill installera filerna
i någon annan katalog så får man ändra i filen Makefile
under regeln
install.
Läs filen README
som följer med paketet för mer information.
/etc/passwd
för SLIP.Normalt skulle man skapa särskilda login för SLIP-användare i filen
/etc/passwd
. En konvention som ofta följs är att använda hostname
för den anslutande datorn med ett stort `S' i början. Så, till exempel, om den
anslutande datorn heter radio
så kan man lägga en rad i
/etc/passwd
som ser ut såhär:
Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin
Men det spelar egentligen ingen roll vad kontot heter, bara det betyder något för administratören av SLIP-servern.
Notera att användarna inte behöver en särskild hemkatalog, efter som de inte
kommer att få något shell från denna maskinen. Därför duger /tmp
gott.
Notera även att sliplogin används istället för ett normalt shell.
/etc/slip.hosts
Filen /etc/slip.hosts
är filen som sliplogin söker igenom efter rader som
stämmer överens med loginnamnet för att få tag på
konfigurationsdetaljer för denna användare. Det är filen där man specificerar
IP-adressen och nätmasken som kommer att tilldelas användaren. Exempelrader för
två datorer, en statisk konfiguration för radio
och en annan, dynamisk
konfiguration för albert
kan se ut såhär:
#
Sradio 44.136.8.99 44.136.8.100 255.255.255.0 normal -1
Salbert 44.136.8.99 DYNAMIC 255.255.255.0 compressed 60
#
Parametrarna i /etc/slip.hosts
är:
DYNAMIC
så kommer IP-adressen att allokeras baserad på informationen som
finns i filen /etc/slip.tty
. Notera: man måste ha åtminstone
version 1.3 av sliplogin för att detta skall fungera.normal
eller compressed
.Notera att man kan använda antingen datornamn eller IP-adresser för fält 2 och 3. Om man använder datornamn så måste dessa kunna översättas, dvs maskinen måste måste kunna hitta en IP-adress som stämmer överens med datornamnet annars kommer scripet att fallera när det körs. Man kan testa detta genom att försöka öppna en telnet-anslutning till datornamnet, om man får meddelandet `Trying nnn.nnn.nnn...' så kan maskinen hitta en IP-adress. Får man däremot meddelandet `Unknown host' så kan den inte hitta någon IP-adress. Om inte så använder man IP-adresser eller fixar till konfigurationen av sin namnöversättare (se avsnitt `Att konfigurera din Name Resolver').
De vanligaste SLIP-lägena är:
att slå på normal SLIP utan kompression.
att slå på van Jacobsen header compression (cSLIP)
Man kan endast använda en åt gången. För mer information om de andra valmöjligheterna som finns, se manualbladen.
/etc/slip.login
.När sliplogin har hittat en passande rad i /etc/slip.hosts
så kommer
programmet att försöka exekvera filen /etc/slip.login
för att
konfigurera SLIP-gränssnittet med dess IP-adress och nätmask.
Exemplet på en /etc/slip.login
som följer med sliplogin-paketet ser
ut så här:
#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a SLIP line. sliplogin invokes this with
# the parameters:
# $1 $2 $3 $4, $5, $6 ...
# SLIPunit ttyspeed pid the arguments from the slip.host entry
#
/sbin/ifconfig $1 $5 pointopoint $6 mtu 1500 -trailers up
/sbin/route add $6
arp -s $6 <hw_addr> pub
exit 0
#
Scriptet använder helt enkelt kommandona ifconfig och route för att konfigurera SLIP-enheten med dess IP-adress, avlägsen IP-adress och nätmask och sedan skapa en route till den avlägsna adressen via SLIP-enheten. Precis som om man använde kommandot slattach.
Notera också användandet av Proxy ARP för att se till att andra datorer på
samma Ethernet som servern kommer att nå den anslutna datorn. Fältet
<hw_addr>
skall vara hårdvaruadressen på Ethernet-kortet i
maskinen. Om servern inte är ansluten till ett Ethernet-nätverk kan man helt
utelämna denna rad.
/etc/slip.logout
.När anslutningen avslutas, så vill man se till att den seriella enheten
återställs till sitt normala tillstånd så att framtida anslutningar kan logga in
ordentligt. Detta uppnås genom med hjälp av filen /etc/slip.logout
.
Dess format är ganska enkelt och används med samma argument som filen
/etc/slip.login
.
#!/bin/sh -
#
# slip.logout
#
/sbin/ifconfig $1 down
arp -d $6
exit 0
#
Allt den gör är `ta ner' gränssnittet vilket kommer att ta bort routen som skapades tidigare. Den använder också kommandot arp för att ta bort eventuella Proxy ARPs som har skapats, återigen, man behöver inte kommandot arp ifall servern inte är ansluten till ett Ethernet-nätverk.
/etc/slip.tty
.Om man använder dynamisk IP-adressallokering (har någon rad konfigurerad med
DYNAMIC
i /etc/slip.hosts
) så måste man konfigurera filen
/etc/slip.tty
för att lista vilka adresser som tilldelas vilken port.
Man behöver endast denna fil om man vill att servern dynamiskt skall ge
adresser till användare. Formatet är följande:
# slip.tty tty -> IP address mappings for dynamic SLIP
# format: /dev/tty?? xxx.xxx.xxx.xxx
#
/dev/ttyS0 192.168.0.100
/dev/ttyS1 192.168.0.101
#
Vad denna fil säger är att användare som ansluter till porten
/dev/ttyS0
och som har sitt adressfält i filen
/etc/slip.hosts
satt till DYNAMIC
kommer att tilldelas
adressen 192.168.0.100
.
På detta sättet behöver man endast allokera en adress per port förutom för de användare som behöver en egen adress. Detta hjälper till att hålla nere antalet adresser man behöver till ett minimum och undviker slösande.
Låt mig börja med att säga att lite av informationen nedan kom ifrån manualbladet för dip, där det kortfattat beskrivs hur man kör Linux som en SLIP-server. Var också uppmärksam på att det som följer är baserat på paketet dip337o-uri.tgz och antagligen inte gäller för andra versioner av dip.
dip har ett läge när det automatiskt letar upp en rad för den användaren som
körde programmet och konfigurerar den seriella linjen som en SLIP-länk baserat
på informationen som den hittar i filen /etc/diphosts
. Detta läge
aktiveras genom att köra dip som diplogin. Detta är därför sättet på vilket man
använder dip som en SLIP-server, genom att skapa särskilda konton där diplogin
används som login-shell. Det första som skall göras är att göra en symbolisk
länk som följer:
# ln -sf /usr/sbin/dip /usr/sbin/diplogin
Sedan behöver man lägga till rader i filerna /etc/passwd
och
/etc/diphosts
. Raderna är formaterade som följer:
För att konfigurera Linux som en SLIP-server med dip behöver man skapa några särskilda SLIP-konton för användare, där dip används som login-shell. En föreslagen konvention är att låta alla SLIP-konton börja med ett stort `S', tex `Sfredm'.
Ett exempel på en rad för en SLIP-användare i /etc/passwd
ser ut så
här:
Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin
^^ ^^ ^^ ^^ ^^ ^^ ^^
| | | | | | \__ diplogin as login shell
| | | | | \_______ Home directory
| | | | \____________ User Full Name
| | | \_________________ User Group ID
| | \_____________________ User ID
| \_______________________________ Encrypted User Password
\__________________________________________ Slip User Login Name
När användaren har loggat in så utför programmet login, om det hittar och
verifierar användaren ok, kommandot diplogin. dip, när det körs som diplogin, vet
automatiskt att det skall användas som ett login-shell. När det startas som
diplogin så är det första programmet gör att använda funktionsanropet
getuid() för att få användarid för den som körde programmet. Det letar
sedan i filen /etc/diphosts
efter den första raden som passar in på
det användaridt eller namnet på den tty-enhet som anslutningen kom från
och konfigurerar sig själv därefter. Genom att välja om en användare skall få
en rad i filen /etc/diphosts
eller om användaren skall ges den
generella konfigurationen så kan man bygga sin server på så sätt att man kan
ha en blandning av statiskt och dynamiskt tilldelade adresser för användarna.
dip kommer automatiskt att lägga till en Proxy ARP så detta behöver man
inte bry sig om att göra manuellt.
/etc/diphosts
Filen /etc/diphosts
används av dip för att hitta konfigurationer för
avlägsna datorer. Dessa avlägsna datorer kan vara användare som ringer in till
en Linuxbox eller de kan vara datorer som man ringer till ifrån Linuxboxen.
Det generella formatet på /etc/diphosts
är som följer:
..
Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296
..
Fälten är:
login name
: som returnerat av getpwuid(getuid()) eller tty namn.oanvänd
: kompatibilitet med /etc/passwdRemote Address
: IP-adress för den anslutande datorn, antingen
numeriskt eller med namnLocal Address
: IP-adress för denna dator, numeriskt eller med
namnNetmask
: i punkterad decimal notationComment field
: skriv vad du vill här.protocol
: Slip, CSlip osv.MTU
: decimalt talEtt exempel på en rad i /etc/net/diphosts
för en SLIP-användare kan
vara:
Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296
som specificerar en SLIP-länk med en avlägsen adress 145.71.34.2 och MTU på
296, eller:
Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
som specificerar en cSLIP-länk med avlägsen adress 145.71.34.1 och MTU på 1006.
Därför så skall alla användare som man vill tillåta en statiskt allokerad
adress ha en rad i /etc/diphosts
. Om man vill att användare som
ansluter till en viss port skall få en dynamisk allokerad adress så måste man ha
en rad för tty
-enheten och ingen rad för användaren.
Man skall komma ihåg att konfigurera åtminstonde en rad för varje tty
-enhet
som används för SLIP så att det säkert finns en passande konfiguration oavsett
vilket modem de ringer in på.
När användare loggar in får de en normal login och password prompt vid vilken
de skall skriva in sitt SLIP-login och password. Om dessa verifieras ok så
kommer användaren inte se några särskilda meddelanden och användarna skall
endast byta till SLIP-läge på sin sida. Användaren bör ha möjlighet att ansluta
ok och bli konfigurerad med relevanta parametrar från filen diphosts
.
Matt Dillon <dillon@apollo.west.oic.com>
har skrivit ett
programpaket som inte bara ringer in utan också ringer ut med SLIP. Matts paket
är en kombination av små program och scripts som hanterar ens anslutningar. För
detta måste man ha tcsh eftersom åtminstone ett av scripten kräver
detta. Matt tillhandahåller en binär kopia av verktyget expect
eftersom även det behövs av en del av scripten. Man behöver antagligen ha
lite erfarenhet med kommandot expect för att lyckas länka in ok, men
låt inte detta avskräcka.
Matt har skrivit bra med installationsinstruktioner i README-filen så jag tänker inte upprepa dem.
Man kan hämta dSLIP från dess hemsida på:
apollo.west.oic.com
/pub/linux/dillon_src/dSLIP203.tgz
eller från:
sunsite.unc.edu
/pub/Linux/system/Network/serial/dSLIP203.tgz
Läs filen README
och skapa raderna i /etc/passwd
och
/etc/group
innan make install
.
Kompileringsalternativ för Kärnan:
Network device support --->
[*] Network device support
....
[*] Radio network interfaces
< > STRIP (Metricom starmode radio IP)
STRIP är ett protokoll som designats speciellt för en typ av Metricom
radiomodem för ett forskningsprojekt på Stanford University som heter
MosquitoNet Project.
Det finns mycket intressant att läsa där, även om man inte är direkt intresserad
av projektet.
Metricom radiorna kopplas till en seriell port, använder många olika tekniker och klarar av en överföringshastighet på ungefär 100kbps. Information om Metricom radior kan fås på: Metricom Web Server.
För närvarande så stöds inte STRIP av standardverktygen för nätverk, så man måste ladda hem några specialdesignade verktyg från MosquitoNets WWW-server. Detaljer om vad man behöver finns på: MosquitoNet STRIP Page.
En sammanfattning av konfigurationen är att man använder ett modifierat
slattach program för att ställa in den seriella enheten i STRIP-läge
och sedan konfigurera den resulterande `st[0-9]
'-enheten som om det
var en Ethernet-enhet, men med en viktig skillnad. Av tekniska skäl så
stöder inte STRIP ARP-protokollet, så man måste konfigurera ARP-raderna för
var och en av datorerna på sitt subnät manuellt.
Enhetsnamn för Token Ring är `tr0
', `tr1
' osv. Token Ring är ett
standardiserat LAN-protokoll från IBM som undviker kollisioner med en mekanism
som endast tillåter en station på LANet att sända åt gången. En `token' innehas
av en station åt gången och stationen som har `token' får lov att sända. När
den har sänt sin data så skickar den `token' vidare till nästa station. Token
går runt mellan alla aktiva stationer, därav namnet `Token Ring'.
Kompileringsalternativ för Kärnan:
Network device support --->
[*] Network device support
....
[*] Token Ring driver support
< > IBM Tropic chipset based adaptor support
Konfigurationen av Token Ring är identisk med den som görs med Ethernet förutom att man använder andra enhetsnamn.
X.25 är ett paketswitchat protokoll som definieras av C.C.I.T.T.
(en
standardiseringsorganisation som erkänns av de flesta telebolag i världen). En
implementation av X.25 och LAPB håller på att utvecklas och de senaste
2.1.*
kärnor inkluderar detta arbete.
Jonathon Naylor jsn@cs.nott.ac.uk
leder utvecklingen och det har
skapats en mailinglista för att diskutera ämnen relaterade till Linux X.25.
För att prenumerera skall man skicka ett meddelande till
majordomo@vger.rutgers.edu
med texten "subscribe linux-x25
" i
meddelandekroppen.
Tidiga versioner av konfigureringsverktygen kan hämtas från Jonathons ftp-sajt på ftp.cs.nott.ac.uk.
Enhetsnamn för WaveLan är `eth0
', `eth1
', osv.
Kompileringsalternativ för Kärnan:
Network device support --->
[*] Network device support
....
[*] Radio network interfaces
....
<*> WaveLAN support
WaveLan-kortet är ett vitt spektrum av trådlösa LAN-kort. Korten liknar Ethernet-kort mycket och konfigureras på ungefär samma sätt.
Mer information om WaveLan finns på Wavelan.com.