In diesem Beitrag wird beschrieben, wie amn einen Raspberry Pi (RPi) als einen Router konfigurieren und einsetzen kann, der auch einen DNS Forward Server wie auch einen DHCP Dienst bereitstellt.
Im ersten Beitrag zum RPi ging es um die RPi Installation eines Raspberry Pi – ohne angeschlossen Monitor und ohne Tastatur (headless) sowie ein paar erste Konfigurationen. Im dritten Beitrag geht es um das Hardening eines RPi, der als Router mit DNS und DHCP arbeitet.
In ersten Artikel geht es darum den RPi so zu konfigurieren, dass dieser als Router arbeitet. Dazu sind im Wesentlichen die folgende Dinge notwendig:
- ein weiteres Netzwerk Interface physikalisch zur Verfügung stellen (hier eth1)
- das Netzwerk Interface konfigurieren
- DNS + DHCP installieren und konfigurieren
Ziel:
- eth0 stellt die Verbindung zum DHCP Server (192.168.10.0/8) und darüber hinaus zum ISP her
- eth1 stellt die Verbdingung zum lokalen Netz her (10.1.10.0/8)
- ein DCHP Server stellt im lokalen Netz die dynamisch zu vergebenen Adressen zur Verfügung
- ein DNS Server cahed alle Requests, um Namensauflösungen schneller zu machen
1. ein weiteres Netzwerk Interface physikalisch zur Verfügung stellen (hier eth1)
Natürlich kann man den RPi auch mit nur einem physikalischen Netzwerk als Router konfigurieren. Um die Sache jedoch einfacher zu gestallten, beschreibe ich hier die Möglichkeit, ein weiteres Netz physikalisch hinzuzufügen und basierend auf diesem alles zu konfigurieren.
Ich habe dazu einen USB – RJ25 Adapter gewählt, um in einem der freien USB Ports ein weiteres Netzwerk Interface zur Verfügung zu stellen. Dazu muss dieser Adapter einfach in den USB Port gesteckt werden.
Direkt nach dem Einstecken wird das neue Interface erkannt und man erhält folgende Ausgabe:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:44:09:93 inet addr:192.172.10.5 Bcast:192.172.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:62 errors:0 dropped:0 overruns:0 frame:0 TX packets:50 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:8141 (7.9 KiB) TX bytes:9059 (8.8 KiB) eth1 Link encap:Ethernet HWaddr 00:23:56:0c:23:11 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1212 (1.1 KiB) TX bytes:1212 (1.1 KiB) |
2. das Netzwerk Interface konfigurieren
Um nun dem Interface eth1 eine feste Adresse zuzuweisen, benötigt es nur, die Datei /etc/network/interfaces zu konfigurieren. Es sind Einträge für eth1 hinzuzufügen, so dass diese dann so aussieht:
File: /etc/network/interfaces
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | auto lo iface lo inet loopback auto eth0 iface eth0 inet static mtu 1500 dns_search scons.de dns-nameserver localhost 192.172.10.5 192.172.10.1 address 192.172.10.5 netmask 255.255.255.0 gateway 192.172.10.1 auto eth1 iface eth1 inet static mtu 1500 dns_search scons.de dns-nameserver localhost 192.172.10.5 address 10.1.10.1 netmask 255.255.255.0 gateway 10.1.10.1 |
Und zuletzt noch die Datei /etc/hosts um diesen Eintrag erweitern:
File: /etc/hosts
1 2 3 4 5 6 | 127.0.0.1 localhost.scons.de localhost 192.172.10.5 ns.scons.de ns 10.1.10.1 fw.scons.de fw 192.172.10.1 fritz.box |
Danach sind nur die Netzwerkdienste durchzustarten oder einfach Rebooten mittels
1 | sudo reboot |
und ifconfig liefert dann folgendes Ergebnis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $ ifconfig eth0 Link encap:Ethernet HWaddr b8:27:eb:44:09:93 inet addr:192.172.10.5 Bcast:192.172.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:61 errors:0 dropped:0 overruns:0 frame:0 TX packets:43 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:8358 (8.1 KiB) TX bytes:8109 (7.9 KiB) eth1 Link encap:Ethernet HWaddr 00:23:56:0c:23:11 inet addr:10.1.10.1 Bcast:10.1.10.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:20 errors:0 dropped:0 overruns:0 frame:0 TX packets:20 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1684 (1.6 KiB) TX bytes:1684 (1.6 KiB) |
3. DNS + DHCP installieren und konfigurieren
Im ersten Teilschritt müssen wir die Software installieren
1 | sudo apt-get install dnsmasq |
Danach muss dieser Dienst in /etc/dnsmasq.conf noch konfiguriert werden. Dazu müssen die folgenden Zeilen auskommentiert und teilweise angepasst werden werden:
File: /etc/dnsmasq.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | domain-needed bogus-priv filterwin2k local=/scons.de/ except-interface=eth0 expand-hosts domain=scons.de dhcp-range=10.1.10.200,10.1.10.250,12h read-ethers dhcp-option=option:ntp-server,192.172.10.5,192.172.10.1 dhcp-option=42,0.0.0.0 dhcp-option=252,"\n" dhcp-option=vendor:MSFT,2,1i dhcp-authoritative dhcp-script=/bin/echo cache-size=150 no-negcache log-dhcp |
Im Anschluss muss noch die Datei /etc/ethers konfiguriert werden. In dieser wird festgelegt, welche MAcAdressen eines Rechners welche IP fest zugeordnet bekommen:
File: /etc/ethers
1 2 3 4 5 6 7 8 9 | ### Start /etc/ethers # # Zuordnung MacAddre - IP für DCHP (dnsmasq) # b8:27:eb:44:09:93 ns.scons.de 00:23:56:0c:23:11 fw.scons.de ### Ende /etc/ethers |
Ist auch das geschehen, kann der Service durchegstartet werden, damit die Änderungen wirksam werden:
1 | sudo service dnsmasq restart |
Hiernach kann man noch optional noch NAT aktivieren durch Eingaben von:
1 | sudo iptables -t nat -A POSTROUTING -j MASQUERADE |