OpenVPN Verbindung bricht beim starten der Firewall (iptables) zusammen

defiance

New Member
Hallo,

wie der Titel schon sagt habe ich eine funktionierende OpenVPN Verbindung. Beim starten der Firewall, kann ich den Server jedoch nicht mehr erreichen.

Bevor ich die Konfiguration poste erst noch ein paar Worte zu dem Aufbau meines Netzes:

******** ******* ****** **********
*Internet*--*Server*---*Client*~~~~*Notebooks*
******** ******* ****** **********

Ich habe einige Endgeräte die mit Notebook bezeichnet sind, da sie über WLAN auf den OpenVPN Client zugreifen. Dieser stellt die OpenVPN Verbindung zum OpenVPn Server her und leitet alle Pakete an diesen weiter. Der OpenVPN Server routet dann im letzten Schritt ins Internet. Das Routing funktioniert auch, solange ich die Firewall auf dem Client nicht anschalte. Ich denke ich habe nur irgend eine Kleinigkeit vergessen, finde aber derzeit meinen Fehler nicht. Ich hoffe Ihr könnt mir weiterhelfen:

Firewallskript:
Code:
##!/bin/sh
#
#		Dieses script in /etc/init.d kopieren
#

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Firewall"
NAME=OpenVPN_Client_Firewall
DAEMON=/usr/sbin/$NAME
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
EXTIF=ath0
ITIF=tun0
IPSELF=192.168.1.1

d_start() {
	start-stop-daemon --start --quiet --pidfile $PIDFILE \
		--exec $DAEMON
        
}

d_stop() {
	start-stop-daemon --stop --quiet --pidfile $PIDFILE \
		--name $NAME
	iptables -F                    #alle Regeln loeschen
	iptables -A INPUT -j ACCEPT    #alle ankommenden Pakete erlauben
	iptables -A OUTPUT -j ACCEPT   #alle ausgehenden Pakete erlauben
	iptables -A FORWARD -j ACCEPT  #alle weiterzuleitenden Pakete erlauben
}

d_reload() {
	start-stop-daemon --stop --quiet --pidfile $PIDFILE \
		--name $NAME --signal 1
}

case "$1" in
  start)
	#
	# hier die iptables-Regel festlegen
	# richtige IP-Adresse beachten!
	#
	echo -n "Starting $DESC: $NAME"
	iptables -F 
	iptables -A INPUT -s 0/0 -d 0/0 -i lo -j ACCEPT
 	iptables -A OUTPUT -s 0/0 -d 0/0 -o lo -j ACCEPT
	
    #Port 22 (SSH) erlauben und weiterleiten
	iptables -A OUTPUT -o $ITIF -p tcp --destination-port 22 -j ACCEPT
	iptables -A OUTPUT -o $ITIF -p udp --destination-port 22 -j ACCEPT
	iptables -A OUTPUT -o $EXTIF -p tcp -s $IPSELF --sport 22 -j ACCEPT 
	iptables -A OUTPUT -o $EXTIF -p udp -s $IPSELF --sport 22 -j ACCEPT
	iptables -A INPUT -i $ITIF -p tcp --source-port 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A INPUT -i $ITIF -p udp --source-port 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A INPUT -i $EXTIF -p tcp --destination-port 22 -j ACCEPT
 	iptables -A INPUT -i $EXTIF -p udp --destination-port 22 -j ACCEPT
	iptables -A FORWARD -i $EXTIF -p tcp --destination-port 22 -j ACCEPT 
	iptables -A FORWARD -i $ITIF -p tcp --source-port 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
    
	#Port 53 (DNS) erlauben und weiterleiten
	iptables -A OUTPUT -o $ITIF -p tcp --destination-port 53 -j ACCEPT
	iptables -A OUTPUT -o $ITIF -p udp --destination-port 53 -j ACCEPT
	iptables -A OUTPUT -o $EXTIF -p tcp -s $IPSELF --sport 53 -j ACCEPT 
	iptables -A OUTPUT -o $EXTIF -p udp -s $IPSELF --sport 53 -j ACCEPT
	iptables -A INPUT -i $ITIF -p tcp --source-port 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A INPUT -i $ITIF -p udp --source-port 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A INPUT -i $EXTIF -p tcp --destination-port 53 -j ACCEPT
 	iptables -A INPUT -i $EXTIF -p udp --destination-port 53 -j ACCEPT
	iptables -A FORWARD -i $EXTIF -p tcp --destination-port 53 -j ACCEPT 
	iptables -A FORWARD -i $ITIF -p tcp --source-port 53 -m state --state ESTABLISHED,RELATED -j ACCEPT
	
	#Port 80 (HTTP) erlauben und weiterleiten
	iptables -A OUTPUT -o $ITIF -p tcp --destination-port 80 -j ACCEPT 
    iptables -A OUTPUT -o $EXTIF -p tcp --source-port 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A INPUT -i $EXTIF -p tcp --destination-port 80 -j ACCEPT 
	iptables -A INPUT -i $ITIF -p tcp --source-port 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A FORWARD -i $EXTIF -p tcp --destination-port 80 -j ACCEPT
	iptables -A FORWARD -i $ITIF -p tcp --source-port 80 -m state --state ESTABLISHED,RELATED -j ACCEPT

	#Port 443 (HTTPS) erlauben und weiterleiten
	iptables -A OUTPUT -o $ITIF -p tcp --destination-port 443 -j ACCEPT 
    iptables -A OUTPUT -o $EXTIF -p tcp --source-port 443 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A INPUT -i $EXTIF -p tcp --destination-port 443 -j ACCEPT 
	iptables -A INPUT -i $ITIF -p tcp --source-port 443 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A FORWARD -i $EXTIF -p tcp --destination-port 443 -j ACCEPT
	iptables -A FORWARD -i $ITIF -p tcp --source-port 443 -m state --state ESTABLISHED,RELATED -j ACCEPT
	
	#VPN Ports weiterleiten
	iptables -A OUTPUT -o $ITIF -p tcp --destination-port 1723 -j ACCEPT 
    iptables -A OUTPUT -o $EXTIF -p tcp --source-port 1723 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A INPUT -i $EXTIF -p tcp --destination-port 1723 -j ACCEPT 
	iptables -A INPUT -i $ITIF -p tcp --source-port 1723 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A FORWARD -i $EXTIF -p tcp --destination-port 1723 -j ACCEPT
	iptables -A FORWARD -i $ITIF -p tcp --source-port 1723 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A OUTPUT -o $ITIF -p udp --destination-port 47 -j ACCEPT 
    iptables -A OUTPUT -o $EXTIF -p udp --source-port 47 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A INPUT -i $EXTIF -p udp --destination-port 47 -j ACCEPT 
	iptables -A INPUT -i $ITIF -p udp --source-port 47 -m state --state ESTABLISHED,RELATED -j ACCEPT
	iptables -A FORWARD -i $EXTIF -p udp --destination-port 47 -j ACCEPT
	iptables -A FORWARD -i $ITIF -p udp --source-port 47 -m state --state ESTABLISHED,RELATED -j ACCEPT
	
    #Umleitung von nicht angemeldeten Usern auf Startseite	
	iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to-destination $IPSELF:80

	iptables -A INPUT -j DROP  
	iptables -A OUTPUT -j DROP 
	iptables -A FORWARD -j DROP
	#d_start
	echo "."
	;;
  stop)
	echo -n "Stopping $DESC: $NAME"
	iptables -F
	#d_stop
	echo "."
	;;
 cloak)
	echo -n "Deny all"
	iptables -A INPUT -j DROP
  	iptables -A OUTPUT -j DROP
	iptables -A FORWARD -j DROP
	;; 
 restart)
	echo -n "Restarting $DESC: $NAME"
	d_stop
	sleep 1
	d_start
	echo "."
	;;
  status)
	pids=`ps ax|grep "firewall"|grep -v grep|cut -d" " -f2`
	if test "$pids"
	then
		for p in $pids
		do
			echo "Das Programm laeuft als Prozess $pids"
		done
	else
		echo "Das Programm ist gestoppt."
	fi
	;;	
  *)
	echo "Usage: $SCRIPTNAME {start|stop|cloak|restart|status}" >&2
	exit 1
	;;
esac
exit 0

Für jedes einzelnen Endgerät (Notebook) wird über ein Webinterface folgende Regel hinzugefügt (mit der entsprechenden IP):

Code:
    #Endgerät freischalten
    iptables -I FORWARD -s 192.168.1.10 -i ath0 -j ACCEPT
    iptables -I FORWARD -d 192.168.1.10 -i eth0 -j ACCEPT
    iptables -I PREROUTING -t nat -p tcp -s 192.168.1.1 --dport 80 -j ACCEPT
 
Verwechselt du da nicht etwas?

OpenVPN hat den Port 1194, laut deiner Konfiguration werden die Ports für PPTP (Die VPN-Variante von Microsoft) verwendet (Port 1723, wofür 47 ist weiß ich nicht, hängen aber scheinbar zusammen)

Übrigends: SSH läuft nur auf TCP, DNS-Anfragen werden nur über UDP abgewickelt (TCP kommt nur bei AXFR/IXFR zum Einsatz, da bei Zones-Transfers häufig große Datenmengen übertragen werden) von daher können einige Einträge problemlos entfernt werden.
 
Back
Top