Passwort vergessen?

Benutzername vergessen?

Alles rund um IT, Web und Entwicklung.
Von Nutzern für Nutzer.

Ubuntu als Router mit Masquerading einrichten



Wem ein normaler Router nicht ausreicht und für mehr Sicherheit sorgen möchte, kann auch einen normalen Ubuntu PC als Router bzw. Gateway verwenden.

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.




Michael Kostka

Fachinformatiker / Systemintegration
Ich schreibe hier regelmäßig zu den Themen Android, Web, Linux und Hardware.

Raspberry Pi Starter Kit
DataCloud

Hinterlasse einen Kommentar

Ich habe die Datenschutzerklärung zur Kenntnis genommen und stimme einer elektronischen Speicherung und Verarbeitung meiner eingegebenen Daten zur Beantwortung der Anfrage zu.

Michael Kostka

22.11.2011 15:08

Hast du mal versucht das Skript mit "sudo /etc/init.d/masquerading start" zu laden?

deine mutter

21.11.2011 06:06

....mkay also nun doch, aber das mit dem startscript klappt net

deine mutter

21.11.2011 02:59

ka.., ganze nacht gesessen nichts passiert, bekomm keine adresse zugewiesen