[V] DLNA Server – Netzwerk

Die Netzwerkinstallation

Jetzt wo die Kiste an sich läuft, geht es daran die Serverdienste zu konfigurieren.

Mein Plan hier lautet wie folgt:

  • Kleiner Server mit einem pppoe Modem per Cross Kabel am LAN Port.
  • Die WLAN Karte stellt ein 300mbit 802.11n WPA2 verschlüsseltes Netzwerk zur Verfügung
  • Die Clients loggen sich ins WLAN ein und gehen darüber ins Internet
  • Beim  einloggen gibts per DHCP alle Einstellungen
  • Samba und DLNA Server sind übers WLAN erreichbar
  • Eine Firewall gibts auch, ist konfigurierbar über eine Textdatei.

Aktuell sollte es so aussehen, dass wir eine Netzwerkkarte eth0 haben und diese hat bei mir die IP 192.168.1.2

Später wird diese nur zum verbinden mit dem pppoe DSL Modem genutzt.

Als zweites Interface wird die WLAN Karte mit 192.168.2.1 laufen.

Darüber wird sich alles weitere abspielen.

Die WLAN Karte

Zunächst sollten wir ein Interface für die WLAN Karte anlegen und ihr eine IP verpassen.

Wenn Ihr euch die geladenen Hardwaretreiber anguckt, solltet Ihr wenn alles geklappt hat das Modul ath9k entdecken.

Die geladenen Module kann man sich per

lsmod

angucken.

Dem Modul sollte in /etc/udev/rules.d/70.persistent-net.rules auch der Interfacename wlan0 zugeordnet sein.

Die Datei sieht bei mir wie folgt aus:

# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:27:0e:07:51:e1″, ATTR{dev_id}==”0x0″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″

# PCI device 0x168c:0x002a (ath9k)
SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:0e:8e:1f:42:aa”, ATTR{dev_id}==”0x0″, ATTR{type}==”1″, KERNEL==”wlan*”, NAME=”wlan0″

Das macht der Kernel alles von selber.

Jetzt müssen wir nur noch /etc/network/interfaces wie folgt ändern:

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

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
broadcast 192.168.1.255

# The secondary network interface
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.2.1
netmask 255.255.255.0
broadcast 192.168.2.255

Dadurch haben wir für LAN und WLAN Karte feste IPs vergeben.

Wenn Ihr jetzt ein “ifup wlan0” macht, sollte die WLAN Karte laufen.

Ein “iwlist wlan0 channel” sollte euch jetzt so einen Output geben:

wlan0     24 channels in total; available frequencies :
Channel 01 : 2.412 GHz
Channel 02 : 2.417 GHz
Channel 03 : 2.422 GHz
Channel 04 : 2.427 GHz
Channel 05 : 2.432 GHz
Channel 06 : 2.437 GHz
Channel 07 : 2.442 GHz
Channel 08 : 2.447 GHz
Channel 09 : 2.452 GHz
Channel 10 : 2.457 GHz
Channel 11 : 2.462 GHz
Channel 36 : 5.18 GHz
Channel 40 : 5.2 GHz
Channel 44 : 5.22 GHz
Channel 48 : 5.24 GHz
Channel 52 : 5.26 GHz
Channel 56 : 5.28 GHz
Channel 60 : 5.3 GHz
Channel 64 : 5.32 GHz
Channel 149 : 5.745 GHz
Channel 153 : 5.765 GHz
Channel 157 : 5.785 GHz
Channel 161 : 5.805 GHz
Channel 165 : 5.825 GHz
Current Frequency=2.437 GHz (Channel 6)

Die Karte scheint zu laufen. Dem Backport Kernel sei Dank.

Jetzt können wir uns an die anderen Programme machen, die noch fehlen.

Samba

Als nächstes bringen wir mal den Samba Fileserver zum laufen.

Dazu nehmt Ihr einfach meine Config und fügt euren User der Samba Userliste zu. Fertig.

Ich verbinde mich für gewöhnlich einfach mit dem automatisch freigegebenen Homedir des Users.

Da sich darin eh alles abspielt, reicht das.

Meine /etc/samba/smb.conf sieht wie folgt aus:

[global]
## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = grh

# server string is the equivalent of the NT Description field
server string = DLNA Server

# This will prevent nmbd to search for NetBIOS names through DNS.
dns proxy = no

#### Debugging/Accounting ####

# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m

# Cap the size of the individual log files (in KiB).
max log size = 1000

# We want Samba to log a minimum amount of information to syslog. Everything
# should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log
# through syslog you should set the following parameter to something higher.
syslog = 0

# Do something sensible when Samba crashes: mail the admin a backtrace
panic action = /usr/share/samba/panic-action %d

####### Authentication #######

# You may wish to use password encryption.  See the section on
# ‘encrypt passwords’ in the smb.conf(5) manpage before enabling.
encrypt passwords = true

# If you are using encrypted passwords, Samba will need to know what
# password database type you are using.
passdb backend = tdbsam
obey pam restrictions = yes

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
unix password sync = yes

# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
# sending the correct chat script for the passwd program in Debian Sarge).
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# ‘passwd program’. The default is ‘no’.
pam password change = yes

#======================= Share Definitions =======================

[homes]
comment = Home Directories
browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to ‘no’ if you want to be able to write to them.
read only = no

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
create mask = 0700

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
directory mask = 0700

# By default, \\server\username shares can be connected to by anyone
# with access to the samba server.
# The following parameter makes sure that only “username” can connect
# to \\server\username
# This might need tweaking when using external authentication schemes
valid users = %S

Das ist alles, was Ihr braucht.

Sinnvollerweise passt Ihr noch die workgroup und den Serverstring an.

Der Trick hier ist, dass die Homedirs der User immer freigegeben werden.

Das ist das Spezialshare [homes], darauf haben nur autentifizierte User Zugriff.

Ihr könnt auf \\server\homes oder auf \\server\<username> zugreifen, nach der Eingabe des Passwortes weiss Samba wer Ihr seid und Ihr landet automatisch in /home/<username>

Als nächstes muss euer unpriviligierter Systemuser, den Ihr beim Setup neben root angelegt habt in die Samba Userliste.

User, die nicht in der Samba-Userliste stehen, können nicht zugreifen.

Der User heisst bei mir angelone und wird wie folgt angelegt:

smbpasswd -a angelone

Dann zweimal das Passwort eintippen und Samba mit “/etc/init.d/samba restart” neustarten.

Jetzt könnt ihr auf \\server\angelone mit dem User und dem angegebenen Passwort zugreifen und landet dann in /home/angelone

Das ist auch alles, was wir vorerst an Samba Konfiguration brauchen.

DHCPD

Da der Server auch routen soll und es da immer schön ist, einen DHCP Server zu haben, konfigurieren wir noch fix DHCPD.

Installiert ist der Dienst bereits, wie wir an der Fehlermeldung beim booten festgestellt haben.

Wenn wir in /var/log/syslog gucken, steht da sogar, warum der Dienst abgeschmiert ist:

Sep 13 22:17:39 debian dhcpd: Internet Systems Consortium DHCP Server V3.1.1
Sep 13 22:17:39 debian dhcpd: Copyright 2004-2008 Internet Systems Consortium.
Sep 13 22:17:39 debian dhcpd: All rights reserved.
Sep 13 22:17:39 debian dhcpd: For info, please visit http://www.isc.org/sw/dhcp/
Sep 13 22:17:39 debian dhcpd: Internet Systems Consortium DHCP Server V3.1.1
Sep 13 22:17:39 debian dhcpd: Copyright 2004-2008 Internet Systems Consortium.
Sep 13 22:17:39 debian dhcpd: All rights reserved.
Sep 13 22:17:39 debian dhcpd: For info, please visit http://www.isc.org/sw/dhcp/
Sep 13 22:17:39 debian dhcpd: Wrote 0 leases to leases file.
Sep 13 22:17:39 debian dhcpd:
Sep 13 22:17:39 debian dhcpd: No subnet declaration for eth0 (192.168.1.2).
Sep 13 22:17:39 debian dhcpd: ** Ignoring requests on eth0.  If this is not what
Sep 13 22:17:39 debian dhcpd:    you want, please write a subnet declaration
Sep 13 22:17:39 debian dhcpd:    in your dhcpd.conf file for the network segment
Sep 13 22:17:39 debian dhcpd:    to which interface eth0 is attached. **
Sep 13 22:17:39 debian dhcpd:
Sep 13 22:17:39 debian dhcpd:
Sep 13 22:17:39 debian dhcpd: Not configured to listen on any interfaces!

Also fehlt einfach die Konfiguration.

Meine /etc/dhcpd/dhcpd.conf sieht wie folgt aus:

server-identifier debian;
log-facility local3;
allow booting;
allow bootp;
default-lease-time 600;
max-lease-time 7200;

shared-network zuhause {

# DHCP Default Subnetz
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.20 192.168.2.100;
option domain-name-servers 208.67.222.222,208.67.220.220;
option domain-name “zuhause.local”;
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
authorative;
}

}

Was macht die?

Es wird eine dynamische DHCP Range eingestellt, die von 192.168.2.20 bis 192.168.2.100 geht.

Die Rechner, die sich über den DHCP die Einstellungen holen, bekommen auch direkt die DNS Server von www.opendns.com mitgeteilt.

Die funktionieren recht gut und schnell. Ich benutze die seit geraumer Zeit.

Desweiteren kriegen die Rechner den DNS Suffix zuhause.local und die Gatewayadresse 192.168.2.1 (die IP der WLAN Karte).

DHCPD neustarten per “/etc/init.d/dhcp3-server restart” und schon sollte der Server laufen.

Ganz schlaue Füchse können ihren Rechnern auch feste IPs vergeben.

Das geht, indem Ihr ganz unten am Ende, noch hinter der letzten Klammer solche Zeilen anfügt:

host tc300 {
hardware ethernet 00:16:ce:78:b1:01;
fixed-address 192.168.2.13;
}

Dadurch kriegt der Rechner mit dem Namen tc300 mit der angegebenen MAC Adresse immer die selbe IP.

Da wir vorerst keine automatische DNS Aktualisierung haben, ist das eventuell sinnvoll damit Ihr nicht immer gucken müsst, was euer Rechner jetzt für ne IP hat.

DSL Setup

Jetzt wirds Zeit, dass wir ins internet kommen.

Debian hat dafür ein Konfigurationstool, das alle Einstellungen übernimmt.

pppoeconf

Das Programm ermittelt den nächsten ATM Access Concentrator und fragt die Benutzerdaten ab.

Dann sollte man noch dial-on-demand aktivieren (das Programm fragt danach) und fertig.

Ich kann das hier jetzt leider nicht mehr pasten, weils bei mir schon konfiguriert ist.

Is aber DAU-proof 🙂

Im “ifconfig” solltet Ihr jetzt ein Interface ppp0 sehen.

Ob inet geht könnt Ihr per “ping www.myangelone.de” testen. Sollte klappen.

Routing und Firewall aktivieren

Jetzt wo Ihr im Internet seid, muss nur noch Routing und die Firewall aktivert werden.

Routing aktiveren geht bei Debian sehr einfach.

In der Datei /etc/sysctl.conf gibts folgende Zeilen:

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

Wenn Ihr die Raute vor “net.ipv4.ip_forward=1” wegmacht, routet der Router.

Da das aber ein Kernelparameter ist, müsst Ihr neustarten damit es aktiv wird.

So richtig ins Internet kommt Ihr jetzt aber noch nicht, dafür braucht es NAT und das wird über Firewallregeln eingestellt.

Die Firewallregeln werden über das Tool “iptables” eingestellt und werden sofort aktiv wenn man Sie eintippt.

Passt also auf und testet lieber alle Regeln vorher über die Commandline von Hand, bevor Ihr sie in die Startdateien eintragt.

Dadurch sind sie nach einem Reboot nicht mehr aktiv.

Es kommt täglich millionenfach vor, dass sich Leute beim iptables basteln selber aussperren und nicht mehr auf den ssh Port kommen 🙂

Wenn Ihr eine Tastatur am System habt und dran kommt, könnt Ihr aber auch ein “iptables -F” eingeben, dadurch werden alle Regeln gelöscht und ssh ist sofort wieder frei.

Es müssen jetzt also Regeln gemacht werden, die folgendes tun:

  • Prinzipiell erstmal allen ankommenden Verkehr aus dem Internet blocken
  • NAT aktivieren, damit die Rechner im Netz surfen können
  • Ports für ssh, edonkey und anderes von aussen wieder öffnen
  • Ports forwarden auf den eigenen Rechner z.B. für Teamspeak

Damit die Regeln nach jedem Reboot wieder da sind, empfiehlt es sich diese einfach in die Datei /etc/rc.local einzutragen

Diese Datei wird nach jedem Booten mit root Rechten ausgeführt.

Meine sieht jetzt wie folgt aus:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will “exit 0” on success or any other
# value on error.
# In order to enable or disable this script just change the execution bits.
# By default this script does nothing.

# alle Firewallregeln löschen
iptables -F

# related kram akzeptieren
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

# ssh vom Internet her öffnen
iptables -A INPUT -i ppp0 -p tcp –dport 22 -j ACCEPT

# Highports öffnen, ed2k/voip
iptables -A INPUT -i ppp0 -p tcp –dport 10000:65000 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp –dport 10000:65000 -j ACCEPT

# edonkey vom Internet her öffnen
iptables -A INPUT -i ppp0 -p tcp –dport 7000:7010 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp –dport 7000:7010 -j ACCEPT

# internet-traffic an sich droppen
iptables -A INPUT -i ppp0 -j DROP

# routing von innen ins Internet aktivieren
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 0/0 -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0/0 -o ppp0 -j MASQUERADE

# Forwarding zum Teamspeak auf meinem Rechner
#iptables -A INPUT -i ppp0 -p tcp –dport 8767 -j ACCEPT
#iptables -A INPUT -i ppp0 -p udp –dport 8767 -j ACCEPT
#iptables -A FORWARD -i ppp0 -m state –state NEW -p tcp –dport 8767 -j ACCEPT
#iptables -A PREROUTING -t nat -p tcp -i ppp0 –dport 8767 -j DNAT –to 192.168.2.10
#iptables -A FORWARD -i ppp0 -m state –state NEW -p udp –dport 8767 -j ACCEPT
#iptables -A PREROUTING -t nat -p udp -i ppp0 –dport 8767 -j DNAT –to 192.168.2.10

exit 0

Was tut sie?

Zuerst werden alle Firewallregeln gelöscht.

Dann werden related Connections zugelassen, da kommt man nicht drumrum.

Dann wird der ssh Port 22 von aussen freigeschaltet, damit man von aussen über ssh auf den dyndns Hostnamen connecten kann.

Dann gebe ich alle Ports oberhalb von 10000 frei, das brauche ich hier für edonkey Verbindungen und VoIP. Das ist für gewöhnlich auch völlig problemlos.

Als nächstes gebe ich die Ports 7000 bis 7010 frei, das sind die, auf denen mein edonkey client arbeitet.

Dann wird alles andere, was von aussen kommt und ich grade nicht freigegeben habe geblockt.

Zuletzt wird das NAT eingestellt. Das brauchen wir um mit den Rechnern im Netz surfen zu können.
Hier muss für jedes interne Netz eine NAT Regel erstellt werden.
Wir haben zwei. Das 192.168.1.0 Netz der LAN Karte und das 192.168.2.0 Netz der WLAN Karte.

Zuletzt habe ich noch ein Beispiel für ein Portforwarding auf einen internen Rechner, bei dem ich den TCP und UDP Port 8767 freigebe, damit der Teamspeak Server auf dem Rechner von aussen erreichbar ist.

Ihr solltet jetzt surfen können.

Blöderweise geht WLAN aber noch nicht 🙂

Aber wenn Ihr jetzt an den LAN Port einen Switch hängt und da einen Rechner und das DSL Modem einsteckt, kommt Ihr mit dem Rechner ins Internet.

Der muss dann aber netzwerkmässig ohne DHCP konfiguriert werden mit Gateway Adresse 192.168.1.2 und einer IP aus dem 192.168.1.0 Netz.
Ihr erinnert euch: Der DHCP verteilt als Gatewayadresse die 192.168.2.1 der WLAN Karte.

Das war dann der dritte Teil des Tutorials.

Als nächstes kommt die Konfiguration von hostapd für WLAN und vom asterisk zum telefonieren.

…zu Teil vier

Comments on this post

No comments.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.