In den nachfolgenden Aufgaben erstellen Sie auf Ihrem Server
serv-ws22
Services, die von außen über eine genau
bestimmte IPv6-Adresse aus Ihrem IPv6-Subnetz erreichbar sind.
Bitte lassen Sie diese Services durchgehend auf Ihrem
Server laufen.
Dass Ihre Services auch wirklich laufen, können Sie mit dem taskchecker (LEA: https://lea.hochschule-bonn-rhein-sieg.de/goto.php?target=webr_1305668&client_id=db_040811 ) überprüfen.
Die laufenden Services sind Teil der Prüfungsvorleistung (H-BRS) bzw. des ULP (TH-Köln).
In Praktikumsblatt 2, Aufgabe 2, haben Sie für Ihr Programm miniwhoami
lokal auf Ihrem Linux-Desktop-System ein Image erstellt. Dieses
lokale Image soll nun in eine öffentlich zugängliche
Docker-Registry gepushed werden. Von dieser aus kann dann das Image bequem mit
dem Kommando docker
run
auf jedem Dockerhost installiert (deployed) werden.
docker.fslab.de
). Machen Sie sich mit
der Bedienung dieser Registry vertraut. Testen Sie insbesondere
den Zugriff auf diese Registry. (Link hierzu:
https://docs.gitlab.com/ee/user/packages/container_registry/
)miniwhoami
ein für diese Docker-Registry getagtes Dockerimage
. Welches docker-Kommando können Sie hierzu verwenden?miniwhoami
auf
die Registry von https://git.fslab.de
hoch.docker run
einen Container
miniwhoami_20411
Ihrer Webanwendung miniwhoami
auf Ihren Laborserver serv-ws22
. Verwenden Sie
hierzu den Port 20411
. Welches Kommando verwenden
Sie hierzu?miniwhoami_20412
und miniwhoami_20413
Ihrer Webanwendung miniwhoami
auf Ihren
Laborserver
serv-ws22
. Verwenden Sie hierzu die Ports
20412
und 20413
. Beide Container sollen
über ein gemeinsames Netz mynetwork
miteinander
verbunden sein.Meine Lösung:
Anmerkung: Nachdem Sie IPv6 auf
serv-ws22
aktiviert haben (siehe Aufgabe 3), sehen Sie auch
die IPv6-Adresse Ihres Containers, wenn er welche hat.
miniwhoami
-Container
miniwhoami_20411
,
miniwhoami_20412
und miniwhoami_20413
besitzen jeweils ein IPv4 Interface eth0
. Erstellen
Sie für Ihre drei miniwhoami
-Container eine Liste
mit den Spalten: Containername, IP-Adresse, Netzmaske, Default
Gateway. Besitzt das Interface eth0
auch eine
IPv6-Adresse?docker network ls
eine Liste der Docker-Netze aus. Mit welchen Netzen sind Ihre
Container jeweils verbunden? Welches Kommando verwenden Sie,
um dies festzustellen ?miniwhoami
-Container und
testen Sie, in welchen Containern Sie Zugriff nach außen
haben. Interpretieren Sie Ihr Ergebnis.netshoot
in das Netz,
in dem sich der Container miniwhoami_20411
befindet.
Läßt sich der Container über die IP-Adresse und den Servicenamen
anpingen?netshoot
in das Netz
mynetwork
,
in dem sich die Container miniwhoami_20412
und
miniwhoami_20413
befinden. Lassen sich die beiden
Container über die IP-Adresse und den Servicename anpingen?dig
die dockerinterne
DNS-Auflösung der Services miniwhoami_20412
und
miniwhoami_20413
.
Jeder von Ihnen hat zu Beginn der Lehrveranstaltung einen
öffentlichen IPv6-Adressraum zur eigenen Verwaltung erhalten.
Ich habe beispielsweise zu meiner Verwendung den öffentlichen
IPv6-Adressraum 2001:638:408:200:ff00::/78
. Für
meinen Dockerhost serv-ws22
benutze ich aus diesem
Adressraum
bisher nur die IPv6-Adresse 2001:638:408:200:ff00::1
.
Auf meinem Dockerhost serv-ws22
möchte ich nun
Dockerservices mit eigenen IPv6-Adressen betreiben.
Hierzu werden wir nun in Docker IPv6 aktivieren und so konfigurieren, dass Container mit eigenen IPv6-Adressen betrieben werden können.
/etc/docker/daemon.json
erstellen und in geeigneter Weise
konfigurieren. In der Variablen
"fixed-cidr-v6"
soll dem Dockerdämon ein geeignetes /80
Subnetz übergeben werden, das er für die Verwaltung von
Docker-Containern verwenden soll . Dieses IPv6-Subnetz
nehmen Sie aus dem Ihnen zugeteilten /78
IPv6-Subnetz . Teilen Sie dazu den Ihnen zugeteilten
Adressraum in vier kleinere /80-
Subnetze. Geben
Sie diese (Ihnen gehörende) Subnetze explizit in der Lösung
dieser Aufgabe an. Wählen Sie aus
diesen vier Subnetzen ein Subnetz aus, in dem nicht die Adresse Ihres Servers
liegt. Dieses Subnetz übergeben Sie dem Dockerdämon über die
Variable
"fixed-cidr-v6"
zur Verwaltung. Welcher Bridge ist
das von ihnen gewählte Subnetz zugeordnet?
miniwhoami_20411
zu.
miniwhoami_20411
im Browser angezeigt? Welches Interface besitzt diese
IPv6-Adresse. Wie ist diese Adresse gebildet?miniwhoami_20411
über diese IPv6-Adresse
per ping erreichbar? Welche IPv6-Addressen können per
ping von miniwhoami_20411
aus
erreicht werden?miniwhoami_20411
mit ip -6 r
die Routingtabelle. Wird
das /80
IPv6-Subnetz richtig geroutet?
Welches Routing-Problem ergibt sich, analyseeren Sie die
Situation?miniwhoami_20411
über die IPv6-Serveradresse (trotzdem) erreicht?miniwhoami_20411
über seine
eigene IPv6-Adresse von außen erreichbar
ist?
Damit auf Ihre Container über IPv6 zugegriffen werden kann, muss
das IPv6-Interface des Servers serv-ws22
als NDP-Proxy fungieren. Nur so ist die Auflösung der
IPv6-Adresse eines Containers hinter dem IPv6-Interface möglich.
Der Proxy wickelt also das NDP-Protokoll nach außen für die
Container hinter dem IPv6-Interface ab.
sysctl net.ipv6.conf.ens??.proxy_ndp=1
für das
richtige Interface die NDP-Proxy-Funktion ein. Konfigurieren
Sie mit ip -6 neigh add ...
die
IPv6-Adresse für die die NDP-Proxy-Funktion gelten soll. Wie
lautet in Ihrem Fall das Kommando im Detail? Testen Sie die
NDP-Funktionalität, indem Sie ein ping von außen auf die IPv6-Adresse
des miniwhoami_20421
Containers machen (siehe
Aufgabe 5b). ndppd
(siehe
GIT)
wird auch über das Ubuntu-Repo bereitgestellt. Installation
mit apt install ndppd
. Ein Vorlage für die
benötigte Konfigurationsdatei /etc/ndppd.conf
haben Sie in der Datei
/usr/share/doc/ndppd/ndppd.conf-dist
. Sie müssen nur
das Interface und die Regeln (rule 1111::
) anpassen. Konkret müssen Sie 1111::
durch Ihr Subnetz ersetzen (genauer: durch das Subnetz
ersetzen, für das Sie die NDP-Funktion wünschen). Wenn Sie
mehr als ein Subnetz mit NDP ausstatten möchten, geben Sie
mehrere Regeln an. Der Autostart von ndppd
war bei mir schon aktiviert; sonst aktivieren Sie ihn über
systemctl
.
ndppd.conf
an und erklären Sie die wichtigsten Elemente daraus.
In dem Ihnen zugewiesenen Adressraum
2001:638:408:200:ff??::/78
soll ein öffentliches
IPv6-Docker-Subnetz my_ipv6
eingerichtet. Dieses Subnetz
wird
für dedizierte öffentliche IPv6-Server mit statischen
IPv6-Adressen verwendet.
Der Adressraum dieses IPv6-Subnetzes my_ipv6
soll
konkret wie folgt festgelegt werden:
2001:638:408:200:ff??:cafe::/96
. (?? = möglichst niedrige
Adresse.)
Beispiel: Mein konkreter Adressraum für das IPv6-Subnetz
my_ipv6
ist: 2001:638:408:200:ff00:cafe::/96
.
my_ipv6
auf
Ihrem Server serv-ws22
ein.
Wie lautet das Kommando zur Netzgenerierung?
ndppd.conf
so an, dass der NDP Proxy Daemon
ndppd
auch Adressen aus dem IPv6-Subnetz
my_ipv6
auflöst.
In Ihrem IPv6-Subnetz my_ipv6
besitzen Sie folgende drei globalen IPv6-Adressen:
2001:638:408:200:ff??:cafe::1111/96
2001:638:408:200:ff??:cafe::2222/96
2001:638:408:200:ff??:cafe::3333/96
Die Zeichen ??
stehen für die beiden Hex-Zahlen des Ihnen
zugeteilten öffentlichen IPv6-Adressraum 2001:638:408:200:ff??::/78
.
docker run
Ihre Webanwendung miniwhoami
als Container mit der globalen IP-Adresse ipv6_1
auf Ihren Laborserver serv-ws22
. Welches Kommando verwenden
Sie hierzu?miniwhoami
mit den globalen IP-Adresse ipv6_2 und ipv6_3
auf Ihren Laborserver serv-ws22
. Geben Sie Ihren
Compose-File an.miniwhoami1
,
miniwhoami2
und miniwhoami3
deployed, die jeweils über eine eigene IPv6-Adresse
erreichbar sind. Konfigurieren Sie Ihre Domain url.my
in Cloudflare so,
dass Ihre Services über miniwhoami1.yourDomain.xy
,
miniwhoami2.yourDomain.xy
und miniwhoami3.yourDomain.xy
erreichbar
sind.miniwhoami1
über
die URL miniwhoami1.servmgmt.de
an. Was fällt
Ihnen auf? Wie interpretieren Sie das Ergebnis?Meine Lösung:
serv-ws22
ein lokales IPv6-Netz loc_ipv6
mit dem Adressraum fd00:dead:beef::/48
.
Welchen Befehl verwenden Sie hierzu? Im Netz loc_ipv6
werden unsere lokalen IPv6-Services laufen.fd00:dead:beef::/48
gemäß RFC4193.netshoot
in das Netz
loc_ipv6
. Welche IP-Adressen besitzt das Tool netshoot
im Netz loc_ipv6
und welche
Default-Routen sind für das Netz loc_ipv6
eingetragen?ping
, welche
Verbindungen auf Ihrem Dockerhost serv-ws22
zwischen Netzen und Containern mit IPv4 und IPv6 möglich
sind.