{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreigxnmuhlrowjzhuo5ar27wa7fjn2zzzyaprrrqmsj7v2hmerlavgu",
"uri": "at://did:plc:nkxz2ojdvmieg2nhphvputvp/app.bsky.feed.post/3mmluxauuvoy2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreidnhlfm7ajlpxivp7kgsk6jxu64o6hzm4xelteoojitttonumxxhe"
},
"mimeType": "image/png",
"size": 1017116
},
"description": "FreeBSD 12 als IPsec/L2TP-Client gegen Windows RRAS konfiguriert: strongSwan + mpd5, IKEv1, 3DES-SHA1, MS-CHAPv2-Auth, MPPE-Encryption. Manuelle Route-Verwaltung. Windows-Enterprise-VPN erfordert Spezialwissen, aber machbar.",
"path": "/2019/04/04/freebsd-als-ipsec-l2tp-client-an-einem-microsoft-windows-routing-und-ras-vpn-server/",
"publishedAt": "2026-05-24T11:40:09.000Z",
"site": "https://www.kernel-error.de",
"tags": [
"FreeBSD",
"InfoSec",
"IPsec",
"L2TP",
"Networking",
"RRAS",
"strongSwan",
"Sysadmin",
"VPN",
"Windows",
"mpd5",
"Windows RRAS-Server mit sicheren Cipher Suites",
"RRAS L2TP/IPsec VPN Cipher Suites",
"Einfach melden."
],
"textContent": "Einen FreeBSD-Desktop an einen Microsoft Windows Routing und RAS VPN-Server anbinden, per IPsec/L2TP. Klingt nach Qual, ist aber erstaunlich einfach. Ich nutze strongSwan für den IPsec-Tunnel und mpd5 für L2TP.\n\n### Ausgangslage\n\nDer FreeBSD-Desktop hat die IP 192.168.10.57. Der Windows RRAS-Server steht unter vpnserver.domain.tld (88.88.88.88). Tunneltyp ist IPsec/L2TP mit Pre-Shared Key für IPsec und Active Directory-Anmeldung über L2TP. Die Firmennetze 172.16.0.0/12 und 10.0.0.0/8 sollen über den Tunnel erreichbar sein.\n\n### strongSwan: IPsec-Tunnel\n\n`/usr/local/etc/ipsec.conf`:\n\n\n config setup\n\n conn %default\n ikelifetime=60m\n keylife=20m\n rekeymargin=3m\n keyingtries=1\n keyexchange=ikev1\n authby=psk\n\n conn vpnname\n type=transport\n leftfirewall=yes\n right=vpnserver.domain.tld\n rightid=%any\n rightsubnet=0.0.0.0/0\n auto=add\n left=%defaultroute\n leftprotoport=17/%any\n rightprotoport=17/1701\n ike=3des-sha1-modp1024!\n esp=3des-sha1\n modeconfig=push\n\nDer Pre-Shared Key in `/usr/local/etc/ipsec.secrets`:\n\n\n vpnserver.domain.tld %any : PSK \"abcdefg1234567\"\n\nTunnel aufbauen:\n\n\n root@errortest:~ # ipsec up vpnname\n initiating Main Mode IKE_SA vpnname[20] to 88.88.88.88\n [...]\n IKE_SA vpnname[20] established between 192.168.10.57[192.168.10.57]...88.88.88.88[88.88.88.88]\n CHILD_SA vpnname{38} established with SPIs c387d93f_i 4720cab6_o\n and TS 192.168.10.57/32[udp] === 88.88.88.88/32[udp/l2f]\n connection 'vpnname' established successfully\n\nStatus prüfen mit `ipsec statusall`. Wichtig ist die Zeile `ESTABLISHED` und dass die SPIs gesetzt sind.\n\n### mpd5: L2TP-Verbindung\n\n`/usr/local/etc/mpd5/mpd.conf`:\n\n\n startup:\n log +ALL +EVENTS -FRAME -ECHO\n\n default:\n load L2TP_client\n\n L2TP_client:\n create bundle static B1\n set iface up-script /home/kernel/vpnname-up.sh\n set iface down-script /home/kernel/vpnname-down.sh\n set bundle enable crypt-reqd\n set bundle enable compression\n set bundle enable ipv6cp\n set ccp yes mppc\n set mppc no e40 e56\n set mppc yes e128 stateless\n set ipcp ranges 0.0.0.0/0 0.0.0.0/0\n set ipcp enable req-pri-dns\n set ipcp enable req-sec-dns\n set iface route 172.16.0.0/12\n set iface route 10.0.0.0/8\n set iface enable tcpmssfix\n\n create link static L1 l2tp\n set link action bundle B1\n set auth authname \"AD-USERNAME\"\n set auth password \"AD-PASSWORD\"\n set link max-redial 0\n set link mtu 1400\n set link keep-alive 20 75\n set link accept chap-msv2\n set link no pap eap\n\n set l2tp peer vpnserver.domain.tld\n open\n\nStarten mit `mpd5`. Wenn alles klappt, erscheint ein `ng0` Interface:\n\n\n ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST>\n inet 10.16.100.34 --> 10.16.100.13 netmask 0xffffffff\n\n### Hinweise zur mpd5-Konfiguration\n\n`set ccp yes mppc` aktiviert MPPC-Komprimierung und MPPE-Verschlüsselung. `set mppc yes e128 stateless` ist Pflicht für die Zusammenarbeit mit MS-CHAPv2 auf der Windows-Seite. Andere MPPE-Varianten (e40, e56) funktionieren mit MS-CHAPv2 nicht.\n\nDer Windows VPN-Server übermittelt zwar Routen und DNS-Server, mpd5 übernimmt davon aber nicht alles automatisch. Deshalb die manuellen Routen mit `set iface route`. Die DNS-Server werden per IPCP abgefragt und an die Up/Down-Scripte übergeben. Da ich die DNS-Konfiguration kenne, kopiere ich in den Scripten einfach die passende `/etc/resolv.conf`.\n\nIch starte IPsec und dann mpd5 von Hand, wenn ich die Verbindung brauche. Man kann beides auch als Dienst konfigurieren.\n\nWer seinen Windows RRAS-Server mit sicheren Cipher Suites absichern will: In dem Beitrag geht es um die TLS-Seite der gleichen Infrastruktur.\n\nSiehe auch: RRAS L2TP/IPsec VPN Cipher Suites\n\nFragen? Einfach melden.",
"title": "FreeBSD als IPsec/L2TP-Client für Microsoft Windows Routing und RAS VPN"
}