[FreeBSD/KAME] IPSEC Tunneling to Linux/FreeSwan HOWTO.
FreeBSD/KAME IPSEC Tunneling to Linux/FreeSwan HOWTO.
Versie 0.1 door SiD
In deze howto beschrijf ik hoe je een IPSEC VPN tunnel kunnen bouwen tussen twee netwerken die zijn afgeschermd door enerzijds een FreeBSD/KAME server en anderzijds een Linux/FreeSwan server.
Voor het gemak ga ik van het volgende uit:
Netwerk A -> FreeBSD/KAME
Public IP : 100.100.100.100
Private IP : 192.168.0.254
Private Net : 192.168.0.0/24
Netwerk B -> Linux/FreeSwan (Bestaande server met FreeSwan geïnstalleerd)
Public IP : 200.200.200.200
Next Hop : 200.200.200.199
Private IP : 192.168.1.254
Private Net : 192.168.1.0/24
Kernel aanpassen
Om IPSEC te kunnen gebruiken dient eerst ondersteuning voor IPSEC in de kernel worden geladen.
Voeg hiervoor de volgende regels toe aan de kernelconfiguratie
File:
| options IPSEC options IPSEC_ESP |
Compile en installeer een nieuwe kernel en herstart de server. Zie FreeBSD handboek of [FreeBSD] Hoe een kernel te bakken?
Aanpassen rc.conf
Zorg dat gateway_enable aan staat in “/etc/rc.conf”
File:
| gateway_enable=”YES” |
Installeer racoon
Racoon is een IKE (ISAKMP/Oakley Key) management protocol voor het uitwisselen van sleutels met andere hosts.
Installeer racoon vanuit de ports als volgt:
Shell:
| cd /usr/ports/security/racoon make install clean |
Onder de directory “/usr/local/etc/racoon” staan nu twee bestanden nl. “psk.txt.dist” en “racoon.conf.dist” kopieer deze naar respectievelijk “psk.txt” en “racoon.conf” en stel de rechten van deze bestanden in op (600)
Shell:
| cp /usr/local/etc/racoon/psk.txt.dist /usr/local/etc/racoon/psk.txt cp /usr/local/etc/racoon/racoon.conf.dist /usr/local/etc/racoon/racoon.conf chmod 600 /usr/local/etc/racoon/* |
Configuratie Racoon
Open het bestand “racoon.conf” in een editor en voeg de volgende gegevens toe
File:
| remote [200.200.200.200] { exchange_mode main; doi ipsec_doi; situation identity_only; my_identifier address; lifetime time 30 min; proposal_check obey; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2; } } sainfo [100.100.100.100] any [200.200.200.200] any |
Open “psk.txt” in een editor en voeg de volgende regel toe:
File:
| xxx.xxx.xxx.xxx password |
xxx.xxx.xxx.xxx = IP nummer van de VPN host aan de andere kant
password = Gedeeld wachtwoord
Automatisch starten van Racoon
Maak onder “/usr/local/etc/rc.d/098racoon.sh” een bestand aan met de volgende regel
File:
| /usr/local/sbin/racoon -f /usr/local/etc/racoon/racoon.conf -l /var/log/racoon.log |
Configuratie IPSEC Policy
Maak onder “/usr/local/etc/rc.d/099ipsec.sh” een bestand aan met de volgende regels
File:
| #!/bin/sh # # Set up IPSEC SA/SP database SRC=100.100.100.100 DST=200.200.200.200 SRCNET=192.168.0.0/24 DSTNET=192.168.1.0/24 SETKEY=”/usr/sbin/setkey” $SETKEY -FP |
Stel de rechten van dit bestand in op (700)
Shell:
| chmod 700 /usr/local/etc/rc.d/099ipsec.sh |
Configuratie FreeSwan
Open het bestand “/etc/ipsec.conf” in een editor en voeg de volgende regels toe
File:
| conn kame-freeswan auto=start type=tunnel left=100.100.100.100 leftsubnet=192.168.0.0/24 right=200.200.200.200 rightsubnet=192.168.1.0/24 rightnexthop=200.200.200.199 keylife=30m authby=secret |
Open het bestand “/etc/ipsec.secrets” in een editor en voeg de volgende regel toe
File:
| 200.200.200.200 100.100.100.100 : PSK “password” |
Testen van de VPN tunnel
Ping vanaf de FreeBSD server het private IP nummer van de Linux server aan de andere kant van de tunnel
Shell:
| ping -S 192.168.0.254 192.168.1.254 |
Firewall
Het is verstandig om de VPN servers tevens als Firewall te gebruiken. Hier zijn echter genoeg howto’s over te vinden dus ga ik hier verder niet op in. Echter wanneer je de Firewall rules gaat instellen moet je zorgen dat het volgende verkeer word toegestaan:
· Voor ESP moet protocol 50 (ESP) toegestaan worden tussen beide Public IP’s
· Voor IKE moet UDP poort 500 toegestaan worden tussen beide Public IP’s
· Verder moeten er rules aanwezig zijn die verkeer tussen beide private netwerken toestaan

December 3rd, 2002
http://www.allard.nu/openbsd