Aufgabe: Einrichtung eines Routers mit squeeze ohne X und mit shorewall als Firewall. Internet-Verbindung über DSL-Modem. Keine DMZ (ent-/demilitarisierte Zone), kein DHCP.
Die korrekte Modem-Einrichtung beschreibe ich hier nicht, das ist schon zu lange her, so dass ich das nur sehr ungenügend erinnere. Irgendwas war mit Bridge-Modus, das habe ich noch im Kopf, weil das an dieser Stelle vorher hartnäckig schief ging.
1. Die als Router vorgesehene Maschine muss über mindestens zwei Ethernet-Netzwerkkarten (NICs) verfügen. Im System werden die als eth0 und eth1 geführt.
Zunächst wird squeeze-Grundsystem installiert. Benötigt wird auch das Paket iptables, wird aber, wenn ich recht erinnere, beim Grundsystem automatisch mitinstalliert.
pppoe muss installiert werden. pppoeconf muss nicht, sollte aber installiert werden, da sich damit die Anbindung der Router-Maschine ans Modem bedeutend einfacher bewerkstelligen lässt.
Das Paket openssh-server muss installiert werden, wenn man den Router von den/einer anderen Maschine(n) im LAN aus administrieren will.
Wenn das alles drauf ist, kann man die Netzwerkkarten einrichten. Ich habe in der /etc/network/interfaces eingetragen für die NIC (bi mir eth0, man kann dafür genau so gut die als eth1 geführte nehmen), die ins interne LAN führt:
Code: Alles auswählen
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.100.251
netmask 255.255.255.0
network 192.168.100.0
broadcast 192.168.100.255
Die Einrichtung der zweiten NIC (bei mir eth1), die ins Internet führt, überlässt man pppoeconf. pppoeconf fragt (wenn ich mal wieder recht erinnere) bei der Einrichtung, ob die Internetverbindung beim Booten automatisch gestartet werden soll. Da mir das für einen Router ganz praktisch erschien, habe ich das bejaht. Weiterhin wurde gefragt, ob der Nameserver des Providers benutzt werden soll. Das habe ich auf Anraten von Forumsmitgliedern verneint. In diesem Falle muss dann nach Beendigung von pppoeconf ein Nameserver in /etc/resolv.conf eingetragen werden. Ich habe den vom Chaos Computer Club empfohlenen eingetragen. Für eth1 hat pppoeconf dann in /etc/network/interfaces eingetragen:
Code: Alles auswählen
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf
provider dsl-provider
auto eth1
iface eth1 inet manual
shorewall-Konfiguration:
Ich habe die Beispiel-Konfig-Dateien aus /usr/share/doc/shorewall/examples/two-interfaces (zwei NICs!) nach /etc/shorewall kopiert. In der Datei interfaces muss man schauen, ob eth0 und eth1 richtig zugeordnet sind (bei mir eth0 für loc, eth1 für net [=internet]) außerdem musste ich den Eintrag DHCP entfernen.
Weiterhin habe ich datei masq so abgeändert:
Code: Alles auswählen
#INTERFACE SOURCE ADDRESS PROTO PORT(S) IPSEC $
ppp0 192.168.100.0/255
In /etc/shorewall/shorewall.conf habe ich geändert/eingetragen:
Code: Alles auswählen
STARTUP_ENABLED=Yes
IP_FORWARDING=On
Code: Alles auswählen
startup=1
So, in diesem Stadium, konnte ich mich von einer "normalen" Maschine aus zwar auf dem Router als root einloggen und auch Internetadressen anpingen, sowohl via IP, als auch per Namen, aber im Browser ging gar nichts. Dann habe ich noch diese beiden Zeilen in /etc/rc.local auf dem Router vor der Zeile "exit 0"eingetragen:
Code: Alles auswählen
iptables --table nat --append POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT
Falls sich jemand die Mühe gemacht hat, bis hierher lesend duchzuhalten, würden mich Antworten auf folgende Fragen interessieren:
Ist die Firewall (shorewall) überhaupt aktiv? Alles, was ich vor der shorewall-Konfiguration, mit dem Nameserver und nachher mit /etc/rc.local gemacht habe, hätte mich auch ohne shorewall ins Internet gebracht (das hatte ich schon vorher getestet).
Gibt's an dieser Konfiguration Dopplungen/Überflüssiges?
Sollte ich zwecks genauerer Untersuchung die Inhalte der anderen configs unter /etc/shorewall mal posten?
Grüße, Günther