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:
Für jedes einzelnen Endgerät (Notebook) wird über ein Webinterface folgende Regel hinzugefügt (mit der entsprechenden IP):
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