use unix newlines everywhere
[debienna.git] / OpenVPN / index.mdwn
1 Sample Configs für OpenVPN mit NAT für inet (redirect-gateway) auf einem Internet Server (+ OpenVZ)
2
3 OpenVPN Sampe Server Config:
4 {{{
5 port 1194
6
7 proto tcp 
8 dev tun 
9 tls-server
10 server 192.168.50.0 255.255.255.240 # NETZ ÄNDERN JE NACH BEDARF!
11
12 ca /etc/openvpn/certs/ca_cert_vpn.pem
13 cert /etc/openvpn/certs/server_cert_vpn.pem
14 key /etc/openvpn/certs/server_key_vpn.pem
15 dh /etc/openvpn/certs/dh2048.pem
16
17 #Routes the packages to the intern network, you should use iptables instead of this
18 #push "route 192.168.0.0 255.255.255.192"
19 #push "dhcp-option DNS 192.168.50.3"
20
21 #keepalive 10 120 
22
23 auth SHA1
24
25 user root
26 group root
27
28 persist-key
29 persist-tun
30
31 verb 3 
32 comp-lzo
33 client-to-client
34 status /etc/openvpn/openvpn-status.log
35 log-append /var/log/openvpn.log
36 }}}
37
38 Client Sample Config:
39 {{{
40 client
41 dev tup 
42 proto tcp-client
43 remote example.net
44 resolv-retry infinite
45 nobind
46 persist-key
47 persist-tun
48 auth SHA1
49 ca certs/ca_cert_vpn.pem
50 cert certs/<USER>_cert_vpn.pem
51 key certs/<USER>_key_vpn.pem
52 comp-lzo
53 verb 0
54 port 143 
55 #tls-remote VPNServer
56 persist-local-ip
57 }}}
58
59
60 Zertifikate bauen: (common name muss wie der Host heißen!)
61 {{{
62 #!/bin/bash
63
64
65 mkdir certs
66 cd certs
67 echo "CA Cert erstellen..."
68 openssl genrsa -aes256 -out ca_key_vpn.pem 2048
69 openssl req -new -x509 -days 3650 -key ca_key_vpn.pem -out ca_cert_vpn.pem -set_serial 1
70 chmod 700 ../certs
71 touch serial
72 echo "01" > serial
73
74
75 echo ""
76 echo "Server Cert erstellen..."
77 echo "Wichtig: Common Name einzigartig halten und merken - wird sp.eter im VPN Script gebraucht"
78 echo ""
79 openssl req -new -newkey rsa:2048 -out server_csr_vpn.pem -nodes -keyout server_key_vpn.pem -days 3650
80 openssl x509 -req -in server_csr_vpn.pem -out server_cert_vpn.pem -CA ca_cert_vpn.pem -CAkey ca_key_vpn.pem -CAserial serial -days 3650
81 rm server_csr_vpn.pem
82
83
84 echo ""
85 echo "Zufallszahlen erstellen..."
86 openssl dhparam -out dh2048.pem 2048
87 echo ""
88
89
90 echo "Client Certs mit folgendem Commando vorbereiten:"
91 echo "./clientcerts "
92 }}}
93
94 Clientcerts
95 {{{
96 #!/bin/bash
97
98
99 cd certs
100 echo "Client Cervorbvorbereiten..."
101 openssl req -new -newkey rsa:2048 -out $1_csr_vpn.pem -nodes -keyout $1_key_vpn.pem -days 3650
102
103
104 echo ""
105 echo "Client Certs erstellen..."
106 openssl x509 -req -in $1_csr_vpn.pem -out $1_cert_vpn.pem -CA ca_cert_vpn.pem -CAkey ca_key_vpn.pem -CAserial serial -days 3650
107 echo ""
108 echo "CSR Cert loeschen..."
109 rm $1_csr_vpn.pem
110 echo "Clientcert $1_cert_vpn.pem und Clientkey $1_key_vpn.pem erstellt..."
111 cd ..
112 }}}
113
114
115 iptables für routing:
116 {{{
117 #!/bin/bash
118
119 case $1 in
120 stop)
121 iptables -t filter -F INPUT
122 iptables -t filter -F OUTPUT
123 iptables -t filter -F FORWARD
124 iptables -t filter -P INPUT ACCEPT
125 iptables -t filter -P OUTPUT ACCEPT
126 iptables -t filter -P FORWARD ACCEPT
127 ;;
128
129 start)
130 #$0 stop
131 iptables -t nat -F POSTROUTING
132
133 VPNDEV=tun0
134 EXTDEV=venet0 # ANPASSEN BEI BEDARF
135 VPNLAN=192.168.50.0/28 # BEI BEDARF ÄNDERN!
136 echo 1 > /proc/sys/net/ipv4/ip_forward
137 echo 1 > /proc/sys/net/ipv4/ip_dynaddr
138
139 iptables -t filter -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT
140 iptables -t nat -A POSTROUTING -o $VPNDEV -j MASQUERADE
141
142 iptables -A INPUT -i $VPNDEV -s $VPNLAN -j ACCEPT
143 iptables -A FORWARD -i $VPNDEV -o $EXTDEV -s $VPNLAN -j ACCEPT
144 iptables -A FORWARD -i $EXTDEV -o $VPNDEV -d $VPNLAN -m state --state RELATED,ESTABLISHED -j ACCEPT
145 iptables -t nat -A POSTROUTING -s $VPNLAN -o $EXTDEV -j SNAT --to-source <IP DES SERVERS> 
146 ;;
147
148 restart)
149 $0 stop && $0 start
150 ;;
151
152 esac
153 }}}