BLog

ImprintImpressum
PrivacyDatenschutz
DisclaimerHaftung
Downloads 

Netzwerkeinrichtung des FreeBSD-Home-Servers

Der FreeBSD-Home-Server FHS dient als Gateway ins Internet. Er hat zwei Ethernet-Schnittstellen, und Im Idealfall wird eine davon (das WAN-Interface) direkt mit dem DSL- oder Kabel-Modem des Internet-Service-Provider (ISP) verbunden. In dem Fall bezieht das WAN-Interface seine öffentliche IP-Adresse via DHCP, PPPoE bzw. BootP direkt via Modem vom ISP.

Wenn das nicht möglich ist (Zwangsrouter), dann richtet man eine pseudo-öffentliche IP-Adresse aus dem separierten Zwangsrouter-LAN am WAN-Interface des Servers ein und stellt am Zwangsrouter die DMZ darauf um. Jedenfalls muß sämtlicher Datenverkehr vom Intranet in das Internet hin und zurück ausschließlich über das WAN-Interface des FreeBSD-Home-Servers gehen. Im Falle eines Zwangsrouters sind dessen WLAN-Funktion sowie DHCP- und DNS-Services unbedingt stillzulegen.

Einrichtung der Netzwerk-Interfaces

Die wesentliche Einrichtung des LAN-Interfaces geschieht im Rahmen der Basis-Installation, wie sie im FreeBSD-Handbuch beschrieben wird. In dem Systemstart-Script /etc/rc.conf füge man nun die notwendigen Einträge für das WAN-Interface hinzu. Hier wird die Einrichtung für den Anschluß an ein Kabel-Modem gezeigt. Für den Anschluß an ein DSL-Modem konsultiere man das PPPoE-Kapitel im FreeBSD-Handbuch. Ferner werden beide Interfaces mit den Bezeichnern (description) LAN bzw. WAN versehen. Schließlich muß noch der Eintrag zu defaultrouter entfernt werden:

...
### Netzwerk Einstellungen
hostname="server"
ifconfig_em0="inet 192.168.1.35/24 -tso description LAN"
ifconfig_em1="SYNCDHCP -tso description WAN"
defaultrouter="192.168.1.1"​

Einrichtung von NAT und Firewall

Network Address Translation ist notwendig, damit interne Clients, die mit dem LAN-Interface des Servers verbunden sind, über dessen WAN-Interface das Internet erreichen können. Alle ein- und ausgehenden Datenpakete passieren die Firewall, und man kann damit das interne Netzwerk gegen Angriffe von aussen abschotten sowie Zugriffe über das WAN-Interface auf den Server auf das Notwendigste beschränken. Hierzu wird ipfw(8) als Stateful Firewall mit In-Kernel-NAT konfiguriert. Dazu legt man ein Konfigurations-Script unter /root/config/ipfw.conf an, ...

nano /root/config/ipfw.conf

... und zwar mit dem folgenden Inhalt:

#!/bin/sh

for iface in `/sbin/ifconfig -l` ; do
   desc=`/sbin/ifconfig $iface | /usr/bin/sed -n '/.description: /{s///;s/ .*//;p;}'`
   if [ "$desc" == "LAN" ] ; then
      LAN="$iface"
   elif [ "$desc" == "WAN" ] ; then
      WAN="$iface"
   fi
done

/sbin/ipfw -q flush
/sbin/ipfw -q table all destroy
/sbin/ipfw -q nat 1 config if $WAN unreg_only reset

# Allow anything within the LAN - interfaces with heavy traffic shall come first
/sbin/ipfw -q add 10 allow ip from any to any via $LAN
/sbin/ipfw -q add 20 allow ip from any to any via lo0

# Catch spoofing of incomming packets
/sbin/ipfw -q add 70 deny ip from any to any not antispoof in recv $WAN

# NAT rule for incomming packets
/sbin/ipfw -q add 100 nat 1 ip4 from any to any in recv $WAN
/sbin/ipfw -q add 101 check-state

# Rules for outgoing traffic - allow everything that is not explicitely denied
/sbin/ipfw -q add 1000 deny ip from not me to any 25 out xmit $WAN
/sbin/ipfw -q add 1010 deny ip from any to any 5353 out xmit $WAN

# Allow all other outgoing connections
/sbin/ipfw -q add 2000 skipto 10000 tcp from any to any out xmit $WAN setup keep-state
/sbin/ipfw -q add 2010 skipto 10000 udp from any to any out xmit $WAN keep-state

# Rules for incomming traffic - deny everything that is not explicitely allowed
/sbin/ipfw -q add 5000 allow tcp from any to me 11 in recv $WAN setup keep-state

# Catch tcp/udp packets, but don't touch gre, esp, icmp traffic
/sbin/ipfw -q add 9998 deny tcp from any to any via $WAN
/sbin/ipfw -q add 9999 deny udp from any to any via $WAN

# NAT rule for outgoing packets
/sbin/ipfw -q add 10000 nat 1 ip4 from any to any out xmit $WAN

# Allow anything else - just in case ipfw has not been configured as open firewall
/sbin/ipfw -q add 65534 allow ip from any to any

Das Firewall-Konfigurations-Script muß ausführbar gemacht werden:

chmod +x /root/config/ipfw.conf

Da in einer Stateful-Firewall mit NAT die inneren Filter-Regeln, jene, die sich zwischen den beiden nat-Anweisungen 100 und 10000 befinden, unter Umständen mehr als einmal durchlaufen werden müssen, muß die Systemkontroll-Variable net.inet.ip.fw.one_pass auf den Wert 0 gesetzt werden. Das geschieht durch das Anfügen der entsprechenden sysctl(8)-Variablen-Zuweisung an die Datei /etc/sysctl.conf:

echo "net.inet.ip.fw.one_pass=0" >> /etc/sysctl.conf

Die NAT/Firewall wird im Systemstart-Script /etc/rc.conf durch Hinzufügen der folgenden Einträge aktiviert:

...
# NAT/Firewall
gateway_enable="YES"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_script="/root/config/ipfw.conf"

Man verbinde das WAN-Interface mit dem Modem des ISP's und das LAN-Interface mit einem Switch an dem die internen Clients des entsprechenden Netzbereiches (hier 192.168.1.1 - 192.168.1.254) angeschlossen sind. Nach dem Neustart des Servers sollte alles aktiv sein.

Bei dem genannten Switch darf es sich durchaus um einen SOHO-Wireless-Router handeln, die WAN-Seite muß allerdings deaktiviert bleiben, und der WAN-Anschluß wird nicht belegt.

Im Folge-Artikel werden die Netzwerkdienste DNS und DHCP auf dem FreeBSD-Home-Server eingerichtet. Bis dahin müssen die Clients mit statischen IP-Adressen und mit einem externen DNS-Server (z.b. 8.8.8.8) konfiguriert werden, damit sie über den Home-Server (Router ist hier: 192.168.1.35) in das Internet gelangen können, z.B. unter Systemeinstellungen > Netzwerk bei Mac OS X:

Copyright © Dr. Rolf Jansen - 2014-07-29 00:46:01

PROMOTION