Het instellen van IP-Masquerading
ArticleCategory:
System Administration
AuthorImage:
TranslationInfo:
original in en Guido Socher
en to nl Tom Uijldert
AboutTheAuthor:
Guido is al lang een Linux fan. Z'n home pagina kun je vinden op
www.oche.de/~bearix/g/.
Abstract:
IP-Masquerading geeft de mogelijkheid om meerdere computers op het Internet aan te sluiten via
één Linux machine met slechts één extern IP-adres. Dit betekent
dat je een heel privé-netwerk aan kunt sluiten op het Internet terwijl je Internet aanbieder
denkt dat er slechts één computer aan hangt. Dit artikel zal uitleggen hoe je IP-
Masquerading kunt instellen met een 2.2.x kernel. Het zal niet ingaan op het bouwen van een
netwerk. Het is aan te bevelen om het
artikel van Januari 2000
te lezen om meer te weten te komen over computernetwerken.
ArticleIllustration:
ArticleBody:
Algemeen
Om IP-Masquerading aan het werk te krijgen zoals hier beschreven heb je op zijn minst
één Linux-doos nodig met een 2.2x kernel. Deze machine zal worden gebruikt
voor de aansluiting op het Internet. Het gebruik van Linux voor de verbinding betekent nog niet
dat je ook Linux moet gebruiken in je eigen netwerk. Sterker nog, Linux werkt prima samen met
Windows, Mac (Apple) systemen en andere smaken Unix.
Het gaat in dit artikel echter alleen over de machine die we gebruiken voor de verbinding. Deze
sluit je aan de ene kant aan op het Internet en aan de andere kant op je eigen netwerk. Deze
machine heeft dus minstens twee koppelingen (interfaces) met dan ook twee IP-
adressen. Één van de IP-adressen is het extern bekende adres wat over het
Internet kan worden gerouteerd. Dit adres wordt je meestal toegekend door de Internet aanbieder
op het moment dat je verbinding met ze maakt via het modem (of via welk apparaat dan ook).
Andere IP-adressen zijn privé-adressen die je toe kunt kennen door te kiezen uit het
volgende bereik:
- 10.0.0.0 - 10.255.255.255
- 172.16.0.0 - 172.31.255.255
- 192.168.0.0 - 192.168.255.255 (dit bereik gebruiken we voor het artikel)
Dit artikel zal niet uitleggen hoe je het netwerk opzet. Er wordt aangenomen dat je netwerk al
staat en is geconfigureerd.
Principes van IP-Masquerading
In principe vertaalt IP-Masquerading interne IP-adressen naar externe IP-adressen. Dit noemt
men ook wel Network Address Translation (NAT) en Linux doet dit met behulp van
poortnummers. Vanaf de buitenwereld lijkt het alsof alle verbindingen vanaf jouw ene machine
komen. Je kunt een uitgebreide beschrijving hiervan in het
Januari nummer vinden.
Soms hebben IP-pakketjes een speciale toepassing en zal IP-Masquerading niet werken maar in
de meeste gevallen is het effectief. Er zijn modules te verkrijgen voor ICQ, ftp en quake die je aan
de kernel kunt hangen zodat ook deze toepassingen correct functioneren in je eigen netwerk.
Over het algemeen echter zal alles wat gebruik maakt van standaard dingen als HTTP (web
browsers), telnet, ssh of smtp (e-mail) zonder aanpassingen functioneren.
Instellen van de kernel
Lezers die een standaard kernel hebben geïnstalleerd van de bekende distributeurs
(RedHat, Mandrake, Debian, Suse...) kunnen dit hoofdstuk overslaan, hun kernel is al voorbereid
op het werken met IP-Masquerading.
Meestal maak ik een back-up van /usr/src/linux/.config nadat ik een goed
werkende kernel heb gebouwd. De volgende keer dat ik dan een kernel moet bouwen hoef ik
alleen maar deze configuratie te laden en dan heb ik al een werkende kernel om mee te
starten. Hierop kan ik dan relatief eenvoudig wijzigingen aanbrengen, zoals de ondersteuning
voor IP-Masquerading.
Om gebruik te kunnen maken van IP-Masquerading moet op de volgende vragen met
yes worden geantwoord tijdens het configureren van de kernel. Hier worden alleen
de componenten genoemd die nodig zijn voor IP-Masquerading. Kies naar hartelust ook andere
opties die je zelf nog nodig hebt:
- Vraag om ontwikkelversie en/of incomplete code of drivers
CONFIG_EXPERIMENTAL
(hiermee kun je voor experimentele Masquerading code kiezen die in de kernel wordt gecompileerd)
- Aktiveren loadable module ondersteuning
CONFIG_MODULES
- Netwerk ondersteuning
CONFIG_NET
- Netwerk firewalls
CONFIG_FIREWALL
- TCP/IP networking
CONFIG_INET
- IP: forwarding/gatewaying
CONFIG_IP_FORWARD
- IP: firewalling
CONFIG_IP_FIREWALL
- IP: masquerading
CONFIG_IP_MASQUERADE
- IP: ipportfw masq ondersteuning
CONFIG_IP_MASQUERADE_IPPORTFW
- IP: ipautofw masquerade ondersteuning
CONFIG_IP_MASQUERADE_IPAUTOFW
- IP: ICMP masquerading
CONFIG_IP_MASQUERADE_ICMP
- IP: altijd de-fragmenteren
CONFIG_IP_ALWAYS_DEFRAG
- Dummy net driver ondersteuning
CONFIG_DUMMY
- IP: ip fwmark masq-forwarding ondersteuning
CONFIG_IP_MASQUERADE_MFW
Het configureren van IP-Masquerading
We zullen een klein script maken die het configureren van IP-Masquerading automatiseerd.
Hiervoor moet je het volgende script
in /etc/rc.d/init.d zetten en het
ipmasq noemen. Verander de toegang tot het bestand met $ chmod 755
ipmasq om het executeerbaar te maken. Het onderstaande script neemt aan dat je voor
de interne verbinding het IP-adres 192.168.0.1 hebt gebruikt ($ ifconfig
eth0 192.168.0.1 netmask 255.255.255.0). Verander het script indien je van een ander
adres gebruik maakt. Onderstaand plaatje geeft een overzicht van het netwerk dat we hierbij
gebruiken.
#!/bin/sh
echo "Setting up IP masquerading ..."
# People still using windows to surf the web must convert this
# to a UNIX text file before using it.
#
# Support masquerading of FTP file transfer.
/sbin/modprobe ip_masq_ftp
#
#--------------
# Note: the modules below are commented out from loading. Remove the
# comment sign if you want to use the corresponding applications from
# one of the computers inside your internal network.
#
# Support masquerading of RealAudio over UDP.
#/sbin/modprobe ip_masq_raudio
#
# Supports the masquerading of IRC DCC file transfers
#/sbin/modprobe ip_masq_irc
#
# Support masquerading of Quake and QuakeWorld
# Quake I / QuakeWorld (ports 26000 and 27000)
#/sbin/modprobe ip_masq_quake
#
# Quake I/II/III / QuakeWorld (ports 26000, 27000, 27910, 27960)
#/sbin/modprobe ip_masq_quake ports=26000,27000,27910,27960
#
# Support masquerading of the CuSeeme video conferencing software
#/sbin/modprobe ip_masq_cuseeme
#
#Support masquerading of the VDO-live video conferencing software
#/sbin/modprobe ip_masq_vdolive
#--------------
# Important: Enable IP forwarding. It is disabled by default in
# the 2.2.x Kernels
echo "1" > /proc/sys/net/ipv4/ip_forward
#
# NOTE: This is an example for an internal Network address of
# 192.168.0.x The sub netmask is 255.255.255.0 or "24" bit
# Please change this if you use different internal IP addresses.
#
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ
#
#--- end of file
Verifieer of alle computers in je privé-netwerk zijn geconfigureerd met de default
gateway naar 192.168.0.1 (de Linux machine met masquerading); erg
belangrijk. Voer nu het script uit als gebruiker root op de machine met
masquerading. Stuur daarna een ping van een machine in je netwerk naar een
machine op het Internet (bijvoorbeeld: $ ping 195.53.25.18).
Als dit werkt dan werkt masquerading ook. Probeer ook eens $ ping
www.linuxfocus.org. Dit zou hetzelfde resultaat moeten hebben als de andere
ping. Als dit niet werkt, controleer dan het bestand
/etc/resolv.conf op je lokale machines. Het moet op iedere machine aanwezig
zijn en wijzen naar de DNS (Dynamic Name Server) van je Internet aanbieder. Als
de ping eenmaal werkt zal de rest (bijvoorbeeld je web bladerprogramma) ook
werken.
Dan is nu de tijd gekomen om je configuratie zó te veranderen dat je
/etc/rc.d/init.d/ipmasq wordt uitgevoerd, iedere keer dat je je Linux
masquerading machine opstart. Volgens mij is de beste plaats hiervoor het bestand
/etc/rc.d/init.d/network (dat zou al aanwezig moeten zijn), waarin je het
ipmasq-script aanroept aan het eind van de start-
sectie in het bestand init.d/network. Zoek de case
-instructie
en vervolgens naar "start)
".
Tenslotte
Zoals je hebt kunnen zien is het simpel om IP-Masquerading in te stellen. Het is alleen een
kwestie van activeren van ip forwarding en 2 ipchains commando's. IP-
Masquerading is een krachtige toepassing voor thuisnetwerken, scholen, kleine
bedrijfsnetwerken enzovoorts...
Voor meer informatie beveel ik het lezen van de
IP-Masquerading mini howto en de
IPCHAINS-HOWTO aan.
Om IP-Masquerading te gebruiken moet je uiteraard over een goed functionerend netwerk
beschikken. Dat wordt niet behandeld in dit artikel. Het artikel over
thuisnetwerken vertelt meer over het
gebruikelijke jargon en de
Net 3 howto
of The Network Administrator Guide
gaan dieper in op het bouwen van een netwerk. Ik ben
nog van plan een volgend artikel te gaan schrijven over netwerken later in het jaar maar ik weet niet
of je wel zo lang wilt wachten :-).