![So stellen Sie mit NetworkManager eine Verbindung zu OpenVPN her](https://rvso.com/image/1267747/So%20stellen%20Sie%20mit%20NetworkManager%20eine%20Verbindung%20zu%20OpenVPN%20her.png)
Ich habe einen OpenVPN-Server auf meinem OpenWrt 10.03-Router [frisch geflasht] installiert:
echo "nameserver 8.8.8.8" > /etc/resolv.conf; opkg update; opkg install luci-app-openvpn openvpn openssl-util openssh-sftp-server ntpd
vim /etc/ssl/openssl.cnf # modify a few lines
[ CA_default ]
dir = /etc/openvpn
new_certs_dir = $dir/certs
certificate = $dir/ca.crt
private_key = $dir/ca.key
touch /etc/openvpn/index.txt; touch /etc/openvpn/serial; echo 01 > /etc/openvpn/serial
openssl req -nodes -new -x509 -keyout /etc/openvpn/ca.key -out /etc/openvpn/ca.crt -days 3650 # give a common name, like: vpnserver
openvpn --genkey --secret /etc/openvpn/ta.key
openssl req -nodes -new -keyout /etc/openvpn/server.key -out /etc/openvpn/server.csr # give a common name, like: vpnserver
mkdir -p /etc/openvpn/certs; mkdir -p /etc/openvpn/private
openssl ca -out /etc/openvpn/server.crt -in /etc/openvpn/server.csr
time openssl dhparam -out /etc/openvpn/dh1024.pem 1024 # it could take 10 minutes!
# generate certs for clients [X = client number]
openssl req -nodes -new -keyout /etc/openvpn/clientX.key -out /etc/openvpn/clientX.csr # give a common name! it will be the user name
openssl ca -out /etc/openvpn/clientX.crt -in /etc/openvpn/clientX.csr
# e.g.:
openssl req -nodes -new -keyout /etc/openvpn/client1.key -out /etc/openvpn/client1.csr # give a common name! it will be the user name
openssl ca -out /etc/openvpn/client1.crt -in /etc/openvpn/client1.csr
vim /etc/config/openvpn
config 'openvpn' 'openvpn_server'
option 'enable' '1'
option 'port' '1194'
option 'proto' 'udp'
option 'dev' 'tap'
option 'ca' '/etc/openvpn/ca.crt'
option 'cert' '/etc/openvpn/server.crt'
option 'key' '/etc/openvpn/server.key'
option 'tls_auth' '/etc/openvpn/ta.key 0' # server: 0
option 'dh' '/etc/openvpn/dh1024.pem'
option 'comp_lzo' '1'
option 'server' '10.20.30.0 255.255.255.0'
option 'keepalive' '10 120'
option 'persist_key' '1'
option 'persist_tun' '1'
option 'mute' '20'
option 'verb' '3'
option 'client_to_client' '1'
list 'push' 'dhcp-option DNS 10.20.30.1'
/etc/init.d/openvpn enable
/etc/init.d/openvpn start
ifconfig -a | less
ping 10.20.30.1
# here comes the firewall part
vim /etc/config/firewall # modify it
config 'include'
option 'path' '/etc/firewall.user'
config 'redirect'
option 'src' 'wan'
option 'proto' 'udp'
option 'src_dport' '1194'
option 'dest_port' '1194'
option '_name' 'OpenVPN'
vim /etc/firewall.user # modify it
iptables -t nat -A prerouting_rule -i $WAN -p udp --dport 11194 -j ACCEPT
iptables -A input_rule -i $WAN -p udp --dport 11194 -j ACCEPT
iptables -A forwarding_rule -i tap+ -o br-lan -j ACCEPT
iptables -A forwarding_rule -i br-lan -o tap+ -j ACCEPT
iptables -A input_rule -i tap+ -j ACCEPT
iptables -A output_rule -o tap -j ACCEPT
/etc/init.d/firewall restart
# tar the files that goes to the client1
mkdir -p /root/client1
cp /etc/openvpn/ca.crt /root/client1/; cp /etc/openvpn/client1.crt /root/client1/; cp /etc/openvpn/client1.key /root/client1/; cp /etc/openvpn/ta.key /root/client1/
cd /root/; tar -cf client1.tar client1
Es scheint "ok".
Ich verbinde meinen PC mit dem LAN-Port des Routers und möchte es ausprobieren. Ich verwende Fedora 14 mit GNOME. Im NetworkManager-Applet stelle ich folgende Dinge ein:
Ich versuche eine Verbindung herzustellen, aber es schlägt fehl. Hier sind die Protokolle:
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> Starting VPN service 'openvpn'...
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN service 'openvpn' started (org.freedesktop.NetworkManager.openvpn), PID 23552
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN service 'openvpn' appeared; activating connections
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN plugin state changed: 1
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN plugin state changed: 3
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN connection 'elsovpn' (Connect) reply received.
Mar 7 15:42:43 ASDF nm-openvpn[23554]: OpenVPN 2.1.1 i686-redhat-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Jan 5 2010
Mar 7 15:42:43 ASDF nm-openvpn[23554]: WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Mar 7 15:42:43 ASDF nm-openvpn[23554]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
Mar 7 15:42:43 ASDF nm-openvpn[23554]: Cannot load certificate file /home/g/Desktop/client1/client1.crt: error:0200100D:system library:fopen:Permission denied: error:20074002:BIO routines:FILE_CTRL:system lib: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
Mar 7 15:42:43 ASDF nm-openvpn[23554]: Exiting
Mar 7 15:42:43 ASDF kernel: [55630.235164] type=1400 audit(1299508963.340:23608): avc: denied { read } for pid=23554 comm="openvpn" name="client1.crt" dev=dm-1 ino=3019385 scontext=system_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file
Mar 7 15:42:43 ASDF NetworkManager[1458]: <warn> VPN plugin failed: 1
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN plugin state changed: 6
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> VPN plugin state change reason: 0
Mar 7 15:42:43 ASDF NetworkManager[1458]: <warn> error disconnecting VPN: Could not process the request because no VPN connection was active.
Mar 7 15:42:43 ASDF NetworkManager[1458]: <info> Policy set 'Auto Ethernet' (eth0) as default for IPv4 routing and DNS.
Mar 7 15:42:49 ASDF NetworkManager[1458]: <info> VPN service 'openvpn' disappeared
eine wichtige Sache: Die IP-Adresse meines Routers [der mit dem OpenVPN-Server] ist 192.168.1.2, und ich musste sie nirgendwo eintragen. Wie also könnte das Netzwerkmanager-Applet die IP-Adresse meines OpenVPN-Servers kennen? Ich denke, das ist das Problem, aber ich kann einfach nicht finden, wo ich 192.168.1.2 eintragen soll
Ich habe versucht, bei Google nach „Es wurde keine Methode zur Überprüfung des Serverzertifikats aktiviert“ zu suchen, aber ich habe nichts gefunden und versuche es jetzt schon seit Stunden … :\
PS: Wenn ich [auf dem Router]:
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
Und starte tcpdump und versuche, von meinem PC aus eine Verbindung herzustellen, es passiert nichts! Der Fehler liegt also im Netzwerkmanager-Applet!?
Nochmals, PS: Wenn ich:
$ telnet 192.168.1.2 1197
Trying 192.168.1.2...
telnet: connect to address 192.168.1.2: Connection refused
$connbsp;
Gibt es gute Anleitungen zum Einrichten dieser Art von OpenVPN [wie im Pastebin-Link, auf einem OpenWRT-Router...]?
Lohnt es sich, ein anderes OpenVPN-Clientprogramm zu finden? [außer dem NetworkManager-Applet]
Antwort1
Warum genau versuchen Sie, von Ihrem LAN aus eine Verbindung zu Ihrem OpenVPN-Server herzustellen? Der Grund für die Installation von OpenVPN auf Ihrem Router sollte einer der folgenden sein:
A) als Client, um Ihr gesamtes privates Netzwerk mit einem anderen OpenVPN-Server zu verbinden oder
B) als Server, um sich von der WAN-Seite aus mit Ihrem privaten Netzwerk zu verbinden
Um Ihre Frage zu beantworten: Ihr Problem liegt hier in der Debug-Ausgabe, die Sie eingefügt haben:
Cannot load certificate file /home/g/Desktop/client1/client1.crt: error:0200100D:system library:fopen:Permission denied:
Überprüfen Sie die Berechtigungen dieser Datei und stellen Sie sicher, dass sie zumindest für Ihren Benutzer (und die übergeordneten Verzeichnisse) lesbar sind. Abhängig von Ihrer client.conf müssen Sie sie möglicherweise auch allgemein lesbar machen.
Antwort2
Möglicherweise akzeptiert der Router nur OpenVPN-Verbindungen von der WAN-Seite, nicht aber von der LAN-Seite. Versuchen Sie, ihn von einem Computer außerhalb Ihres Netzwerks aus zu erreichen, indem Sie die öffentliche IP-Adresse des Routers aufrufen.
Stellen Sie außerdem sicher, dass Ihr Router eine routbare öffentliche IP-Adresse hat. Die Screenshots, die Sie gepostet haben, legen nahe, dass dies nicht der Fall ist. (Hinweis: Wenn die öffentliche IP die Form 10.xxx oder 192.168.xx hat, ist sie nicht routbar.) Dies kann passieren, wenn Ihr ISP Sie hinter seinen eigenen NAT-Router gesetzt hat. In diesem Fall können Sie vom Internet aus keine Verbindung zu Ihrem Router herstellen. (Spiel vorbei.)
Antwort3
Um auch eine automatische Verbindung herzustellen, verwenden Sie das folgende Python-Skript:https://gist.github.com/1547663
Der erste Parameter für das Skript ist der Name der VPN-Verbindung im NetworkManager und der zweite sind durch Kommas getrennte Namen von Netzwerken, die ignoriert werden sollen (die Verwendung einer VPN-Verbindung zu Hause ist sinnlos).
Beispiel
$ git clone git://gist.github.com/1547663.git /home/user/autovpn/
$ echo "python /home/user/autovpn/autovpn.py 'myvpn' 'Auto homenetwork,Auto worknetwork' > /var/log/autovpn.log&" > /etc/rc.local
$ /etc/rc.local
Wenn Sie jetzt eine Verbindung zu WLAN/Ethernet herstellen, wird auch versucht, eine VPN-Verbindung einzurichten.