Ich kann nicht herausfinden, warum meine OpenVPN-Verbindung nicht funktioniert. Es scheint, als ob die Verbindung einwandfrei funktioniert. Ich kann mich mit meinem Server verbinden, aber wenn ich einmal verbunden bin, kann ich das Internet nicht über VPN nutzen.
Dies ist ein VPS-Server, der unter Debian läuft
Hier ist meine OpenVPN-Server.conf-Datei
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 6
mute 20
Und hier ist meine client.conf-Datei
client
dev tun
proto udp
remote server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
remote-cert-tls server
Ich habe auch Firewall-Regeln hinzugefügt, um Verbindungen und Routen zu akzeptieren, aber seltsamerweise erscheinen einige Regeln mehrfach. Hier ist meine iptables-Speicherdatei
# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*nat
:PREROUTING ACCEPT [53:9749]
:POSTROUTING ACCEPT [9:675]
:OUTPUT ACCEPT [9:675]
-A PREROUTING -d server_ip/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 1194
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source server_ip
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Dec 22 04:36:18 2013
# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*filter
:INPUT ACCEPT [946:112417]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [824:172939]
-A INPUT -i tun0 -p tcp -m tcp --dport 1194 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT
COMMIT
# Completed on Sun Dec 22 04:36:18 2013
Ich habe auch /etc/sysctl.conf überprüft, um sicherzustellen, dass
net.ipv4.ip_forward=1
ich habe auch
net.ipv6.conf.all.forwarding=1
Ich habe also eine OpenVPN-Verbindung auf meinem Linux-PC und auf Virtualbox XP ausprobiert und beide hatten eine Verbindung, aber keiner von ihnen hatte nach der Verbindung Zugriff auf das Internet.
Das Seltsamste daran ist, dass beim Durchführen meines Traceroute eine Verbindung über VPN angezeigt wird.
Ich mache zum Beispiel traceroute google.com
1 my ip from vpn connection
2 openvpn server ip
3 ...
4 ...
5 ... few hops between server to google
6 and finally google server ip
Traceroute zeigt also, dass die Verbindung über VPN läuft, und auch wenn ich einen Ping ausführe, erhöht sich der Ping auf 100 ms. Im Gegensatz dazu beträgt der Ping, wenn ich nicht mit VPN verbunden bin, etwa 20 ms.
Aber wenn ich versuche, mit einem beliebigen Programm (Firefox, Chrome, iExplorer) im Internet zu surfen, passiert nichts. Nichts wird geladen und die Verbindung läuft ab.
Es liegt nicht daran, dass mein Server langsam ist und daher die Seiten nicht geladen werden. Der Geschwindigkeitstest zeigt eine Verbindung von etwa 70 Mbit/s auf dem Server, und ich habe eine Verbindung von 6 Mbit/s.
Und wenn ich versuche, eine Verbindung zu einem anderen VPN wie Cloudnymous herzustellen, funktioniert alles einwandfrei. Es stimmt nur etwas mit meinem OpenVPN-Setup nicht.
BEARBEITEN: Schließlich dachte ich, ich hätte es endlich zum Laufen gebracht, nachdem ich mit vielen Einstellungen herumgespielt habe, kann ich mich endlich mit meinem VPN verbinden und von dort auf das Internet zugreifen.
Jetzt habe ich noch ein letztes Problem. Da ich Linux verwende, funktionieren einige Programme hier nicht und ich verwende Virtualbox mit einer Windows XP-Installation, aber wenn ich mit VPN auf Virtualbox verbunden bin, kann ich im Internet surfen. Aber kein Programm kann eine Verbindung zum Internet herstellen. Außerdem verliert meine VPN-Verbindung von Zeit zu Zeit die Internetverbindung, und es liegt nicht an meiner Internet- oder Serververbindung, denn während ich in dieser Zeit die Internetverbindung über VPN verliere, kann ich mich immer noch mit Putty über SSH mit dem Server verbinden und verschiedene Dinge tun.
Antwort1
Masquerading funktioniert auf einem VPS nicht. Sie müssen iptables
Source NAT
stattdessen Folgendes verwenden:
iptables -t nat -A POSTROUTING -s 10.x.x.x/xx -j SNAT --to-source y.y.y.y
x.x.x.x/x
ist das VPN-Subnetz - y.y.y.y
ist die IP-Adresse Ihrer Server-Ausgabeschnittstelle.
Antwort2
Stellen Sie sicher /etc/default/ufw
, dass auf dem Server DEFAULT_FORWARD_POLICY="ACCEPT"
statt "DROP"
und starten Sie dann die Firewall neu
sudo ufw disable
sudo ufw enable
Antwort3
Ich hatte ein ähnliches Problem, bei dem OpenVPN einwandfrei funktionierte, bis ich den Router wechselte. Ich vermutete, dass es an der Firewall des Routers lag, obwohl ich die erforderlichen Ports geöffnet hatte. Ich schaute mir jedoch rc.local an und sah, dass bei der ersten Konfiguration die iptables-Zeile mit der tatsächlichen IP-Adresse eingerichtet worden war und nicht mit der erwarteten $MY_IP-Variable:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to 192.168.0.15
statt:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --zu $MY_IP
Das Problem bestand darin, dass durch die Änderung des Routers dem Server eine andere IP zugewiesen wurde und ich einfach eine Reservierung für die neue IP vorgenommen habe und erwartet habe, dass alles funktioniert.
Wenn ich für den Server die gleiche IP reserviert hätte wie zuvor, hätte ich mir viel Kopfzerbrechen ersparen können.