VPN im Netzwerklabor

vorhergehende Artikel in: Linux Docker Virtualisierung
04.12.2019

Im vorangegangenen Artikel beschrieb ich, wie man mit einigen Bash-Skripten die Grundlagen für ein relativ komplexes Netzwerklabor basierend auf LXC schaffen kann. Hier möchte ich darauf aufbauend beschreiben, wie man exemplarisch die damit erstellten Subnetze mittels VPNs verbinden kann.

Idee

Die Idee war, standortübergreifende Netzwerkszenarien in meinem bereits im vorangegangenen Artikel beschriebenen Netzwerklabor zu implementieren. Das dort beschriebene Szenario war ja, dass zwei Unternehmensstandorte jeweils ein eigenes privates Netzwerk aufspannen, das per Router mit einem übergeordneten Netzwerk verbunden ist (zum Beispiel das eines ISPs), welches wiederum Verbindung zum Internet hat.

Es soll nun darum gehen, die beiden getrennten Netzwerke (die Güte ihrer Verbindung zum ISP-Netz istüber ein "intelligentes" Netzwerkkabel steuerbar) durch ein Site-to-Site-VPN zu verbinden.

Tinc VPN

Ich habe mich für Tinc als VPN Lösung entschieden. Dazu müssen zunächst die Konfigurationen, Skripte und Host-Definitionen auf den einzelnen Knoten verteilt werden. Ich zeige hier im Folgenden kurz die entsprechenden Dateien für die Konfiguration des Routers von intnet1 an: Konfiguration tinc.conf

Name = intnet1
ConnectTo = intnet2

Host hosts/intnet1

Address = 10.100.0.1
Subnet = 172.16.0.1/32
Subnet = 10.100.1.0/24
-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----

Host hosts/intnet2

Address = 10.100.0.2
Subnet = 172.16.0.2/32
Subnet = 10.100.2.0/24

-----BEGIN RSA PUBLIC KEY----- ... -----END RSA PUBLIC KEY-----

Skript tinc.up

#!/bin/bash

ip link set $INTERFACE up ip addr add 172.16.0.1/24 dev $INTERFACE

ip route add 10.100.1.0/24 dev $INTERFACE # intnet1 ip route add 10.100.2.0/24 dev $INTERFACE # intnet2

Damit funktionierte aber das VPN leider noch nicht, da es das benötigte Device innerhalb meiner LXC-Container nicht gab.

LXC-Spezifika

Dafür mussten spezielle Vorbereitungen an den LXC-Containern vorgenommen werden - ich zeige diese Vorbereitungen wiederum exemplarisch an router1 für intnet1: Konfiguration /var/lib/lxc/router1/config

...
lxc.autodev = 1
lxc.hook.autodev = /var/lib/lxc/router1/autodev
lxc.pty.max = 1024

lxc.cgroup.devices.allow = c 10:200 rwm

Die in der Konfiguration referenzierte Datei /var/lib/lxc/router1/autodev

#!/bin/bash

cd ${LXC_ROOTFS_MOUNT}/dev mkdir net mknod net/tun c 10 200 chmod 0666 net/tun

Damit konnte ich den VPN-Tunnel aufbauen und per IP-Adresse auf Rechner im jeweils anderen Subnetz zugreifen.

DNS

Eigentlich war aber das Fernziel, per DNS auf die Rechner im eigenen Standort und im entfernten Standort zugreifen zu können. Dazu musste die Konfiguration des DNSMasq-Dienstes /etc/dnsmasq.conf auf beiden Routern angepasst werden. Zunächst musste ein weiteres Interface hinzugefügt werden (Beispiele aus der Konfiguration von router2 in intnet2:

interface=firma

Anschließend musste noch der Nameserver für die jeweils andere Domain bekannt gemacht werden:

server=/intnet1.lab/172.16.0.1

Ich habe die Quellen, aus denen ich diese Informationen zusammengetragen habe unten als Link-Sammlung angehängt

Links

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • 8TB Raid5 mit Raspberry Pi

    25.04.2020

    Ich habe mir neulich überlegt, ob man einen Pi als Raid benutzen könnte - aber nicht mit dem ewig gleichen Setup mit 4 USB-Sticks...

    Weiterlesen...

Neueste Artikel

  • Watch David Byrne Lead a Massive Choir in Singing David Bowie’s “Heroes”

    Durch die Seite Open Culture bin ich auf diesen spektakulären Auftritt aufmerksam geworden:

    Weiterlesen
  • Zufälliges Füllen der Ebene

    Ich fand neulich einen sehr interessanten Artikel Zum Thema der algorithmischen Erzeugung von dekorativen (obwohl - das liegt im Auge des Betrachters) Bildern.

    Weiterlesen
  • Sicherheit beim Fernzugang per SSH

    Ich habe vor einiger Zeit bereits zwei Vorträge gestaltet und dafür meine Ideen zur unkomplizierten Erstellung von Präsentationen genutzt - nun ist ein weiterer hinzugekommen.

    Weiterlesen

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen Codeberg-Repositories findet man hier.