Verder Terug Inhoud

3. Algemene beheertaken

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...

3.1 Netwerkconfiguratie

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.

3.2 Netwerk voor Notebooks

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.

3.3 Delen van het Internet

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.

3.4 Netwerktoegang beperken

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

3.5 NFS Exports

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)

3.6 Samba

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.


Verder Terug Inhoud