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