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