PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VPN & Fedora Core 5 -> sever läuft nicht



der_angler
20.01.07, 11:46
nabend,
also ich versuche jetzt seit ner ganzen Weile einen VPN-Server einzurichten.
Als Server-System dient ein Fedora Core 5 System, als Client will ich mich von Windows aus ins Netzwerk einklinken.
Ich bin ziemlich exakt nach dieser Anleitung vorgegangen http://www.linuxforen.de/forums/showthread.php?t=169354&highlight=vpn

Aber funktionieren tut es irgendwie nicht.
Die Erstellung der Keys & Zertifikate ging ja noch ohne Probleme.
Aber sobald ich VPN starten will bekomme ich folgende Fehlermeldung:

[root@kraus-automaten ~]# service openvpn start
openvpn starten: RTNETLINK answers: File exists
[FEHLGESCHLAGEN]


messages zeigt mir dabei folgendes:

Jan 20 11:36:10 kraus-automaten openvpn[13202]: OpenVPN 2.1_beta14 i386-redhat-linux-gnu [SSL] [LZO1] [EPOLL] built on Apr 14 2006
Jan 20 11:36:10 kraus-automaten openvpn[13202]: WARNING: you are using user/group/chroot without persist-tun -- this may cause restarts to fail
Jan 20 11:36:10 kraus-automaten openvpn[13202]: WARNING: you are using user/group/chroot without persist-key -- this may cause restarts to fail
Jan 20 11:36:10 kraus-automaten openvpn[13202]: WARNING: --keepalive option is missing from server config
Jan 20 11:36:10 kraus-automaten openvpn[13202]: Diffie-Hellman initialized with 1024 bit key
Jan 20 11:36:10 kraus-automaten openvpn[13202]: TLS-Auth MTU parms [ L:1558 D:138 EF:38 EB:0 ET:0 EL:0 ]
Jan 20 11:36:10 kraus-automaten openvpn[13202]: TUN/TAP device tun0 opened
Jan 20 11:36:10 kraus-automaten openvpn[13202]: TUN/TAP TX queue length set to 100
Jan 20 11:36:10 kraus-automaten openvpn[13202]: /sbin/ip link set dev tun0 up mtu 1500
Jan 20 11:36:10 kraus-automaten openvpn[13202]: /sbin/ip addr add dev tun0 local 192.168.32.1 peer 192.168.32.2
Jan 20 11:36:10 kraus-automaten openvpn[13202]: /sbin/ip route add 192.168.32.0/24 via 192.168.32.2
Jan 20 11:36:10 kraus-automaten openvpn[13202]: ERROR: Linux route add command failed: shell command exited with error status: 2
Jan 20 11:36:10 kraus-automaten openvpn[13202]: Data Channel MTU parms [ L:1558 D:1450 EF:58 EB:135 ET:0 EL:0 AF:3/1 ]
Jan 20 11:36:10 kraus-automaten openvpn[13202]: failed to find GID for group user
Jan 20 11:36:10 kraus-automaten openvpn[13202]: Exiting


cat /etc/openvpn/openvpn_ssl.conf

dev tun
proto udp
port 1194
server 192.168.32.0 255.255.255.0
mode server
ifconfig-pool-persist /etc/openvpn/ipp.txt
tls-server
dh /etc/openvpn/zertifikate/dh1024.pem
ca /etc/openvpn/zertifikate/ca.crt
cert /etc/openvpn/zertifikate/server.crt
key /etc/openvpn/zertifikate/server.key
push „route 192.168.32.0 255.255.255.0“
cipher AES-256-CBC
user nobody # Nur Linux
group user # Nur Linux
status /etc/openvpn/openvpn-status.log
comp-lzo
verb 3


Und irgendwie sitze ich jetzt wieder mal gewaltig auf dem Schlauch .... die Server IP ist intern "192.168.32.1" .... außerdem meldest er die InternetIP an einen "No-IP.com"-Account (zwecks Einwahl).

Meine Firewall habe ich eigentlich auch entsprechend umgestellt:

#!/bin/bash

echo "Starte IP-Paketfilter"

# iptables-Modul
modprobe ip_tables
# Connection-Tracking-Module
modprobe ip_conntrack
# Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# MY_REJECT-Chain
iptables -N MY_REJECT

# MY_REJECT fuellen
iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
iptables -A MY_REJECT -p icmp -j DROP
iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

# MY_DROP-Chain
iptables -N MY_DROP
iptables -A MY_DROP -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP "
iptables -A MY_DROP -j DROP

# Alle verworfenen Pakete protokollieren
iptables -A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "
iptables -A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "OUTPUT INVALID "
iptables -A FORWARD -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "FORWARD INVALID "

# Korrupte Pakete zurueckweisen
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP

# Stealth Scans etc. DROPpen
# Keine Flags gesetzt
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j MY_DROP

# SYN und FIN gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP

# SYN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP

# FIN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP

# FIN ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP

# PSH ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP

# URG ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j MY_DROP

# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Maximum Segment Size (MSS) für das Forwarding an PMTU anpassen
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# Connection-Tracking aktivieren
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ! ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# VPN
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tap+ -j ACCEPT
iptables -A FORWARD -i tap+ -j ACCEPT

# SSH
iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 22 -j ACCEPT

# LAN-Zugriff auf eth0
iptables -A INPUT -m state --state NEW -i eth0 -j ACCEPT

# LAN-Zugriff auf eth1
iptables -A INPUT -m state --state NEW -i eth1 -j ACCEPT

# Default-Policies mit REJECT
iptables -A INPUT -j MY_REJECT
iptables -A OUTPUT -j MY_REJECT
iptables -A FORWARD -j MY_REJECT

# Routing
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

# Masquerading
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# SYN-Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

# Stop Source-Routing
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

# Stop Redirecting
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

# Reverse-Path-Filter
for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done

# Log Martians
for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done

# BOOTP-Relaying ausschalten
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

# Proxy-ARP ausschalten
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

# Ungültige ICMP-Antworten ignorieren
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

# ICMP Echo-Broadcasts ignorieren
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null

# Max. 500/Sekunde (5/Jiffie) senden
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

# Speicherallozierung und -timing für IP-De/-Fragmentierung
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time

# TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Maximal 3 Antworten auf ein TCP-SYN
echo 3 > /proc/sys/net/ipv4/tcp_retries1

# TCP-Pakete maximal 15x wiederholen
echo 15 > /proc/sys/net/ipv4/tcp_retries2


PS:
Meine Windows-Client Datei sieht folgendermassen aus:

dev tun
remote XXXXX.no-ip.org
tls-client
ca ca.crt
cert client1.crt
key client1.key
pull
port 1194
cipher AES-256-CBC
comp-lzo
verb 3

Ist das wenigstens richtig?

Kann mir bitte jemand mit dem VPN-Server helfen?

RichieX
20.01.07, 16:52
Als erstes ist mir aufgefallen, dass der Port 1194 in deinem iptables-script nicht offen ist.

Die Fehler in der syslog kannst du dir sicher selbst erklären, oder? Versuche das erstmal auszubessern, dann funktioniert das ganze bestimmt.

RichieX

der_angler
20.01.07, 17:27
Die Fehler in der syslog kannst du dir sicher selbst erklären, oder?

Leider nein ....

RichieX
20.01.07, 18:05
you are using user/group/chroot without persist-tun -- this may cause restarts to fail
Welchen Teil der Meldung verstehst du da nicht?
Ein Tip:

user nobody # Nur Linux
group user # Nur Linux
auskommentieren.

WARNING: --keepalive option is missing from server config
Nee, dass erklär ich dir nicht!

ERROR: Linux route add command failed: shell command exited with error status: 2
Schon mal das Script alleine ausgeführt?

RichieX

der_angler
20.01.07, 18:20
also nachdem ich jetzt mal die Zeilen
user nobody # Nur Linux
group user # Nur Linux

auskommentiert habe läuft openVPN zumindest schonmal.

Die Fehler
WARNING: --keepalive option is missing from server config
und
ERROR: Linux route add command failed: shell command exited with error status: 2 habe ich allerdings noch nicht gefunden. Vielleicht gibst du mir ja doch mal einen Tip, vorallem weiß ich nicht welches Skript ich einzeln starten soll.
Muss dazu sagen das ich auch kein FC Fan bin. Naja, aber irgendwie muss ich es ja zum laufen bekommen.

Ich kann mich auch von einem Windows-Client aus verbinden, nur leider passiert dann nicht mehr. Suche ich dann unter dem Windows.-Netzwerk nach dem Fileserver, so finde ich nix.

Bitte helft einem VPN-Noob ...

RichieX
20.01.07, 18:33
also nachdem ich jetzt mal die Zeilen
user nobody # Nur Linux
group user # Nur Linux

auskommentiert habe läuft openVPN zumindest schonmal.

Fein.


Die Fehler
WARNING: --keepalive option is missing from server config

Das bedeutet, du sollst einfach noch den Parameter "keepalive" in die server config reinnehmen, steht doch nun wortwörtlich da.


und
ERROR: Linux route add command failed: shell command exited with error status: 2 habe ich allerdings noch nicht gefunden. Vielleicht gibst du mir ja doch mal einen Tip, vorallem weiß ich nicht welches Skript ich einzeln starten soll.

Diese Zeile hier meint er da:


push „route 192.168.32.0 255.255.255.0“



Muss dazu sagen das ich auch kein FC Fan bin. Naja, aber irgendwie muss ich es ja zum laufen bekommen.

Versteh ich jetzt nicht.


Ich kann mich auch von einem Windows-Client aus verbinden, nur leider passiert dann nicht mehr. Suche ich dann unter dem Windows.-Netzwerk nach dem Fileserver, so finde ich nix.

Wie schon gesagt, erst Fehlermeldungen wegbringen, dann funktioniert das ganze sicherlich auch.

RichieX

der_angler
20.01.07, 19:42
hmm, okay, stehe wohl ein bißchen auf dem Schlauch.
Okay, Keepalive ist soweit klar, aber ich verstehe nicht was an
push „route 192.168.32.0 255.255.255.0“ falsch ist? Wird hier nicht der Windows-Client dem 192.168.32.xxx Netz zugewiesen? Und das muss doch so sein, damit ich vom Client aus auf den Fileserver unter 192.168.32.1 zugreifen kann?
Hmm, ich sehe schon ist net ganz so leicht wie gedacht.

RichieX
20.01.07, 21:05
Wird hier nicht der Windows-Client dem 192.168.32.xxx Netz zugewiesen? Und das muss doch so sein, damit ich vom Client aus auf den Fileserver unter 192.168.32.1 zugreifen kann?
Nein, nicht ganz. mit push "route ..." zeigst du dem Client welches Netzwerk hinter dem Server ist. Warum er hier den Fehler bringt, kann ich dir auch nicht sagen. Es müsste auch erstmal ohne funktionieren. Kommentiere es erstmal aus, starte neu, verbinde den Client und pinge von Client zu Server. Das Routing kannst du auch später noch machen.

RichieX