Hoofdstuk 12. Netwerk connectiviteit

Inhoudsopgave

12.1. De praktijk
12.1.1. Overzicht van de netwerkconfiguratiebestanden
12.1.2. Een klein thuisnetwerk maken
12.2. Specialistische onderwerpen
12.2.1. IPNAT

12.1. De praktijk

12.1.1. Overzicht van de netwerkconfiguratiebestanden

Hier volgt een lijst van de bestanden die gebruikt worden om netwerkconnectiviteit te configureren. De opbouw van de bestanden worden in de volgende secties beschreven.

/etc/hosts

Lokale hosts database bestand. Elke regel bevat informatie over een bekende host en bevat het internet adres, hostname en aliases van de host. Kleine netwerken kunnen geconfigureerd worden met het hosts bestand, zonder een name server.

/etc/resolv.conf

Dit bestand specificeert hoe de machine toegang heeft tot het Internet Domain Name System. Gewoonlijk bevat het de adressen van de name servers.

/etc/ifconfig.xxx

Dit bestand wordt gebruikt voor automatische configuratie van de netwerkkaart tijdens het starten van het systeem.

/etc/mygate

Bevat het IP adres van de gateway.

/etc/nsswitch.conf

Name service switch configuratiebestand. Hiermee kunt u instellen hoe een proces verschillende databases met informatie over hosts, gebruikers, groepen, etc. doorzoekt. Dit bestand bepaald bijvoorbeeld de volgorde waarop verschillende databases doorzocht moeten worden. De regel

hosts:    files dns
		

specificeert bijvoorbeeld dat de hosts database uit twee bronnen komt: uit files (het lokale /etc/hosts bestand) en DNS (het Internet Domain Name System) en dat de lokale bestanden eerst geraadpleegd worden en daarna het DNS systeem.

Gewoonlijk is het niet nodig dit bestand aan te passen.

12.1.2. Een klein thuisnetwerk maken

Netwerkconnectiviteit is één van de sterke kanten van Unix en NetBSD is geen uitzondering: de netwerkconnectiviteit is krachtig en eenvoudig in te stellen en is ook goedkoop, omdat u geen additionele software hoeft te kopen om te kunnen communiceren met een server of zelf een server op te zetten. Het enige waar u op moet letten voordat u een netwerk opzet is of de netwerkkaarten die u gaat gebruiken ondersteund worden door NetBSD (bekijk het INSTALL bestand voor een lijst van ondersteunde kaarten).

Eerst moeten de netwerkkaarten geïnstalleerd worden en verbonden worden met een hub, switch of een rechtstreekse verbinding.

Daarna moet u controleren of de netwerkkaarten door de kernel herkend worden door te kijken naar de uitvoer van het dmesg commando. In het volgende voorbeeld heeft de kernel succesvol een NE2000 kloon herkend:

  ...
  ne0 at isa0 port 0x280-0x29f irq 9
  ne0: NE2000 Ethernet
  ne0: Ethernet address 00:c2:dd:c1:d1:21
  ...
      

Als de kaart niet herkend wordt door de kernel moet u controleren of de ondersteuning voor de kaart ingeschakeld is in het kernel configuratiebestand en of IRQ instellingen in de kernel overeenkomen met de IRQ van de kaart (dit geldt met name voor ISA kaarten). Dit is bijvoorbeeld de configuratieregel voor ISA NE2000 kaarten in het configuratiebestand, de kernel verwacht dat de kaart IRQ 9 gebruikt:

...
ne0 at isa? port 0x280 irq 9 # NE[12]000 ethernet cards
...
      

Als de configuratie van de kaart anders is wordt het waarschijnlijk niet gevonden tijden het starten van het systeem. Verander in dat geval de desbetreffende regel in de kernelconfiguratie en compileer een nieuwe kernel of verander de instellingen van de kaart (gewoonlijk kan dit met een setup diskette of, bij oudere kaarten, met een jumper op de kaart).

Het volgende commando toont de huidige configuratie van de netwerkkaart:

# ifconfig ne0
ne0: flags=8822<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST> mtu 1500 media: Ethernet 10base2
      

De softwareconfiguratie van de netwerkkaart is erg eenvoudig. Het IP adres is "192.168.1.1" (dit adres is gereserveerd voor internet netwerken) en wordt toegekend aan de kaart.

# ifconfig ne0 inet 192.168.1.1 netmask 0xffffff00
      

Herhaling van het commando ifconfig ne0 geeft nu het volgende resultaat:

# ifconfig ne0
ne0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          media: Ethernet 10base2
          inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
      

De uitvoer van het ifconfig commando is nu veranderd: het IP adres wordt nu getoond en er zijn twee nieuwe vlaggen, "UP" en "RUNNING". Als de interface niet "UP" is zal het niet door het systeem gebruikt worden om packets te versturen.

De host heeft het IP adres 192.168.1.1 gekregen, dit adres behoort tot een reeks van adressen die gereserveerd is voor interne netwerken die niet bereikbaar zijn via het internet. De configuratie is nu voltooid en moet getest worden; als er een andere host op het netwerk is kunnen de instellingen met ping getest worden. Als bijvoorbeeld 192.168.1.2 het adres is van de andere host, probeer dan:

  # ping 192.168.1.2
  PING ape (192.168.1.2): 56 data bytes
  64 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=1.286 ms
  64 bytes from 192.168.1.2: icmp_seq=1 ttl=255 time=0.649 ms
  64 bytes from 192.168.1.2: icmp_seq=2 ttl=255 time=0.681 ms
  64 bytes from 192.168.1.2: icmp_seq=3 ttl=255 time=0.656 ms
  ^C
  ----ape PING Statistics----
  4 packets transmitted, 4 packets received, 0.0% packet loss
  round-trip min/avg/max/stddev = 0.649/0.818/1.286/0.312 ms
      

Met de instellingen tot zover moet de netwerkkaart na het herstarten van het systeem weer opnieuw ingesteld worden. Om te voorkomen dat de netwerkkaart na elke herstart weer geconfigureerd moet worden moeten twee dingen gedaan worden: maak eerst het bestand /etc/ifconfig.interface aan, waarin "interface" vervangen wordt met de naam die de kernel aan de netwerkkaart toegekend heeft (dus in het gebruikte voorbeeld moet het bestand /etc/ifconfig.ne0 aangemaakt worden) met de volgende regel:

  inet 192.168.1.1 netmask 0xffffff00
      

Voeg vervolgens de volgende instelling aan /etc/rc.conf toe:

  auto_ifconfig=YES
      

Na de volgende start van het systeem zal de netwerkkaart automatisch geconfigureerd worden.

Het /etc/hosts bestand is een database van IP adressen en tekstuele equivalenten: het is handig om alle hosts op het internet netwerk hier aan toe te voegen. Bijvoorbeeld:

Voorbeeld 12.1. /etc/hosts

#     $NetBSD: chap-net.html,v 1.20 2005/04/09 16:17:31 daniel Exp $
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# It is used only for "ifconfig" and other operations
# before the nameserver is started.
#
#
127.0.0.1             localhost
#
# RFC 1918 specifies that these networks are "internal".
# 10.0.0.0    10.255.255.255
# 172.16.0.0  172.31.255.255
# 192.168.0.0 192.168.255.255

192.168.1.1   ape.insetti.net ape
192.168.1.2   vespa.insetti.net vespa
192.168.1.0   insetti.net
        

Om alles op te sommen, om netwerkconnectiviteit te configureren moet het volgende gedaan worden: de netwerkkaarten moeten geïnstalleerd en fysiek aangesloten worden. Daarna moeten ze geconfigureerd worden (met ifconfig) en tenslotte moeten het /etc/hosts bestand aangepast worden. Dit is een basale netwerkconfiguratie en is alleen geschikt voor kleine netwerken met weinig eisen.

12.2. Specialistische onderwerpen

12.2.1. IPNAT

De mysterieuze afkorting IPNAT staat voor Internet Protocol Network Address Translation. IPNAT stelt u in staat verkeer te routen van een intern netwerk naar een echt netwerk (internet). Dit betekent dat u met slechts één “echt” adres (zowel statisch als dynamisch) dat toegekend is aan een gateway gelijktijdig alle interne hosts verbinding kunt laten maken met het internet.

Een aantal voorbeelden van het gebruik van IPNAT kunnen gevonden worden in de /usr/share/examples/ipf directory; kijk naar de BASIC.NAT en nat-setup bestanden.

De opstelling die in het voorbeeld dat hier besproken wordt is afgebeeld in Figuur 12.1, “Netwerk met een gateway”. host1 kan door een internet provider te bellen met een modem verbinding met het internet maken, waarbij een dynamisch IP adres toegewezen wordt. host 2 en host 3 kunnen gewoonlijk geen verbinding met het internet maken: IPNAT stelt ze in staat dat te doen, host1 zal optreden als gateway voor hosts 2 en 3.

Figuur 12.1. Netwerk met een gateway

Netwerk met een gateway

12.2.1.1. Het configureren van de gateway/firewall

Om IPNAT te kunnen gebruiken moet “pseudo-device ipfilter” aanwezig zijn in de kernelconfiguratie. U kunt als volgt controleren of dat het geval is bij de huidige kernel:

# sysctl net.inet.ip.forwarding
net.inet.ip.forwarding = 1

Als het resultaat “1” is als in het voorbeeld is de optie aanwezig in de kernelconfiguratie. Als het resultaat “0” is is de optie niet meegecompileerd. U kunt twee dingen doen:

  1. Een nieuwe kernel compileren, met de GATEWAY optie.

  2. U kunt de optie aangeschakelen in de huidige kernel met het volgende commando:

    # sysctl -w net.inet.ip.forwarding=1

    U kunt sysctl instellingen toevoegen aan /etc/sysctl.conf, zodat ze automatisch ingesteld worden tijdens het starten van het systeem. In dit geval moet u de volgende regel toevoegen:

    net.inet.ip.forwarding=1

In de rest van deze sectie wordt uitgelegd hoe u IPNAT kunt configureren zodat het automatisch gestart wordt wanneer er een PPP connectie met de provider is gemaakt. Met deze configuratie kunnen bijvoorbeeld alle machines op een thuisnetwerk verbinding maken met het internet via de gateway machine, zelfs als ze niet op NetBSD draaien.

Maak eerst het /etc/ipnat.conf bestand aan met de volgende regels:

map ppp0 192.168.1.0/24 -> 0/32 proxy port ftp ftp/tcp
map ppp0 192.168.1.0/24 -> 0/32 portmap tcp/udp 40000:60000
map ppp0 192.168.1.0/24 -> 0/32

192.168.1.0/24 representeert de netwerkadressen die vertaald (mapped) moeten worden. De eerste regel van het configuratiebestand is optioneel, het zorgt ervoor dat actieve FTP verbindingen de gateway kunnen passeren. De tweede regel wordt gebruikt om TCP en UDP connecties correct af te handelen, het zorgt er namelijk voor dat er gebruik gemaakt wordt van een groot bereik van poorten (wat nodig is als veel machines van één IP adres gebruik maken). De derde regel wordt gebruikt om te zorgen dat de machines op het netwerk ICMP, ping, en dergelijke kunnen gebruiken.

Maak het /etc/ppp/ip-up bestand aan, het zal aangeroepen worden wanneer de PPP verbinding geactiveerd is. Zorg dat de volgende regels in dit bestand staan:

#!/bin/sh
# /etc/ppp/ip-up
/etc/rc.d/ipnat forcestart

Maak het bestand /etc/ppp/ip-down aan, dit bestand zal aangeroepen worden als de PPP verbinding verbroken wordt. Zorg dat de volgende regels in dit bestand staan:

#!/bin/sh
# /etc/ppp/ip-down
/etc/rc.d/ipnat forcestop

Zowel ip-up als ip-down moeten uitvoerbaar zijn:

# chmod u+x ip-up ip-down

De gateway machine is nu gereed.

12.2.1.2. Het configureren van de clients

Maak een /etc/resolv.conf vergelijkbaar met die van uw gateway.

Voer het volgende commando uit:

# route add default 192.168.1.1

192.168.1.1 is het adres van de gateway machine die in de vorige sectie is geconfigureerd.

Natuurlijk wilt u niet iedere keer dit commando intikken, daarom is het beter “defaultroute” in het /etc/rc.conf bestand te configureren, of het adres op te slaan in /etc/mygate (met hetzelfde effect). Op deze manier wordt de default route automatisch tijdens het starten van het systeem ingesteld.

Als de client machine geen NetBSD gebruikt zal de configuratie anders zijn. Op Windows PC's moet u de gateway instellen in de TCP/IP configuratie.

Het instellen van de defaultroute of gateway en de te gebruiken nameservers is alles wat u hoeft te doen op clients.

12.2.1.3. Enkele handige commando's

De volgende commando's kunnen behulpzaam zijn voor het onderzoeken van problemen:

ping

netstat -r

Toont de route tabel (vergelijkbaar met route show).

traceroute

Toont de route die pakketten moeten afleggen om bij een andere host aan te komen.

tcpdump

Kan gebruikt worden om TCP/IP verkeer in de gaten te houden op de gateway.