Linux als Router

Bezugnehmend auf meine Anleitung zur Installation eines Samba4 AD Servers soll dieser neben seiner Aufgabe als AD-Domain Controller, DHCP und DNS Server noch zusätzlich als Gateway für die Clients dienen. Hierzu benötigt dieser zwei Netzwerkkarten. Bei mir ist die erste Karte (eth0) für das interne, private Netzwerk gedacht. Die zweite (eth1) hat die gewünschte Verbindung zum Internet.

Somit sieht die interfaces Datei bei mir wie folgt aus:

$ nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# Die Karte für das interne Netzwerk
allow-hotplug eth0
iface eth0 inet static
  address 10.101.42.1
  netmask 255.255.255.0
  broadcast 10.101.42.255
  network 10.101.42.0
  gateway 10.101.42.1
dns-nameservers 10.101.42.1

# Netzwerkschnittstelle zum Internet 
# in diesem Fall per DHCP konfiguriert
allow-hotplug eth1
iface eth1 inet dhcp
iface eth1 inet6 auto

Falls ihr auf eurem Server bislang weder DHCP noch DNS betreibt, muss als erstes DNSmasq installiert werden. Falls ihr vom vorherigen Tutorial zur Installation eines Samba4 Servers kommt, ist dies bereits erledigt und könnt euch Schritt 1. sparen. Der Vollständigkeit halber aber hier in kompakter Form:

  1. DNSmasq installieren:
    apt-get install dnsmasq

    Konfigurations Datei öffnen:

    $ nano -w /etc/dnsmasq.conf
    interface=eth0
    listen-address=127.0.0.1
    domain=my.own.dom
    dhcp-range=10.101.42.100,10.101.42.200,12h
  2. Ab hier gehts dann für alle weiter und das IP Forwarding im Linux Kernel muss zunächst aktiviert werden:
    $ nano /etc/sysctl.conf

    Dort die folgende Zeile auskommentieren:

    net.ipv4.ip_forward = 1

    Damit die Änderungen sofort greifen folgenden Befehl ausführen (oder rebooten):

    $ sysctl -p /etc/sysctl.conf
  3. Zuletzt IPTables installieren und eine Minimalkonfiguration eingeben:
    IPTables installieren

    $ apt-get install iptables-persistent

    Konfigurationsdatei öffnen und folgenden Inhalt einfügen:

    $ nano /etc/iptables/rules.v4
    *nat
    -A POSTROUTING -o eth1 -j MASQUERADE
    COMMIT
    
    *filter
    -A INPUT -i lo -j ACCEPT
    # ssh erlauben, damit wir uns nicht selbst aussperren
    -A INPUT -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT
    # eingehende Pakete erlauben die zu den ausgehenden Verbindungen gehören
    # u.a. für Rechner aus dem Private-Netzwerk (eth0)
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    # alles andere eingehend verbieten
    -A INPUT -i eth1 -j DROP
    COMMIT

    Zuletzt die neue Konfiguration aktivieren:

    iptables-restore < /etc/iptables/rules.v4

Ab nun sollten alle Clients, die nur im internen Netzwerk hängen ins Internet geroutet werden.