Hier begint de pret. Deze sectie gaat over netwerken, alhoewel nog veel andere taken je staan te wachten.
Netwerken beslaan een veelomvattend onderwerp welke hier niet volledig kan worden behandeld. De referentie hiervoor is de NET-3 HOWTO, en de meeste distributies voorzien in documentatie over het instellen van netwerkservices. Slechts een paar punten zullen hier worden belicht.
Een rappe te-doen lijst voor de services die je wellicht wilt installeren: cron en geplande taken zoals calendar of reminder, Http, Samba telnet/ssh access, anonymous ftp, POP/IMAP server, NFS...
Als je netwerkkaart tijdens de installatie niet werd herkend, maak je dan
geen zorgen: in de meeste gevallen is het óf compatibel met NE2000
óf 3c59x. Geef de opdracht
modprobe ne
of modprobe 3c59x
en kijk of de relevante
module is geladen en voeg vervolgens de volgende regel toe aan
/etc/conf.modules:
alias eth0 ne # of 3c59x
Nu ben je zover netcfg
of een vergelijkbare tool te gaan gebruiken
om de netwerkconfiguratie in te stellen. De relevante bestanden zijn
/etc/HOSTNAME, etc/hosts,
/etc/resolv.conf, /etc/sysconfig/network, en
/etc/sysconfig/network-scripts/ifcfg-eth0; services, te
vinden in /etc/rc.d/init.d zouden
met scripts moeten worden gestart.
Dit is een voorbeeld van etc/hosts:
127.0.0.1 localhost
192.168.1.1 paleo.eocene.net paleo
192.168.1.2 nautilus.eocene.net nautilus
Dit is een voorbeeld van /etc/resolv.conf:
search df.unibo.it,eocene.net
nameserver 195.210.91.100
Dit is /etc/sysconfig/network (Red Hat-afhankelijk):
NETWORKING=false
FORWARD_IPV4=true
HOSTNAME=nautilus.eocene.net
DOMAINNAME=eocene.net
En tenslotte /etc/sysconfig/network-scripts/ifcfg-eth0. Ook dit is Red Hat afhankelijk; het moet uitvoerbaar zijn.
DEVICE=eth0
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
ONBOOT=no
Alhoewel de werkelijke methode van je distributie om netwerkservices in te stellen veel complexer kan zijn, zou het volgende script voldoende moeten zijn om van start te gaan:
#!/bin/sh
# net-up.sh: instellen van netwerktoegang
DEVICE=eth0
IPADDR=192.168.1.100
NETMASK=255.255.255.0
NETWORK=192.168.1.0
GATEWAY=192.168.1.1
ifconfig $DEVICE $IPADDR netmask $NETMASK up
route add -net $NETWORK netmask $NETMASK $DEVICE
route add default gw $GATEWAY
Dit script is handig voor het activeren van netwerktoegang wanneer je een rescue-disk gebruikt. Uiteraard laat het je alleen naar de buitenwereld pingen, ftp-en en telnetten; het zal geen daemon opstarten.
Wanneer je de PC netwerkkaart erin plugt, zal het script /etc/pcmcia/network worden uitgevoerd. Hiervoor is alleen een juiste instelling nodig in /etc/sysconfig/network-scripts/ifcfg-eth0.
Het instellen van een netwerk kan echter wat lastiger zijn. Je moet in feite voorzien in de juiste instellingen voor ieder netwerk waar je een verbinding mee opzet, als ook voor het notebook wanneer het niet met een netwerk is verbonden.
Ik draaide een globale maar functionele oplossing in elkaar. Ik gebruik mijn notebook als een stand-alone machine, verbonden met het net via PPP; thuis met IP-adres 192.168.1.2; en op de universiteit met IP 137.204.x.y. Dus maakte ik voor ieder netwerk een set configuratiebestanden aan; deze worden bewaard in /etc/mobnet. Voor het selecteren van een netwerkomgeving wordt een script gebruikt. Dit is bijvoorbeeld /etc/mobnet/home.cfg:
# /etc/mobnet/home.conf
HOSTNAME=nautilus.eocene.net # volledige hostnaam
DOMAINNAME=eocene.net # je domein
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
FORWARD_IPV4=true
NAMESERVER=195.210.91.100 # vereist
SEARCH=df.unibo.it,eocene.net # optioneel
SERVICES="inet httpd smb sshd"
Dit is mnet
, het script waar ik gebruik van maak om een
netwerkprofile uit te kiezen:
#!/bin/sh
# mnet: script om de configuratie van het "mobiele netwerk" in te stellen
# Laatst gewijzigd: 15 juli 2000
# start of stop services
activate_services()
{
for service in $(echo $SERVICES) ; do
[ -x /etc/rc.d/init.d/$service ] && /etc/rc.d/init.d/$service $1
done
}
# usage
if [ $# = 0 ] ; then
echo "Gebruik: mnet <config name>"
echo "Voorbeeld: mnet office"
exit 1
fi
# controleer of de configuratie voorkomt
if [ ! -e /etc/mobnet/$1.conf ]; then
echo "Deze configuratie bestaat niet."
exit 1
fi
# lees de configuratie in
. /etc/mobnet/$1.conf
# stel de hostnaam in
echo $HOSTNAME > /etc/HOSTNAME
/bin/hostname $HOSTNAME
# stel de naamserver(s) in
cat <<EOF > /etc/resolv.conf
# /etc/resolv.conf
search $SEARCH
nameserver $NAMESERVER
EOF
# stop eerdere services, als die er zijn
if [ -f /etc/mobnet/services.prev ]; then
NEWSERVICES=$SERVICES
. /etc/mobnet/services.prev
activate_services stop
SERVICES=$NEWSERVICES
fi
if [ $1 != "none" ]; then
# stel de netwerkparameters in
cat <<EOF > /etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4=true
HOSTNAME=$HOSTNAME
DOMAINNAME=$DOMAINNAME
GATEWAY=$GATEWAY
GATEWAYDEV=eth0
EOF
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=$IPADDR
NETMASK=$NETMASK
NETWORK=$NETWORK
BROADCAST=$BROADCAST
ONBOOT=no
EOF
/bin/chmod +x /etc/sysconfig/network-scripts/ifcfg-eth0
# kopieer de andere config bestanden
/bin/cp -f /etc/mobnet/hosts.$1 /etc/hosts
/bin/cp -f /etc/mobnet/smb.conf.$1 /etc/smb.conf
echo -n "Voeg de PC netwerkkaart in en druk op <enter> wanneer je klaar bent: "
read
# OK, start nu de services
activate_services start
echo "SERVICES=\"$SERVICES\"" > /etc/mobnet/services.prev
else # het is niet "none"
cat <<EOF > /etc/sysconfig/network
NETWORKING=false
FORWARD_IPV4=false
HOSTNAME=$HOSTNAME
DOMAINNAME=$DOMAINNAME
EOF
/bin/rm -f /etc/sysconfig/network-scripts/ifcfg-eth0*
/sbin/ifconfig eth0 down
echo "SERVICES=$SERVICES" > /etc/mobnet/services.prev
echo "Nu kun je de PC kaart verwijderen."
exit 0
fi
# einde mnet.
Zoals ik al zei, het is globaal opgezet en het is zelfs niet compleet: het kan zijn dat andere bestanden afhankelijk zijn van het netwerk, zoals bv /etc/fstab, /etc/exports, en /etc/printcap. Denk ook aan netwerkprinters en NFS shares. Pas deze oplossing met de allerbelangrijkste elementen gerust aan aan je behoeften.
Een van de meest nuttige taken voor een Linux server. Thans worden de meeste stock kernels standaard met IP-firewalling, masquerading en forwarding geactiveerd; raadpleeg de IP-Masquerade mini-HOWTO als je twijfelt om te leren hoe je ze kunt activeren. Installeer vervolgens ipfwadm (kernels 2.0.x; http://www.xos.nl/linux/ipfwadm/) of ipchains (kernels 2.2.x; http://www.adelaide.net.au/~rustcorp/ipfwchains/ipfwchains.html). Denk er aan de kernelmodules voor de services die je nodig hebt, te activeren, b.v. voor ftp zal je de volgende regel toe moeten voegen aan /etc/rc.d/rc.sysconfig:
/sbin/modprobe ip_masq_ftp
Andere modules zijn gewoonlijk te vinden in /lib/modules/KERNEL-VERSION/ipv4.
Het activeren van IP-masquerading voor andere computers in je lokale netwerk
is erg simpel. Controleer als eerste de netwerk initialisatiescripts
(/etc/sysconfig/network zou de juiste plek hiervoor moeten
zijn) om te zien of hierin een regel met
FORWARD_IPV4=true
staat. Het wordt gebruikt om
/proc/sys/net/ipv4/ip_forward op 1 in te stellen wanneer het
netwerksubsysteem de lucht in gaat.
Voeg deze regels toe aan /etc/rc.d/rc.sysinit:
# default: packets kunnen de buitenwereld niet bereiken
/sbin/ipfwadm -F -p deny
# maak het voor alle computers mogelijk het Internet te bereiken
/sbin/ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0
# sta dit als alternatief alleen toe voor deze twee computers
# /sbin/ipfwadm -F -a m -S 192.168.1.100/24 -D 0.0.0.0/0
# /sbin/ipfwadm -F -a m -S 192.168.1.101/24 -D 0.0.0.0/0
Als je gebruik maakt van een kernel in de serie 2.2.x gebruik dan
ipfwadm-wrapper
in plaats van ipfwadm
om snel van
start te gaan. Meer informatie op
http://ipmasq.cjb.net.
Nu iets om de clientcomputers de ISP te laten bellen; Ik gebruik hiervoor Mserver ( http://cpwright.villagenet.com/mserver/). Wijzig etc/mserver.conf; de enige regels die je zou moeten wijzigen zijn ``checkhost'', ``shadow'', en ``cname''. Definieer dan je verbinding(en). Uiteraard installeer je een geschikte client op de clientcomputers.
Laten we er eens vanuit gaan dat je een verbinding hebt met het Internet via PPP. Zodra je een verbinding tot stand hebt gebracht kan je computer kwetsbaar zijn voor aanvallen van buitenaf. Plaats dit in /etc/hosts.allow:
# sta alleen de toegang toe tot localhost
ALL: 127.
en dit in /etc/hosts.deny:
# ontzeg iedereen de toegang
ALL: ALL
Als je computer onderdeel uitmaakt van een netwerk met directe toegang tot
het Internet, kun je om beveiligingsredenen beter finger, telnet en mogelijk
nog andere services deactiveren;
gebruik ssh
in plaats van telnet. Het te wijzigen bestand is
/etc/inet.conf. Als alternatief kun je netwerktoegang beperken
door het volgende in /etc/hosts.allow te plaatsen:
in.telnetd: 192.168.1., .ander.betrouwbaar.netwerk
in.ftpd: 192.168.1., .ander.betrouwbaar.netwerk
en dit in /etc/hosts.deny:
in.telnetd: ALL
in.ftpd: ALL
Het is gebruikelijk om home-directory's naar de server te exporteren; er doet
zich een probleem voor als een gebruikers-ID en GID op verschillende
computers niet consistent zijn. Als gebruiker guido UID/GID gelijk aan
500 heeft op de server
en UID/GID gelijk aan 512 op de client
,
is het volgende een comfortabele configuratie:
# /etc/exports
/tmp mijn.client.machine(rw)
/home/guido mijn.client.machine(rw,all_squash,anonuid=512,anongid=512)
Bijna dagelijkse routine, maar er is altijd nog wel wat te doen. Als je een verbinding op wilt zetten met Windows 98/NT clients, dacht je er dan wel aan de docs te lezen, en voor het geval dat, wachtwoorden in gewone tekst te activeren? In de distributie zijn .reg bestanden opgenomen voor Win9x/NT/2000; als je clients geen verbinding met de Linux-server kunnen maken, laad ze dan op iedere client.
Samba wordt met een tamelijk compleet voorbeeld van
/etc/smb.conf geleverd, maar vreemd genoeg ontbreekt er
een sectie in waarin wordt getoond hoe verwijderbare media te (un)mounten.
Hiervoor zijn de preexec
en postexec
clausules:
[cdrom]
comment = CD-ROM
path = /mnt/cdrom
public = yes
read only = yes
; mogelijk moet je "root preexec/postexec" gebruiken
preexec = mount /mnt/cdrom
postexec = umount /mnt/cdrom
Bovendien: je weet wat Swat is, nietwaar? Activeer het door deze regel in /etc/inetd.conf toe te voegen:
swat stream tcp nowait.400 root /usr/sbin/swat swat
en dit in /etc/services
:
swat 901/tcp
Herstart inetd
met SIGHUP, en laat je browser verwijzen naar
http://localhost:901
.