Wlan0 Eth0 Bridgen NAT Server einrichten

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von DieKrabbe » 19.11.2014 19:38:29

Hallo Community,

ich habe ein Debian Root (HomeServer) Server zuhause stehen und möchte gerne die Wlan Karte mit der Lan karte bridgen So dass über Wlan das Internet Reinkommt und über Lan Verteilt wird. Ich habe schon gelesen das man die NAT Funktion benötigt. Allerdings weis ich nicht wie man sowas bewerkstelligt. Könnte jemand evtl. ein kleines Tutorial dazu machen welche befehle etc. mit der IP Verteilung kenne ich mich bereits aus.

Wlan mit Wlan Router Verbunden.

Lan mit Alten Router verbunden der als switch dient. DHCP ist aus.

NossiTron
Beiträge: 12
Registriert: 10.12.2003 19:24:06

Re: Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von NossiTron » 20.11.2014 08:12:12

Hi,
ich habe gerade das gleiche Problem, daher wäre ich auch an einer funktionierenden Lösung interessiert.

Im Detail siehts bei mir so aus:
Kabel-Modem verteilt per DHCP eine IP an den dahinter hängenden Router, der dann als AP dient.
eth0 (192.168er-Netz zum Modem)
wlan0 (10.0.er-Netz) verteilt per hostapd und dnsmasq DHCP-IPs an die Clients

[WWW] -> [MODEM] DHCP -> eth0 [ROUTER] DHCP wlan0 -> [Clients]

Folgende Einstellungen in der /etc/network/interfaces führen dazu, dass ich mich per WLAN am Router anmelden kann und ins Internet komme:

Code: Alles auswählen

auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet dhcp
 
auto wlan0
iface wlan0 inet static
address 10.0.0.1
netmask 255.255.255.0
broadcast 10.0.0.255
 
# Firewall zurücksetzen, Tabellen leeren
up /sbin/iptables -F
up /sbin/iptables -X
up /sbin/iptables -t nat -F
 
# Kabelnetzwerk maskieren, Nat aktivieren
up iptables -A FORWARD -o eth0 -i wlan0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
up iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 
# hostapd und dnsmasq (neu) starten
up service hostapd restart
up service dnsmasq restart


Zusätzlich habe ich in /etc/sysctl.conf das IPv4-Forwarding aktiviert: net.ipv4.ip_forward=1

---

Da ich die Firewall-Einstellungen ausgliedern will habe ich mir folgendes Skript aus mehreren Anleitungen zusammengeschrieben, was nach Ausführung aber dazu führt, dass ich mich nicht mehr per WLAN anmelden kann.
Kann da ein Experte vielleicht drüberschauen und mir den Fehler mitteilen?

Code: Alles auswählen

#!/bin/bash

#firewall zurücksetzen
iptables -F
iptables -X
iptables -t nat -F

#Standard: Alles abweisen
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT

#ungueltige Pakete abweisen
iptables -A INPUT -m state --state INVALID -j DROP

#auth-Service beantworten sonst kann es zu Performance-Problemen kommen
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset

#Loopback-Traffic zulassen
iptables -A INPUT -i lo -j ACCEPT

#Pakete von bereits aufgebauten Verbindungen oder in Relation zu diesen stehen zulassen
iptables -A INPUT -m state --state RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

################################################################################
# Router Regeln                                                                #
################################################################################

#NAT, Anbinden des WLAN an das Internet
# "maskiere Pakete die den Router über eth0 verlassen"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Forwarding
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

################################################################################

#alle Pakete die bis hierher nicht zgelassen wurden abweisen
#TCP-Pakete mit einem TCP-Reset abweisen
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

#alle anderen Pakete hier abweisen
iptables -A INPUT -j REJECT
Im Log ist kein Fehler auszumachen. Wie gesagt, mit den Einstellungen in der ../interfaces funktioniert alles, aber mit dem ausgeführten iptables-Skript kann ich keine WLAN-Verbindung mehr aufbauen.

Wenn ich die Firewall zurücksetzen kann ich mich verbinden.

Danke im voraus

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von Cae » 20.11.2014 08:42:42

NossiTron hat geschrieben:

Code: Alles auswählen

iptables -t filter -P INPUT DROP
Das taucht in deiner ifup-Sammlung oben nicht auf, default ist ACCEPT. Waere also ein moeglicher Kandidat. Wenn ein DHCPd auf der Kiste laeuft, wuerde er keine Anfragen sehen und je nach Doofheit des Clients hat man dann "kein WLAN" oder eine entsprechend aussagekraeftigere Fehlermeldung.

Zum Problem des TE: Bridge und NAT schliesst sich aus. Wenn der Server in der Mitte keine Spezialfunktionen uebernehmen soll, waere eine Bridge das simpelste, dazu sollte im wesentlichen eine /etc/network/interfaces mit

Code: Alles auswählen

auto br0
iface br0 inet manual
	bridge_ports eth0 wlan0
drin ausreichen (installierte Debianbridge-utils vorausgesetzt).

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

NossiTron
Beiträge: 12
Registriert: 10.12.2003 19:24:06

Re: Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von NossiTron » 20.11.2014 09:19:36

Danke für die Hilfe, aber das hat leider nichts gebracht.

Ich habe jetzt versucht die Anweisungen aus der ../interfaces in das externe Skript zu übertragen so dass ich jetzt folgende Konstellation habe:

interfaces

Code: Alles auswählen

auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet dhcp
 
auto wlan0
iface wlan0 inet static
address 10.0.0.1
netmask 255.255.255.0
broadcast 10.0.0.255
externes Skript, dass ich nach dem Neustart manuell ausgeführt habe:

Code: Alles auswählen

#!/bin/bash
IPT=/sbin/iptables
${IPT} -F
${IPT} -X
${IPT} -t nat -F
${IPT} -A FORWARD -o eth0 -i wlan0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
${IPT} -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
${IPT} -t nat -A POSTROUTING -o eth0 -j MASQUERADE
service hostapd restart
service dnsmasq restart
Aber selbst dann funktioniert das Verbinden nicht mehr.
Irgendwie steh ich auf dem Schlauch.

EDIT:
Wenn ich den Neustart von hostapd und dnsmasq rausnehme, dann funktioniert es.
Aber mein eigenes Skript leider nicht.
Zuletzt geändert von NossiTron am 20.11.2014 09:46:48, insgesamt 1-mal geändert.

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von habakug » 20.11.2014 09:45:56

Hallo!

Du solltest mit

Code: Alles auswählen

# iptables -L -v
oder
# iptables -L -vv
nachschauen, was du da gebastelt hast.

Gruss, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

NossiTron
Beiträge: 12
Registriert: 10.12.2003 19:24:06

Re: Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von NossiTron » 20.11.2014 10:27:27

So folgender Stand:

interfaces

Code: Alles auswählen

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto wlan0
iface wlan0 inet static
address 10.0.0.1
netmask 255.255.255.0
broadcast 10.0.0.255
Neustart des Rechners -> manuelle Ausführung des folgenden Skriptes -> Verbindung kann aufgebaut werden und Internet funktioniert auch.

Code: Alles auswählen

#!/bin/bash
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -F
/sbin/iptables -A FORWARD -o eth0 -i wlan0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
/sbin/iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -L -v NoPaste-Eintrag38099
iptables -L -vv NoPaste-Eintrag38100

Neustart des Rechners -> manuelle Ausführung des folgenden Skriptes -> Verbindung wird nicht aufgebaut.

Code: Alles auswählen

#!/bin/bash
iptables -F
iptables -X
iptables -t nat -F
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -o eth0 -i wlan0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -j REJECT
iptables -L -v NoPaste-Eintrag38101
iptables -L -vv NoPaste-Eintrag38102

Ich glaube ich habe hier iptables -A FORWARD -o eth0 -i wlan0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT die Netze vertauscht, denn das angegebene Netz gehört zu eth0, aber auch wenn ich das Netz -s 192.168.0.0/24 weglasse, funktioniert es nicht.

NossiTron
Beiträge: 12
Registriert: 10.12.2003 19:24:06

Re: Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von NossiTron » 20.11.2014 11:03:00

So, mit folgendem Skript funktioniert es:

Code: Alles auswählen

#!/bin/bash
IPT=/sbin/iptables

#firewall zurücksetzen
${IPT} -F
${IPT} -X
${IPT} -t nat -F
${IPT} -t nat -X
${IPT} -t mangle -F
${IPT} -t mangle -X
${IPT} -P INPUT ACCEPT
${IPT} -P FORWARD ACCEPT
${IPT} -P OUTPUT ACCEPT

#Standard: Alles abweisen
#iptables -t filter -P INPUT DROP                                     <<< ?????
${IPT} -t filter -P OUTPUT ACCEPT
${IPT} -t filter -P FORWARD ACCEPT

#ungueltige Pakete abweisen
${IPT} -A INPUT -m state --state INVALID -j DROP

#Loopback-Traffic zulassen (z.Bsp. Apache <> MySql)
${IPT} -A INPUT -i lo -j ACCEPT

#Pakete von bereits aufgebauten Verbindungen oder in Relation zu diesen stehen zulassen
${IPT} -A INPUT -m state --state RELATED -j ACCEPT
${IPT} -A INPUT -m state --state ESTABLISHED -j ACCEPT

################################################################################
# Router Regeln                                                                #
################################################################################

#NAT, Anbinden des WLAN an das Internet
# maskiere Pakete die den Router über eth0 verlassen
${IPT} -t nat -A POSTROUTING -o eth0 -j MASQUERADE

#Forwarding
${IPT} -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
${IPT} -A FORWARD -i wlan0 -o eth0 -j ACCEPT

################################################################################
# hier individuelle Regeln um Pakete zuzulassen                                #
################################################################################

#SSH-Zugriff intern zulassen
${IPT} -A INPUT -p tcp --dport 22 -s 10.0.0.0/24 -j ACCEPT

#ICMP-Nachrichten intern zulassen
${IPT} -A INPUT -p icmp -s 10.0.0.0/24 -j ACCEPT

################################################################################

#alle Pakete die bis hierher nicht zugelassen wurden abweisen
#TCP-Pakete mit einem TCP-Reset abweisen
${IPT} -A INPUT -p tcp -j REJECT --reject-with tcp-reset

#alle anderen Pakete hier abweisen
#${IPT} -A INPUT -j REJECT                                             <<< ?????
Kann mir wer erklären warum die markierten (<<< ?????) Zeilen Probleme machen?
Speziell bei der letzen Zeile kann ich mir das nicht erklären.
Die beiden Zeilen stellen doch eigentlich nur sicher, dass alle nicht-akzeptierten Pakete verworfen werden oder?

DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Re: Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von DieKrabbe » 20.11.2014 14:28:40

Zunächst mal Nasitroon Danke das du meine Frage mit deinem Problem störst was nicht weiter schlim ist aber ich sehe da nicht mehr durch wozu ist das Sript im 6. Beitrag? Bzw. wie wende ich es an? Als .sh oder .pl etc.

NossiTron
Beiträge: 12
Registriert: 10.12.2003 19:24:06

Re: Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von NossiTron » 20.11.2014 21:59:03

Hi,
ich wollte deine Frage nicht stören.. ich hatte es nur so verstanden dass dein Problem mit meinem identisch war.
Sorry dafür.

Das letzte Skript von mir wende ich wie folgt an:

Das Skript packe ich in eine .sh, dann chmod -x skript.sh, dann einmal starten.
Dadurch wird die Firewall mit den richtigen Regeln initiiert.

Wenn alles so funktioniert wie es soll, dann mache ich es wie folgt permanent.

1. Skript ausführen um die Regeln zu setzen
2. Regeln sichern: iptables-save > /etc/iptables.rules
3. Mit dem Hochfahren des Netzwerkstacks die Regeln setzen:
/etc/network/if-up.d/iptabels mit folgendem Inhalt erstellen:

Code: Alles auswählen

#!/bin/bash
iptables-restore < /etc/iptables.rules
und ausführbar machen.

Schritt 1 und 2 wiederholen wenn sich an den Regeln etwas ändert.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von Cae » 21.11.2014 08:19:17

NossiTron hat geschrieben:Das Skript packe ich in eine .sh, dann chmod -x skript.sh
chmod +x.
NossiTron hat geschrieben:2. Regeln sichern: iptables-save > /etc/iptables.rules
[...]
Oder stattdessen Debianiptables-persistent nehmen, was dafuer gedacht ist und das Ganze sauberer loest.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

DieKrabbe
Beiträge: 49
Registriert: 06.11.2014 14:01:14

Re: Wlan0 Eth0 Bridgen NAT Server einrichten

Beitrag von DieKrabbe » 21.11.2014 15:29:14

Habe es rausgekiregt hier guckt da nach :

viewtopic.php?f=30&t=152257

Antworten