Forwarding Problem mit iptables

lundi 3 avril 2017

Hallo,

habe mir eine kleine Debian Jessie Kiste aufgesetzt die als Router/Firewall fungieren soll. Nun ist es aber leider so, dass aus mir nicht ersichtlichen Gründen das Forwarding nicht funktioniert. Der Router sitzt hinter einer Fritzbox, die den Zugang zum ISP herstellt. Ich Habe eth1(red) zum Netz der FritzBox, eth0(green) für meine Clients und wlan0(blue). Auf dem Router ist dnsmasq installiert. Die Wlan-Clients bekommen auch ein Lease von dnsmasq, können aber nicht über red ins Internet. Meines erachtens sind die iptables Regeln korrekt.

Code:

Chain INPUT (policy DROP)
target    prot opt source              destination
LOG        all  --  anywhere            anywhere            state NEW LOG level warning
ACCEPT    all  --  anywhere            anywhere
ACCEPT    all  --  anywhere            anywhere            state RELATED,ESTABLISHED
ACCEPT    icmp --  anywhere            anywhere
ACCEPT    udp  --  anywhere            anywhere            udp dpts:bootps:bootpc
ACCEPT    udp  --  anywhere            anywhere            udp dpts:bootps:bootpc
ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:6666 state NEW
ACCEPT    tcp  --  10.8.0.0/16          anywhere            tcp dpt:6666 state NEW
ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:6666 MAC 70:5A:0F:D0:09:1D state NEW
ACCEPT    tcp  --  anywhere            anywhere            tcp dpt:6666 MAC AC:FD:CE:0C:E5:5E state NEW
ACCEPT    udp  --  anywhere            anywhere            udp dpt:openvpn state NEW

Chain FORWARD (policy DROP)
target    prot opt source              destination
LOG        all  --  anywhere            anywhere            state NEW LOG level warning
ACCEPT    all  --  anywhere            anywhere            state NEW
ACCEPT    all  --  anywhere            anywhere            state RELATED,ESTABLISHED
ACCEPT    icmp --  anywhere            anywhere
ACCEPT    tcp  --  anywhere            anywhere            state NEW
ACCEPT    udp  --  anywhere            anywhere            state NEW
ACCEPT    tcp  --  anywhere            anywhere            state NEW
ACCEPT    udp  --  anywhere            anywhere            state NEW
ACCEPT    all  --  anywhere            192.168.1.0/24
ACCEPT    all  --  anywhere            192.168.1.0/24
ACCEPT    all  --  anywhere            192.168.178.222      state NEW
ACCEPT    tcp  --  anywhere            192.168.178.222      state NEW
ACCEPT    tcp  --  anywhere            192.168.178.43      state NEW
ACCEPT    tcp  --  anywhere            anywhere            multiport dports http,5001,5006 state NEW
ACCEPT    tcp  --  anywhere            anywhere            multiport dports smtp,urd,imaps,pop3s state NEW
ACCEPT    tcp  --  anywhere            anywhere            multiport dports 9010,9090 state NEW

Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination
LOG        all  --  anywhere            anywhere            state NEW LOG level warning
ACCEPT    all  --  localhost            anywhere            state NEW
ACCEPT    all  --  anywhere            anywhere
ACCEPT    all  --  anywhere            anywhere            state RELATED,ESTABLISHED
ACCEPT    icmp --  anywhere            anywhere

Auch die Route auf dem Router sieht ok aus. Lokale Pakete kommen auch ins Internet

Code:

Kernel-IP-Routentabelle
Ziel            Router          Genmask        Flags Metric Ref    Use Iface
default        fritz.box      0.0.0.0        UG    0      0        0 eth1
192.168.1.0    *              255.255.255.0  U    0      0        0 eth1
192.168.100.0  *              255.255.255.0  U    0      0        0 wlan0
192.168.178.0  *              255.255.255.0  U    0      0        0 eth0


Das Forwarding ist natürlich aktiviert

Code:

root@pissoff:~# cat /proc/sys/net/ipv4/ip_forward
1

Bin gerade etwas ratlos. Was mich etwas wundert ist die Tatsache, dass einige Regeln in der Forwarding Tabelle doppelt sind, obwohl es im Firewallskript nichts doppeltes gibt, zumindest mein Eindruck

Hier ist das Script

Code:

#!/bin/sh
#
#Firwallscript V.0.1 / 2017-02-27
##

IPTABLES="/sbin/iptables"

#Alle Tabellen leeren

$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
$IPTABLES -t mangle -F


#Default policies auf DROP setzen

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP



#Netzwerkdevices zuordnen

GREEN=eth0
RED=eth1
BLUE=wlan0
VPN=tun1
PIA=tun0

#NETZ/HOST Zuordnungen
LAN_CLIENTS="192.168.178.0/24"
SEBBI_NET="192.168.1.0/24"
NAS="192.168.178.222"
MAIL="192.168.178.4"
SQUEEZE="192.168.178.43"


#SERVICES
NAS_SERVICE="80,5001,5006"
SQUEEZE_SERVICE="9010,9090"
MAIL_SERVICE="25,465,993,995"

##Logging
$IPTABLES -A FORWARD -m state --state NEW -j LOG
$IPTABLES -A OUTPUT -m state --state NEW -j LOG
$IPTABLES -A INPUT -m state --state NEW -j LOG



#Lokale Verbindungen nach aussen zulassen

$IPTABLES -A OUTPUT -s 127.0.0.1 -m state --state NEW -j ACCEPT
##Zum testen
$IPTABLES -A FORWARD -m state --state NEW -j ACCEPT

#Lokale Verbindungen untereinander zulassen
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

##Generell alle Pakete erlauben, die zu einer bereits aufgebauten Verbindung gehXren
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

##Ping erlauben
$IPTABLES -A INPUT -p icmp -j ACCEPT
$IPTABLES -A OUTPUT -p icmp -j ACCEPT
$IPTABLES -A FORWARD -p icmp -j ACCEPT

#Verbindungen aus GRUEN ins Internet zulassen
$IPTABLES -A FORWARD -i $GREEN -o $RED -p tcp -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -i $GREEN -o $RED -p udp -m state --state NEW -j ACCEPT

#Verbindungen aus BLAU ins Internet zulassen
$IPTABLES -A FORWARD -i $BLUE -o $RED -p tcp -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -i $BLUE -o $RED -p udp -m state --state NEW -j ACCEPT

##Verbindung ins Sebbi-Net zulassen
$IPTABLES -A FORWARD -i $BLUE -d $SEBBI_NET -j ACCEPT
$IPTABLES -A FORWARD -i $GREEN -d $SEBBI_NET -j ACCEPT

#Maskierung
$IPTABLES -t nat -A POSTROUTING -o $RED -j MASQUERADE

##DHCP Clients erlaube
$IPTABLES -A INPUT -i $BLUE -p udp --dport 67:68 -j ACCEPT
$IPTABLES -A INPUT -i $GREEN -p udp --dport 67:68 -j ACCEPT

#Zugriff von BLAU auf NAS
$IPTABLES -A FORWARD -i $BLUE -o $GREEN -d $NAS -m state --state NEW -j ACCEPT


##SSH aus GREEN erlauben
$IPTABLES -A INPUT -i $GREEN -p tcp --dport 6666 -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -i $GREEN -s 10.8.0.0/16 -p tcp --dport 6666 -m state --state NEW -j ACCEPT

##SSH von meinen Notebooks erlauben( 1. Buero, 2. Lenovo Notebook)
$IPTABLES -A INPUT -p tcp --dport 6666 -m mac --mac-source 70:5A:0F:D0:09:1D -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 6666 -m mac --mac-source AC:FD:CE:0C:E5:5E -m state --state NEW -j ACCEPT

##Port 80,443 auf SQUID umleiten
#$IPTABLES -A FORWARD -i $GREEN


##Zugriff von EXTERN auf TUN
$IPTABLES -A INPUT -i $RED -p udp --dport 1194 -m state --state NEW -j ACCEPT

##TUN darf auf GREEN, aber nur NAS und SQUEEZE

$IPTABLES -A FORWARD -i $VPN -o $GREEN -p tcp -d $NAS -m state --state NEW -j ACCEPT
$IPTABLES -A FORWARD -i $VPN -o $GREEN -p tcp -d $SQUEEZE -m state --state NEW -j ACCEPT

##Internet vom FireTV wird auf Google umgeleitet
#$IPTABLES -t nat -A PREROUTING -i $GREEN ! -d $LAN_CLIENTS -p udp --dport 53 -j DNAT --to
#$IPTABLES -A OUTPUT ! -d $LAN_CLIENTS -p udp --dport 53 -j DNAT --to

##NAS erreichbar machen
$IPTABLES -t nat -A PREROUTING -i $RED -p tcp -m multiport --dports $NAS_SERVICE -j DNAT --to-destination $NAS
$IPTABLES -A FORWARD -i $RED -o $GREEN -p tcp -m multiport --dports $NAS_SERVICE -m state --state NEW -j ACCEPT

##MAIL erreichbar machen
$IPTABLES -t nat -A PREROUTING -i $RED -p tcp -m multiport --dports $MAIL_SERVICE -j DNAT --to-destination $MAIL
$IPTABLES -A FORWARD -i $RED -o $GREEN -p tcp -m multiport --dports $MAIL_SERVICE -m state --state NEW -j ACCEPT

##SQUEEZE erreichbar machen
$IPTABLES -t nat -A PREROUTING -i $RED -p tcp -m multiport --dports $SQUEEZE_SERVICE -j DNAT --to-destination $SQUEEZE
$IPTABLES -A FORWARD -i $RED -o $GREEN -p tcp -m multiport --dports $SQUEEZE_SERVICE -m state --state NEW -j ACCEPT

#Zum Schluss noch das Forwarding akzeptieren


echo "1" > /proc/sys/net/ipv4/ip_forward



0 commentaires:

Enregistrer un commentaire

 

Lorem

Ipsum

Dolor