Einer der größten Vorteile liegt in den großen Einstellungsmöglichkeiten. Man kann die kompliziertesten Firewall-Konfigurationen einrichten und hat zudem auch noch die Möglichkeit den Rechner als Server für andere Netzwerkdienste nutzen.

Leider gibt es aber auch einige Nachteile. So benötigt ein Server im Normalfall deutlich mehr Strom als ein Router. Weiterhin benötigt man 2 Netzwerkkarten um Internet von Netzwerk zu trennen.
Daneben kann es bei direktem Anschluss einen Modems an den Rechner zu Problemen mit der Konfiguration kommen. Da dies aber mittlerweile kaum noch üblich ist, sondern die meisten Internetanschlüsse auch einen Router besitzen, werden wir nur auf die Konfiguration mit Anschluss an einen vorhanden Router eingehen.
Grundlagen
Linux greift standardmäßig auf eine Technik namens Masquerading zurück. Das bedeutet übersetzt Maskierung und beschreibt somit auch den Funktionsmechanismus. Im Grunde ist dies nur ein anderer Ausdruck für die bekannte NAT-Technik (=Network Address Translation).
Ein Client schickt eine Anfrage an einen Webserver im Internet, welche vom Gateway abgefangen wird. Dieses biegt jetzt die IP-Adressen so um, als käme die Anfrage von ihm selbst. Schickt der Webserver die Daten wieder zurück müssen sie nur noch an den Client weitergeleitet werden.
Damit steht eine Art Mauer oder Firewall zwischen dem Client und dem Internet.
Vorbereitungen
Zunächst muss das Paket iptables installiert werden:
sudo apt-get install iptables
Damit die Namensauflösung (=DNS) richtig funktioniert, benötigt man noch einen DNS Server. Da die Einrichtung eines kompletten DNS Servers teilweise recht kompliziert ist, verwenden wir DNSMasq. Dieser leitet DNS Anfragen an den Router weiter und bietet daneben noch einen kleinen DHCP Server zur Vergabe der IP-Adressen an.
sudo apt-get install dnsmasq
Konfiguration
Netzwerkkarten
Im Folgenden nehmen wir an, dass die folgende Konstellation vorliegt:
eth0 - Internet (an den Router angeschlossen)
eth1 - LAN (am Switch des internen Netzwerks angeschlossen)
eth0 - 192.168.0.3
eth1 - 192.168.1.1
Router - 192.168.0.1
Hier ist zu beachten, dass die an den Router angeschlossene Schnittstelle eth0 die IP-Adresse des Routers erreichen kann. Dies kann man über die Subnetzmaske und die IP-Adresse regeln.
Nun muss die Datei /etc/network/interfaces mit root Rechten ergänzt werden. Dies macht man am besten mit dem Editor Nano. Dazu hängt man einfach folgende Zeilen an.
sudo nano /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.0.3
netmask 255.255.255.0
gateway 192.168.0.1
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
Bei der Internetschnittstelle muss bei gateway die Adresse des Routers angeben werden. Sollte dieser beispielsweise die Adresse 192.168.2.1 besitzen, dann muss bei netmask entweder 255.255.0.0 angegeben werden oder man legt die Adresse eines der Geräte in den gleichen Bereich: 192.168.0.x
Gespeichert wird durch den Druck von STRG + O.
Abschließend muss auch noch die Datei /etc/resolv.conf angepasst werden. Auch hier muss wieder die Adresse des Routers angegeben werden.
Um die Änderungen zu übernehmen genügt folgender Befehl oder ein Neustart des gesamten Systems:
sudo /etc/init.d/networking restart
Routing / Masquerading
Nun kann das Routing bzw. Masquerading aktiviert werden. Dazu genügt die Eingabe folgender Befehle:
sysctl -w net.ipv4.ip_forward=1
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Der erste Befehl aktiviert das IP-Forwarding des Kernels. Die nächsten beiden aktivieren die Unterstützung für FTP-Verbindungen, während letzter Befehl das eigentliche Masquerading aktiviert.
Hierbei besteht nun das Problem, dass nach dem nächsten Systemstart das Masquerading wieder deaktiviert ist. Aus diesem Grund muss in /etc/init.d/ ein neues Startskript angelegt werden:
sudo nano /etc/init.d/masquerading
Hier muss folgender Inhalt eingefügt werden:
#! /bin/bash
### BEGIN INIT INFO
# Provides: masquerading
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Setting up masquerading
# Description: This script will configure masquerading
### END INIT INFO
DESC="masquerading"
# Grundfunktionen lesen
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Starting Masquerading "
sysctl -w net.ipv4.ip_forward=1
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ERROR=0
log_end_msg $ERROR
;;
stop)
log_daemon_msg "Stopping Masquerading"
sysctl -w net.ipv4.ip_forward=0
modprobe -r ip_conntrack_ftp
modprobe -r ip_nat_ftp
iptables -t nat -F POSTROUTING
ERROR=0
log_end_msg $ERROR
;;
esac
Damit das Skript bei jedem Start richtig geladen wird, muss es noch in den Startvorgang eingebunden werden:
sudo update-rc.d masquerading defaults
DNS / DHCP
Nun kann man sich um die Konfiguration von DNSMasq kümmern. Auch hier muss wieder die Konfigurationsdatei von DNSMasq editiert werden:
Suchen Sie hier folgende Zeile:
dhcp-range=192.168.0.50,192.168.0.150,12h
Diese wird nun auf den richtigen Adressbereich angepasst:
dhcp-range=192.168.1.2,192.168.1.254,12h
Damit die Änderungen übernommen werden, muss DNSMasq nur noch neu gestartet werden:
sudo /etc/init.d/dnsmasq restart
Sollte DNSMasq beim Systemstart nicht automatisch gestartet werden, dann muss es erst wie bereits mit dem Skript für das Masquerading neu eingebunden werden:
sudo update-rc.d dnsmasq defaults
Fazit
Die Verwendung eines Ubuntu-Servers als Router bzw. Gateway ist recht umfangreich. Danach bieten sich aber vor allem mit iptables noch tausende nette Routing- und Filter-Funktionen. Hält man sich an die Anleitung und bewahrt Ruhe, dann gestaltet sich die Einrichtung doch recht einfach.
Ähnliche Artikel

Michael Kostka
22.11.2011 15:08
deine mutter
21.11.2011 06:06
deine mutter
21.11.2011 02:59