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