OpenVPN unter Debian

openvpn_logodebian

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

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.