Zum Inhalt springen

Benutzer:Konradn/ Firmen-Server mit Debian/ Routing

Aus Wikibooks

Die Routing Funktionalität von Linux kann sehr hilfreich sein, um einem lokalen Netzwerk Zugriff auf das Internet zu geben. Hierbei ist es aber immer wichtig, auch auf die Sicherheit zu achten, da im Internet viele „böse Buben“ nur darauf warten, dass ein Netzwerk angreifbar ist.

Die hier vorgestellte Lösung ist für eine Testumgebung interessant aber eine produktive Lösung würde ich damit nicht aufbauen. So dient es bei mir der besseren Kapselung: Alle Testsysteme von mir existieren lediglich als virtuelle Systeme und die Clients bekommen dank dieser Lösung Zugriff auf das Internet.

In einem physikalischen Netzwerk ist zu prüfen, was an Gerätschaften vorhanden ist. Oft ist bereits ein Router vorhanden, der einem lokalen Netzwerk mittels Masquerading Zugriff auf das Internet gibt. Hier wäre es unsinnig, wenn ein Server ein erneutes Masquerading durchführen würde!

Ebenso macht es sehr viel Sinn, sein Netzwerk mittels Firewalls zu sichern. Dies ist mit der hier angezeigten Routing-Lösung über weitere Regeln möglich. Aber auf der Firewall sollten natürlich nicht noch die anderen Dienste laufen, die ich im Buch schreibe.

Voraussetzungen
[Bearbeiten]
  • Der Server sollte fertig installiert
  • eine Netzwerkkarte für die Verbindung ins Internet sollte konfiguriert sein.
  • eine Netzwerkkarte für das lokale Netzwerk sollte konfiguriert sein.
Benötigte Pakete
[Bearbeiten]

Es werden keine weiteren Pakete benötigt

Meine Konfiguration
[Bearbeiten]
  • etho mit der Verbindung ins Internet (DHCP)
  • eth1 mit lokalem Netzwerk (10.100.0.1 / 255.255.255.0)
Vorgehen
[Bearbeiten]

Damit unser Server Pakete weiterleitet sind mehrere Dinge notwendig: a) Der Linux.-Kernel muss entsprechend konfiguriert werden. b) Mittels iptables muss die Weiterleitung incl. Masquerading konfiguriert werden.

Das Script enable-routing für die Aktivierung des Routing[1]

#!/bin/sh 

PATH=/usr/sbin:/sbin:/bin:/usr/bin 

extDevice=eth0 
intDevice=eth1 

# 
# delete all existing rules. 
# 
iptables -F 
iptables -t nat -F 
iptables -t mangle -F 
iptables -X 

# Always accept loopback traffic 
iptables -A INPUT -i lo -j ACCEPT 


# Allow established connections, and those not coming from the outside 
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
iptables -A INPUT -m state --state NEW -i $extDevice -j ACCEPT 
iptables -A FORWARD -i $extDevice -o $intDevice -m state --state ESTABLISHED,RELATED -j ACCEPT 

# Allow outgoing connections from the LAN side. 
iptables -A FORWARD -i $intDevice -o $extDevice -j ACCEPT 

# Masquerade. 
iptables -t nat -A POSTROUTING -o $extDevice -j MASQUERADE 

# Don't forward from the outside to the inside. 
iptables -A FORWARD -i $extDevice -o $extDevice -j REJECT 

# enable routing in kernel 
echo 1 > /proc/sys/net/ipv4/ip_forward
Wichtig: In dem Script werden die zu verwendenden Geräte in den Variablen extDevice und intDevice gespeichert. IntDevice muss dabei das Netzwerkgerät sein, welches am internen Netz hört und extDevice ist das Gerät mit der Internetverbindung.

Dieses Script kann direkt eingebunden werden, indem dieses in /etc/network/if-up.d/ hinterlegt wird. (Es sollte ausführbar sein und User sollten es aus Sicherheitsgründen nicht editieren dürfen.)

Referenzen
[Bearbeiten]
  1. https://github.com/kneitzel/wikibook-files/blob/master/debian-firmenserver/enable-routing enable-routing script