Als het een GNU/Linux-computer is die is aangesloten op het internet, en wiens verbinding je wilt delen met andere computers in een lokaal netwerk, dan is het ‘IP Masquerading’, ook gekend als ‘Network Adress Translation’ wat je zoekt.
Vele beginners-distributies leveren een eenvoudige configuratie-tool om je NAT
alsook firewall te configureren, en wij raden dan ook aan deze te gebruiken
(e.g. ipmasq van Debian).
Voor andere distro’s kan je best de howtos http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/index.html en http://www.linuxguruz.org/iptables/howto/iptables-HOWTO.html lezen. Een andere interessante site (Nederlandstalig!) is http://www.nedlinux.nl/ bart/index.php?page=3.
Toch een korte uitleg om je op weg te zetten...
De meest algemene manier om je internetverbinding te delen is d.m.v. iptables. Open een console, wordt root en type het volgende in (verondersteld is dat je intern netwerk het IP-nummer 192.168.0.XXX gebruikt):
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/iptables --flush /sbin/iptables -A POSTROUTING -t nat -o $external_interface -j MASQUERADE /sbin/iptables -A FORWARD -i $internal_interface -o $external_interface -s 192.168.0.0/24 -d ! 192.168.0.0/24 -j ACCEPT /sbin/iptables -A FORWARD -o $internal_interface -i $external_interface -d 192.168.0.0/24 -s ! 192.168.0.0/24 -j ACCEPT
Hierin is $internal_interface de interface van je netwerk (e.g. eth1).
Hiermee heb je geen firewalling, terwijl dat vaak ook gewenst is. Een rudimentaire firewall zet je als volgt op:
~# iptables -A INPUT -i $external_interface -m state --state INVALID -j DROP ~# iptables -A INPUT -i $external_interface -m state --state RELATED,ESTABLISHED -j ACCEPT
Hierin is $external_interface de interface die de verbinding met het
internet maakt (e.g. eth0).
Nu moet je wel nog de poorten die je wel wil gebruiken (bv ssh, maar ook deze die gebruikt worden om bv via DHCP je ip te verkrijgen) open zetten. Als voorbeeld deze voor DHCP (poort 68):
~# iptables -A INPUT -i $external_interface -p tcp --dport 68 -j ACCEPT ~# iptables -A INPUT -i $external_interface -p udp --dport 68 -j ACCEPT
en dan ten slotte (het werkelijk negeren van alle andere verbindingen)
~# iptables -A INPUT -i $external_interface -m state --state NEW -j DROP
Het beveiligen tegen IP spoofing doe je als volgt:
~# echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
Best voeg je nog ondersteuning toe voor passive ftp in de firewall:
~# modprobe ip_conntrack_ftp
Om dit automatisch te laten uitvoeren zet je de commando’s in rc.local
of maak je een eigen initscript aan (bv /etc/init.d/firewall) die de
nodige acties verricht.
Veel distributies hebben /etc/sysctl.conf waarin je de nodige
parameters zet zodat je al die echo 1 > ... niet meer hoeft uit te
voeren.
Er bestaan ook programma’s waarmee je (al dan niet) snel een internetconnectie kan delen of een firewall kan instellen.