Algemene beheertaken

Hier begint de pret. Deze sectie is nogal rondom netwerken gecentreerd, er staan je echter nog veel andere taken te wachten.

Netwerken is een veelomvattend onderwerp wat 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 aangehaald.

Een beknopte lijst met services die je wellicht wilt installeren: cron en getimede taken zoals calendar of reminder, Http, Samba, telnet/ssh toegang, anonymous ftp, POP/IMAP server, NFS...

Netwerkconfiguratie

Maak je geen zorgen als je netwerkkaart tijdens het installeren niet werd herkend: in de meeste gevallen is het of een NE2000 of een 3c59x compatibele kaart. Geef de opdracht modprobe ne of modprobe 3c59x en kijk of de relevante module is geladen. Voeg dan deze regel toe aan /etc/conf.modules:

alias eth0 ne  # of 3c59x

Nu ben je zover dat je netcfg of een vergelijkbaar hulpmiddel kunt gaan gebruiken om de netwerkconfiguratie op te zetten. De van toepassing zijnde bestanden zijn /etc/HOSTNAME, etc/hosts, /etc/resolv.conf, /etc/sysconfig/network, en /etc/sysconfig/network-scripts/ifcfg-eth0; services zouden met scripts in /etc/rc.d/init.d moeten worden gestart.

Dit is een voorbeeld 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 /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 deze 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 feitelijke methode van je distributie om netwerkservices te starten veel complexer kan zijn, zou het volgende script voldoende moeten zijn om mee te beginnen:

#!/bin/sh

# net-up.sh: set up network access

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
Als je netwerkexperimenten uit wilt voeren met het loopback interface, hoef je slechts de volgende opdrachten te geven:
ifconfig lo 127.0.0.1
route add -host 127.0.0.1 lo

Dit script is handig voor het activeren van netwerktoegang wanneer je een rescue disk gebruikt. Uiteraard laat dit je slechts naar de buitenwereld pingen, ftp-en en telnetten; het zal geen daemon opstarten.

Netwerk voor Notebooks

Wanneer je de netwerk PC-kaart inplugt, zal het script /etc/pcmcia/network worden uitgevoerd. Hier is alleen een juist ingesteld /etc/sysconfig/network-scripts/ifcfg-eth0 bestand voor nodig.

Het instellen van het netwerk kan echter wat lastiger worden. Feitelijk moet je de juiste instellingen leveren voor elk netwerk waar je een verbinding mee opzet, als ook de instellingen voor het notebook wanneer er geen verbinding tot stand wordt gebracht.

IK stelde een grove maar functionele oplossing samen. Ik gebruik mijn notebook als een stand-alone machine, maakte een verbinding met het net via PPP; thuis met IP-adres 192.168.1.2; en op de universiteit IP 137.204.x.y. Dus creërde ik een set configuratiebestanden voor elk netwerk; deze bewaarde ik allemaal in /etc/mobnet. Vervolgens gebruik ik een script om de werkomgeving te selecteren. Als voorbeeld hier een /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 dat ik gebruik om het netwerkprofiel te kiezen:

#!/bin/sh
# mnet: script om de "mobiele netwerk" configuratie 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 bestaat
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 nameserver(s) in
cat <<EOF > /etc/resolv.conf
# /etc/resolv.conf
search $SEARCH
nameserver $NAMESERVER
EOF

# stop voorgaande 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 configuratiebestanden
  /bin/cp -f /etc/mobnet/hosts.$1	/etc/hosts
  /bin/cp -f /etc/mobnet/smb.conf.$1	/etc/smb.conf
  
echo -n "Voeg de netwerkkaart in en druk op <enter> wanneer je zover bent: "
  read
    
  # OK, start nu de services
  activate_services start
  echo "SERVICES=\"$SERVICES\"" > /etc/mobnet/services.prev

else # het is niet gelijk aan "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 kaart verwijderen."
  exit 0

fi

# einde mnet.

Zoals ik al zei, het is grofweg en zelfs niet compleet: het kan zijn dat andere bestanden zoals /etc/fstab, /etc/exports, en /etc/printcap afhankelijk kunnen zijn van het netwerk. Denk aan netwerkprinters en NFS-shares. Pas deze kale oplossing gerust aan, aan wat je nodig hebt.

Delen van het Internet

Een van de meest nuttige taken voor een Linux server. Thans worden de meeste kant en klare kernels standaard met IP-firewalling, masquerading en forwarding geactiveerd geleverd; raadpleeg de IP-Masquerade mini-HOWTO als je twijfelt om te leren hoe je ze activeert. Installeer vervolgens (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 eraan kernelmodules voor de services te activeren die je nodig hebt, b.v. voor ftp voeg je de volgende regel toe 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 machines op je lokale netwerk is erg eenvoudig. Controleer als eerste de netwerk initialisatiescripts (de lokatie is /etc/sysconfig/network als het goed is) om te zien of hier een regel in staat met de tekst FORWARD_IPV4=true. Het wordt gebruikt om /proc/sys/net/ipv4/ip_forward op 1 in te stellen wanneer het netwerksubsysteem de lucht in gaat.

Voeg de volgende regels toe aan /etc/rc.d/rc.sysinit:

# default: pakketjes kunnen de buitenwereld niet bereiken
/sbin/ipfwadm -F -p deny
# sta alle machines op het lokale netwerk toe het Internet te bereiken
/sbin/ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0
# als alternatief kan dit alleen op deze twee machines
# /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

Gebruik voor een kernel in de 2.2.x serie ipfwadm-wrapper in plaats van ipfwadm om snel van start te gaan. Meer informatie op http://ipmasq.cjb.net.

Nu zul je vast iets willen om de clientmachines de ISP te kunnen laten bellen; ik gebruik Mserver ( http://cpwright.villagenet.com/mserver/). Bewerk etc/mserver.conf; de enige regels die je aan zou hoeven passen zijn ``checkhost'', ``shadow'', en ``cname''. Definieer vervolgens je verbinding(en). Installeer uiteraard een geschikte client op de client machines.

Beperken van toegang tot het netwerk

Stel dat je via PPP een verbinding maakt met het Internet. Zodra je een verbinding hebt gelegd, zal je machine kwetsbaar zijn voor aanvallen. Voeg dit toe aan /etc/hosts.allow:

# alleen toegang toestaan tot localhost
ALL: 127.

en dit in /etc/hosts.deny:

# ontzeg iedereen de toegang
ALL: ALL

Als je machine is aangesloten op een netwerk met directe toegang tot Internet, kun je finger, telnet, en mogelijk nog andere services om beveiligingsredenen beter deactiveren; gebruik ssh inplaats van telnet. Het bestand dat je hiervoor moet wijzigen is /etc/inet.conf. Als alternatief kun je de toegang tot het netwerk beperken door het volgende in /etc/hosts.allow te plaatsen:

in.telnetd: 192.168.1., .ander.vertrouwd.netwerk
in.ftpd: 192.168.1., .ander.vertrouwd.netwerk

en dit in /etc/hosts.deny:

in.telnetd: ALL
in.ftpd: ALL

NFS Exports

Het is gebruikelijk om homedirectory's op de server te exporteren; er ontstaat een probleem als de UID en GID van een gebruiker niet consistent zijn op verschillende machines. Als gebruiker `guido' UID/GID = 500 heeft op server en UID/GID = 512 op client, dan is dit een comfortabele configuratie:

# /etc/exports
/tmp            mijn.client.machine(rw)
/home/guido     mijn.client.machine(rw,all_squash,anonuid=512,anongid=512)

Samba

Bijna alledaags, maar er is altijd wel iets te doen. Als je een verbinding met Windows 98/NT clients op wilt zetten, denk je er dan aan de docs te lezen en wanneer van toepassing clear text passwords te activeren? In de distributie zijn .reg bestanden voor Win9x/NT/2000 opgenomen; als je clients geen verbinding met de Linux server kunnen maken, laad ze dan op elke client.

Samba wordt geleverd met een tamelijk compleet voorbeeld van /etc/smb.conf, maar vreemd genoeg ontbreekt hierin een sectie waarin wordt getoond hoe verwijderbare media te mounten/unmounten. De clausules preexec en postexec doen de truuk:

[cdrom]
  comment = CD-ROM
  path = /mnt/cdrom
  public = yes
  read only = yes
; wellicht dat je "root preexec/postexec" moet gebruiken
  preexec = mount /mnt/cdrom
  postexec = umount /mnt/cdrom

Je weet wat Swat is, niet? Activeer het met deze regel in /etc/inetd.conf:

swat      stream  tcp     nowait.400      root /usr/sbin/swat swat

en dit in /etc/services:

swat            901/tcp

Herstart inetd met SIGHUP, en verwijs je browser naar http://localhost:901.