Ich hab mir ein eigenes VPN für meinen Server eingerichtet und möchte hier kurz die Vorgehensweise dokumentieren.
Zuerst wird OpenVPN dafür installiert
apt-get install openvpn
Dann werden die notwendigen Zertifikate erstellt
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa cd /etc/openvpn/easy-rsa nano vars export KEY_SIZE=4096 # Then, read in the vars file, clean old keys and # certificates (if any) and create new ones . ./vars ./clean-all ./build-ca # Next, we'll create the server key ./build-key-server server # Same procedure for creating a client key ./build-key client1 # Next up we'll generate Diffie Hellman parameters ./build-dh # As we want to use OpenVPN's "tls-auth" feature for perfect # forward secrecy, we'll have to generate a shared secret openvpn --genkey --secret ta.key mv ta.key keys
Danach wird OpenVPN konfiguriert
cd /etc/openvpn cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz . gunzip server.conf.gz nano server.conf port 143 proto tcp dev tun ca /etc/openvpn/easy-rsa/keys/ca.crt cert /etc/openvpn/easy-rsa/keys/server.crt key /etc/openvpn/easy-rsa/keys/server.key # This file should be kept secret dh /etc/openvpn/easy-rsa/keys/dh4096.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0 # This file is secret comp-lzo user nobody group nogroup persist-key persist-tun status openvpn-status.log log-append openvpn.log verb 3 # Use PAM authentication plugin /usr/lib/openvpn/openvpn-auth-pam.so login # enable mgmt over telnet management localhost 7505 mgmt-pw-file echo "password" > /etc/openvpn/mgmt-pw-file chmod 700 /etc/openvpn/mgmt-pw-file chown root:root /etc/openvpn/mgmt-pw-file nano /etc/default/openvpn AUTOSTART="server" #> Dann OpenVPN neustarten /etc/init.d/openvpn restart # Management Interface aufrufen telnet localhost 7505 # Anzahl der verbundenen Clients abrufen cat /etc/openvpn/openvpn-status.log | grep -E "^10.8" | wc -l
Die Firewall entsprechend konfigurieren bei mir ist das Shorewall
nano /etc/shorewall/interfaces ############################################################################### #ZONE INTERFACE BROADCAST OPTIONS vpn tun0 detect routeback nano /etc/shorewall/policy ############################################################################### #SOURCE DEST POLICY LOG LIMIT:BURST # LEVEL vpn all ACCEPT $LOG nano /etc/shorewall/rules ############################################################################################################################ #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK # PORT PORT(S) DEST LIMIT GROUP ## OpenVPN ACCEPT net $FW udp 1194 ACCEPT net $FW tcp 143 nano /etc/shorewall/tunnels ############################################################################### #TYPE ZONE GATEWAY GATEWAY # ZONE openvpn:tcp:143 net 109.239.60.254 nano /etc/shorewall/zones ############################################################################### #ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS vpn ipv4 #> Dann Firewall neustarten shorewall safe-restart
Zuletzt muss noch der Client konfiguriert werden
nano /etc/openvpn/client.conf client dev tun proto tcp remote 109.239.60.32 143 resolv-retry infinite bind user nobody group nogroup persist-key persist-tun ca ca.crt cert client1.crt key client1.key ns-cert-type server tls-auth ta.key 1 comp-lzo verb 3 auth-user-pass # Fix for Win 7: OpenVPN route problem ## http://mugurel.sumanariu.ro/windows/vista-and-win-7-openvpn-route-problem/ route-method exe route-delay 2
Damit man eine Verbindung zum Server aufbauen kann müssen auf den Client folgende Dateien kopiert werden: client1.crt, client1.key, ca.crt und ta.key
Client für Windows unter OpenVPN Community Downloads [1]
Client für Mac unter OpenVPN VPN Solution MacOSX [2]
Workaround für Fehlermeldung im OpenVPN log „Need IPv6 code in mroute_extract_addr_from_packet“
Quelle:
HOWTO: Using OpenVPN on Debian GNU/Linux
OpenVPN+Shorewall. Internal routing OK, external fails
HOWTO setup a small server – OpenVPN (Virtual Private Network)
Using OpenVpn with Shorewall
How to Fix OpenVPN Error Message “Need IPv6 code in mroute_extract_addr_from_packet”
How-To: OpenVPN on Debian Squeeze with Username/Password authentication