Netzwerk Problem LXD Container als Webserver

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
graubart
Beiträge: 323
Registriert: 29.11.2004 00:31:08
Wohnort: Berlin
Kontaktdaten:

Netzwerk Problem LXD Container als Webserver

Beitrag von graubart » 17.12.2017 17:40:15

Hallo, ich hätte da eine Grundsätzliche Frage, wie ich an folgendes Problem ran gehen soll:

Auf dem Host laufen zwei LXD Cotainer. In jedem Container läuft ein Webserver für je eine Webseite, die jeweils über eine bestimmte Domain erreichbar sein sollen. Ich habe genau eine öffentliche IP Adresse verfügbar für alle Webseiten. Wie muss ich das Netzwerk konfigurieren, damit die Webseiten erreichbar sind?

Grüße
Henrik Kiepe
Gruß
Henrik

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von bluestar » 17.12.2017 18:37:50

Hallo Henrik,
schau in deinen Thread zum Hetzner Root Server.

viewtopic.php?f=8&t=166785&start=30#p1147712

Du brauchst auf dem Host den HA-Proxy oder für jeden Container eine öffentliche IP-Adresse.

Grüße
Jens

Benutzeravatar
graubart
Beiträge: 323
Registriert: 29.11.2004 00:31:08
Wohnort: Berlin
Kontaktdaten:

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von graubart » 17.12.2017 19:39:21

OK - das hatte ich tatsächlich überlesen. Habe derzeit eine steile Lernkurve :-)
Gruß
Henrik

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von bluestar » 17.12.2017 21:22:55

Ich würde dir eher dazu raten bei Hetzner ein Subnetz zu bestellen und den Containern direkt die öffentlichen IPs zuzuordnen.

Weniger Dienst bedeuten ja auch bekannterweise weniger Probleme.

Benutzeravatar
graubart
Beiträge: 323
Registriert: 29.11.2004 00:31:08
Wohnort: Berlin
Kontaktdaten:

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von graubart » 30.12.2017 18:35:16

bluestar hat geschrieben: ↑ zum Beitrag ↑
17.12.2017 21:22:55
Ich würde dir eher dazu raten bei Hetzner ein Subnetz zu bestellen und den Containern direkt die öffentlichen IPs zuzuordnen.
Hast du vielleicht eine Beispielkonfiguration dafür? Habe jetzt ein 29er Subnetz bestellt, aber noch keinen Plan, wie ich die IP Adressen den Containern zuordnen kann.
Gruß
Henrik

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von bluestar » 30.12.2017 20:47:23

graubart hat geschrieben: ↑ zum Beitrag ↑
30.12.2017 18:35:16
Hast du vielleicht eine Beispielkonfiguration dafür? Habe jetzt ein 29er Subnetz bestellt, aber noch keinen Plan, wie ich die IP Adressen den Containern zuordnen kann.
Für mein Beispiel habe ich folgende Daten gewählt:
Server-IP: 1.1.1.1
Als Subnetz/29 habe ich folgendes gewählt: 1.2.3.0/29

Ich fang mal mit der /etc/network/interfaces vom "Host" an:

Code: Alles auswählen

auto br-lxc
iface br-lxc inet static
	bridge_fd		0
	bridge_stp		off
	bridge_ports	none
	address		1.1.1.1
	netmask		255.255.255.255
	up			/sbin/ip route add 1.2.3.0/32 dev $IFACE
	up			/sbin/ip route add 1.2.3.1/32 dev $IFACE
	up			/sbin/ip route add 1.2.3.2/32 dev $IFACE
	up			/sbin/ip route add 1.2.3.3/32 dev $IFACE
	up			/sbin/ip route add 1.2.3.4/32 dev $IFACE
	up			/sbin/ip route add 1.2.3.5/32 dev $IFACE
	up			/sbin/ip route add 1.2.3.6/32 dev $IFACE
	up			/sbin/ip route add 1.2.3.7/32 dev $IFACE
in /etc/sysctl.conf aktiverst du das IP-Forwarding:

Code: Alles auswählen

net.ipv4.ip_forward=1
In /etc/lxc/default.conf trägst du als Netzwerk-Konfiguration folgendes ein:

Code: Alles auswählen

lxc.network.type = veth
lxc.network.link = br-lxc
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx
Nun legst du deinen ersten Container an mit folgenden Netzwerkparametern an

Code: Alles auswählen

lxc.network.ipv4 = 1.2.3.0/32
lxc.network.ipv4.gateway = 1.1.1.1
Dir stehen nun noch die IPS 1.2.3.1 bis 1.2.3.7 für weitere LXC-Container zur Verfügung.
Innerhalb des Containers trägst du als /etc/network/interfaces folgendes ein:

Code: Alles auswählen

auto lo
iface lo inet loopback
Für eth0 brauchst du keine Konfiguration in dem Container hinterlegen.

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von bluestar » 03.01.2018 16:32:10

Für IPv6 bei Hetzner sieht das wie folgt aus, auf dem Host System in /etc/network/interfaces

Hetzner-IPv6-Netz: 2001:0db8:85a3:08d3::/64

Code: Alles auswählen

iface eth0 inet6 static
	address		2001:0db8:85a3:08d3::2
	netmask		128
	gateway		fe80::1
	
iface br-lxc inet6 static
	address		2001:0db8:85a3:08d3::2
	netmask		64
	up		/sbin/ip -6 addr add fe80::1 dev $IFACE
	up		/sbin/sysctl -w net.ipv6.conf.all.forwarding=1
Für jeden Container sieht die IPv6-Konfiguration dann wie folgt aus:

Code: Alles auswählen

lxc.network.ipv6 = 2001:0db8:85a3:08d3::3/64
lxc.network.ipv6.gateway = fe80::1
Natürlich je Container eine eigene Adresse außer der 2001:0db8:85a3:08d3::2 verwenden.

Benutzeravatar
graubart
Beiträge: 323
Registriert: 29.11.2004 00:31:08
Wohnort: Berlin
Kontaktdaten:

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von graubart » 08.01.2018 15:58:41

Genial, danke für die Konfiguration. Die IP adressen habe ich in network/interfaces schon eingerichtet. allerdings habe ich etwas mit LXD zu kämpfen. Ich versuche lxd noch auf 2.3 zu updaten, weil die Netzwerkkonfiguration mit LXD2.0 noch etwas rudimentär ist.
Gruß
Henrik

Benutzeravatar
graubart
Beiträge: 323
Registriert: 29.11.2004 00:31:08
Wohnort: Berlin
Kontaktdaten:

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von graubart » 08.01.2018 18:36:13

die Datei /etc/lxc/default.conf existert bei mir nicht. In dem Ordner gibt es nur lxc-usernet. Die Datei ist allerdings leer. Muss ich default.conf selbst erstellen?
Gruß
Henrik

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von bluestar » 09.01.2018 07:51:11

Ich schätze mal das dies an der Tatsache liegt, das du LXD nutzt und nicht LXC...

Letztlich ist das auch gar nicht schlimm, du definierst über lxc eine Netzwerkbrücke mit dem Namen „br-lxc“ ohne DHCP und ohne NAT.

Benutzeravatar
graubart
Beiträge: 323
Registriert: 29.11.2004 00:31:08
Wohnort: Berlin
Kontaktdaten:

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von graubart » 09.01.2018 12:16:24

Also wenn ich ein ipv4 Netzwerk definiere muss ich mit "lxd init" auch gleichzeitig einen DHCP Server anlegen. Aber die Brücke funktioniert schon mal :-)
Gruß
Henrik

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von r4pt0r » 09.01.2018 15:16:39

Wesentlich einfacher und mit einer einzelnen öffentlichen IP wäre ggf ein nginx reverse-proxy:
https://www.nginx.com/resources/admin-g ... rse-proxy/

Code: Alles auswählen

server { 
  server_name domain1.com;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://192.168.100.100:80;
  }
}

server { 
  server_name domain2.com;

  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://192.168.100.101:80;
  }
}

Benutzeravatar
graubart
Beiträge: 323
Registriert: 29.11.2004 00:31:08
Wohnort: Berlin
Kontaktdaten:

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von graubart » 09.01.2018 17:10:14

ok also die lösung mit der bridge gefällt mir eigentlich ganz gut. Die bridge (ohne NAT und DHCP) habe ich nun auch eingerichtet und lxd nutzt diese auch. Allerdings weiss ich nicht, wie ich den einzelnen Containern nun die jeweilige IP zuweisen kann, so wie von Dir beschrieben:
bluestar hat geschrieben: ↑ zum Beitrag ↑
30.12.2017 20:47:23
Nun legst du deinen ersten Container an mit folgenden Netzwerkparametern an

Code: Alles auswählen

lxc.network.ipv4 = 1.2.3.0/32
lxc.network.ipv4.gateway = 1.1.1.1
Wenn ich nun einen Container erstelle, erhält dieser keine IP weil der DHCP nicht eingerichtet wurde ...
Gruß
Henrik

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von bluestar » 09.01.2018 21:02:26

In etwa so:

Code: Alles auswählen

echo -e "lxc.network.0.ipv4 = 144.217.33.224\nlxc.network.0.ipv4.gateway = 149.56.27.254\n" | lxc config set template-yakkety raw.lxc -
Unsere Container laufen noch mit lcx statt lxd.

Benutzeravatar
graubart
Beiträge: 323
Registriert: 29.11.2004 00:31:08
Wohnort: Berlin
Kontaktdaten:

Re: Netzwerk Problem LXD Container als Webserver

Beitrag von graubart » 10.01.2018 14:54:12

Werd nun erst Mal den DHCP Server der LXC Container negmen, weil ich es nicht hinbekomme den Containern die entsprechende IP-Adresse zuzuweisen. Meine Erfahrung reicht nicht aus... Ich vergebe dann den entschprechenden adressbereich und hoffe Mal dass die IP-Adressen sich nicht all zu oft ändern....
Gruß
Henrik

Antworten