OpenVPN sätts upp antingen med "routing" eller "bridging", beroende på vilken funktionalitet man vill ha. Här förklaras lite av för- och nackdelarna med de båda metoderna.
Denna handledning avser "bridging", som ger möjlighet att hantera broadcast trafik. Det krävs för att spela LAN-spel över Internet.
Innan vi börjar med att sätta upp OpenVPN behöver vi plocka fram några uppgifter för maskinen, som ska vara värd för tjänsten.
Extern adress (ip eller domännamn)
Nätverksinterface (t.ex. eth0 alt. eth1, ...)
Internt ipnr (t.ex. 192.168.11.2)
Nätmask (t.ex. 255.255.255.0)
Broadcast (t.ex.192.168.11.255)
Intern gateway (t.ex. 192.168.11.1)
Några av uppgifterna hämtas enklast med
Kod: Markera allt
ifconfig
Börja med att få root rättigheter.
Kod: Markera allt
sudo -s
Kod: Markera allt
apt-get install openvpn bridge-utils openssl
Kod: Markera allt
cp -R /usr/share/doc/openvpn/examples/ /etc/openvpn/
Kod: Markera allt
cp /etc/openvpn/examples/easy-rsa/1.0/* /etc/openvpn/examples/easy-rsa/
Navigera till folder:
Kod: Markera allt
cd /etc/openvpn/examples/easy-rsa/
Ändra i några rader:
Kod: Markera allt
nano ./vars
export KEY_SIZE=1024
export KEY_COUNTRY=KG
export KEY_PROVINCE=NA
export KEY_CITY=BISHKEK
export KEY_ORG="OpenVPN-TEST"
export KEY_EMAIL="me@myhost.mydomain"
Ändra till export KEY_SIZE=2048 och i övrigt enligt önskemål.
Skapa nu en Certificate Authority (CA)
Kod: Markera allt
. ./vars
Kod: Markera allt
./clean-all
Kod: Markera allt
./build-ca
Skapa certifikat och nyckel för servern. Använd samma uppgifter som vid skapandet av CA. Lämna blankt när ett "utmanande lösenord" efterfågas.
Kod: Markera allt
./build-key-server server
Kod: Markera allt
./build-key nisse
Kod: Markera allt
cd /etc/openvpn/examples/easy-rsa/
Kod: Markera allt
sudo . ./vars
Kod: Markera allt
sudo ./build-key pelle
Skapa Diffie Hellman parametrar. Det tar en stund, så det här är stället där det vanligtvis rekommenderas att ta en kopp kaffe.
Kod: Markera allt
./build-dh
Kod: Markera allt
openvpn --genkey --secret ta.key
Anm. normalt skrivs de statiska nycklarna som ta.key 0 utan underscore, men min Debian Etch server protesterar över detta och vill ha ett underscore. Detta finns därför fortsättningsvis med i handledningen.
Kod: Markera allt
cp /etc/openvpn/examples/easy-rsa/ta.key /etc/openvpn/examples/easy-rsa/keys/ta.key_0
Kod: Markera allt
cp /etc/openvpn/examples/easy-rsa/ta.key /etc/openvpn/examples/easy-rsa/keys/ta.key_1
Vi skapar konfigurationsfilen för servern. Ersätt rödmarkerat med dina uppgifter.
Skapa en tom fil - server.conf - och öppna denna.
Kod: Markera allt
touch /etc/openvpn/server.conf
Kod: Markera allt
nano /etc/openvpn/server.conf
local 192.168.11.2
port 1194
proto udp
dev tap0
ca /etc/openvpn/examples/easy-rsa/keys/ca.crt
cert /etc/openvpn/examples/easy-rsa/keys/server.crt
key /etc/openvpn/examples/easy-rsa/keys/server.key
dh /etc/openvpn/examples/easy-rsa/keys/dh2048.pem
ifconfig-pool-persist ipp.txt
server-bridge 192.168.11.2 255.255.255.0 192.168.11.95 192.168.11.99
client-to-client
keepalive 10 120
cipher AES-128-CBC
# push "route 192.168.99.0 255.255.255.0"
# push "route 192.168.88.0 255.255.255.0"
tls-auth /etc/openvpn/examples/easy-rsa/keys/ta.key_0
comp-lzo
max-clients 5
persist-key
persist-tun
status openvpn-status.log
verb 3
plugin /usr/lib/openvpn/openvpn-auth-pam.so login
Några korta kommentarer till konfigfilen.
- Server bridge. Klienterna tilldelas ipnr från det intervallet som anges enligt 192.168.11.95 - 192.168.11.99
- Push route. Om man har några subnet bakom servern kan även maskiner nås på dessa genom att leda trafiken dit.
Dax att skapa själva bryggan med start och stopp av denna. Det finns skript för detta.
Skapa en tom fil - bridge - och öppna denna.
Kod: Markera allt
touch /etc/init.d/bridge
Kod: Markera allt
nano /etc/init.d/bridge
#!/bin/bash
# Create global variables
# Define Bridge Interface
br="br0"
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"
# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth1"
eth_ip="192.168.11.2"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.11.255"
gw="192.168.11.1"
start_bridge () {
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################
for t in $tap; do
openvpn --mktun --dev $t
done
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
ifconfig $eth 0.0.0.0 promisc up
brctl addbr $br
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast up
route add default gw $gw $br
}
stop_bridge () {
####################################
# Tear Down Ethernet bridge on Linux
####################################
ifconfig $br down
brctl delbr $br
for t in $tap; do
openvpn --rmtun --dev $t
done
ifconfig $eth $eth_ip netmask $eth_netmask broadcast $eth_broadcast up
route add default gw $gw $eth
}
case "$1" in
start)
echo -n "Starting Bridge"
start_bridge
;;
stop)
echo -n "Stopping Bridge"
stop_bridge
;;
restart)
stop_bridge
sleep 2
start_bridge
;;
*)
echo "Usage: $0 {start|stop|restart}" >&2
exit 1
;;
esac
Gör skriptet exekverbart
Kod: Markera allt
chmod +x /etc/init.d/bridge
Kod: Markera allt
update-rc.d bridge defaults 15
Vi ska nu testa installationen på servern.
Kod: Markera allt
/etc/init.d/bridge start
Kod: Markera allt
openvpn /etc/openvpn/server.conf
OpenVPN bryggan startas och stoppas sedan fortsättningsvis enligt denna sekvens
Kod: Markera allt
/etc/init.d/bridge start
/etc/init.d/openvpn start
/etc/init.d/openvpn stop
/etc/init.d/bridge stop
Kod: Markera allt
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A FORWARD -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
Kod: Markera allt
sh -c "iptables-save > /etc/iptables.up.rules"
Öppna:
Kod: Markera allt
nano /etc/network/interfaces
Kod: Markera allt
pre-up iptables-restore < /etc/iptables.up.rules
# ovpn
net.ipv4.ip_forward=1
Återstår nu att fixa till en klient på Nisses linux-maskin (laptop?).
Installera
Kod: Markera allt
sudo apt-get install openvpn openssl
ca.crt
ta.key_1
nisse.crt
nisse.key
Kopiera dessa filer och lägg dom på Nisses maskin i folder /etc/openvpn/. Vi ska oxå lägga en konfigfil här - client.conf
Skapa en tom fil - client.conf - och öppna denna.
Kod: Markera allt
sudo touch /etc/openvpn/client.conf
Kod: Markera allt
sudo nano /etc/openvpn/client.conf
client
dev tap
proto udp
remote <serverns externa ip alt. domännamn> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
tls-client
ca /etc/openvpn/ca.crt
cert /etc/openvpn/nisse.crt
key /etc/openvpn/nisse.key
ns-cert-type server
tls-auth /etc/openvpn/ta.key_1
cipher AES-128-CBC
comp-lzo
verb 3
auth-user-pass
Öppna eventuell router/brandvägg för inkommande trafik till servern.
Protokoll: UDP
Port: 1194
Klart för uppkoppling. Kontrollera om några fel uppträder under denna.
Kod: Markera allt
sudo openvpn /etc/openvpn/client.conf
Kod: Markera allt
sudo pkill openvpn
I det fall Nisse hade haft Windows XP på sin laptop (Gud förbjude) fick han istället installera Windowsversionen av OpenVPN på denna.
1. Hämta version openvpn-2.0.9-install.exe på http://openvpn.net/index.php/downloads.html och installera.
2. Antag att installation skedde till C:\Program\OpenVPN
3. Skapa en folder C:\Program\OpenVPN\Ubuntumaskin
4. Kopiera filerna ca.crt, ta.key_1, nisse.crt, nisse.key till denna folder
5. Vi ska nu skapa en konfig.fil;
client
dev tap
proto udp
remote <serverns externa ip alt. domännamn> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
tls-client
ca C:\\Program\\OpenVPN\\Ubuntumaskin\\ca.crt
cert C:\\Program\\OpenVPN\\Ubuntumaskin\\nisse.crt
key C:\\Program\\OpenVPN\\Ubuntumaskin\\nisse.key
ns-cert-type server
tls-auth C:\\Program\\OpenVPN\\Ubuntumaskin\\ta.key_1
cipher AES-128-CBC
comp-lzo
verb 3
auth-user-pass
6. Ge filen namnet t.ex. ubuntu.ovpn
7. Lägg filen i folder C:\Program\OpenVPN\config
8. Starta OpenVPN genom att högerklicka på C:\Program\OpenVPN\config\ubuntu.ovpn och välj "Start OpenVPN on this config file".
7. Kolla vad som sker i kommandoprompten.
Om man vill slippa ifrån att se kommandoprompten, så finns det ett GUI; C:\Program\OpenVPN\bin\openvpn-gui-1.0.3.exe. ( Finns den inte där kan den hämtas här. Klicka på filen och det dyker det upp en icon i system tray. Högerklicka på denna och välj "Connect".
Kör all trafik genom OpenVPN servern
Man kan använda OpenVPN servern för annat än att utifrån Internet på ett säkert sätt nå sin hemmaserver och lokala nätverk. Ett mycket användbart scenario är att köra all sin trafik genom en OpenVPN tunnel.
Om man t.ex. ansluter sin laptop till en trådlös publik accesspunkt på flygplats, hotell, bibliotek ... och sedan surfar eller vad man nu vill göra, är säkerheten låg och trafiken kan relativt enkelt avlyssnas av andra.
Genom att istället koppla upp laptopen mot OpenVPN servern därhemma och sen köra all trafik i tunnel dit och låta OpenVPN servern skicka ut trafiken till Internet igen har man ett mycket säkrare system. Den magiska optionen för att göra detta är redirect-gateway, som leder trafiken från klienten och ut till Internet igen.
Jag använder mej av OpenDNS servrar (208.67.222.222, 208.67.220.220). Har lagt in dessa på klienten, där jag kör Hardy i roaming mode. Vidare använder min Debian Etch server sig av dessa DNS:er.
Lägg till följande i server.conf:
push "redirect-gateway def1"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
För att inte tappa DNS:erna vid omstart lägg till raden:
prepend domain-name-servers 208.67.222.222,208.67.220.220;
i /etc/dhcp3/dhclient.conf på klienten. Glöm inte att samtidigt ta bort "domain-name-servers" i raden som börjar med "request subnet-mask, broadcast-address,.....".
Starta om.