LXC-Host aufsetzen

Aus Vosp.info
Wechseln zu:Navigation, Suche

ZUrück zu Server_aufsetzen

Installation LXC-Host

Server mit GRML starten

Festplatten partitionieren

f# disk /dev/sda
  * /  5G
  * swap 1G
  * lvm Rest

LVM nur für die Container

# pvcreate /dev/sda3
# vgcreate vg_lxc /dev/sda3
# lvcreate -L 20G -n lv_lxc vg_lxc
# grml-debootstrap --target /dev/sda1 --grub /dev/sda
# reboot

System starten

Keyboard layout einstellen

# dpkg-reconfigure console-data

Im ncurses-Menu auswählen.

  • Select keymap from arch list => O.K.
  • qwertz => O.K.
  • German => O.K.
  • Standard => O.K.
  • latin1 => O.K.

Sprache einstellen

# dpkg-reconfigure locales

de_DE.UTF-8 auswählen und als default einstellen

Bash-completion

# apt install bash-completion

Farbiges Promt

# vim ~/.bashrc
export PS1='\[\033[0;31m\]\u\[\033[0;36m\]@\h:\[\033[0m\]\w\$ '
  • [0;36m] Türkis (cyan)
  • [0;32m] Grün (green)
  • [0;31m] Rot (red)
  • Vorschlag Farbregeln
    • Vor dem Promt: rot für root und grün für user.
    • Hinter dem Promt: rot für Produktivserver, türkis für Testrechner und grün für Privatrechner/Workstations.


Meine .bashrc für root auf einem Testrechner.

# ~/.bashrc: executed by bash(1) for non-login shells.

export PS1='\[\033[0;31m\]\u\[\033[0;36m\]@\h:\[\033[0m\]\w\$ '
export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'

# Some more alias to avoid making mistakes:
alias rm='rm -i'
# bash-completion
. /etc/bash_completion

PATH=$PATH:~/bin

Damit PATH wirksam werden kann:

# mkdir ~/bin

Dort leben alle custom-scripts.

Hostname

Wir nennen diesen Rechner host

# vim /etc/hostname

host eintragen

LXC installieren

# apt install lxc lxctl

LVM für LXC einbinden

LVM auf /var/lib/lxc einbinden.

# mkfs.ext4 /dev/vg_lxc/lv_lxc
b# lkid |grep mapper >> /etc/fstab
# vim /etc/fstab

Am Ende muss die Zeile so außsehen. Der UUID weicht natürlich ab.

/dev/disk/by-uuid/2c58a476-7b09-428c-8277-b80889443220 /var/lib/lxc ext4        defaults        0       0


Netzwerk für LXC vorbereiten

# vim /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

# eth0 verbindet den Host mit dem Internet
auto eth0
iface eth0 inet dhcp
 
# Mit diese Bridge werden die Container verbunden, damit sie Verbindung zum Internet bekommen.
auto lxc-in
iface lxc-in inet static
       address 10.0.0.1
       netmask 255.255.255.0
       pre-up (ip addr show |grep lxc-in) || brctl addbr lxc-in

# eth1 verbindet den Host physikalisch mit dem Intranet
auto eth1
iface eth1 inet manual

# Durch die IP wird der Host auch aus dem Intranet erreichbar.
# Per Bridge steht eth1 den Containern zur Verfügung
auto lxc-out
iface lxc-out inet static
       address 10.8.190.10
       broadcast 10.8.190.255
       netmask 255.255.255.0
       bridge_ports    eth1
       bridge_maxwait 1

Packet Forwarding einschalten

# vim /etc/sysctl.conf 

Die folgende Zeile suchen und einkommentieren (# vor der Zeile entfernen)

net.ipv4.ip_forward=1

MASQUERADE der Firewall einschalten

# apt install -y iptables
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Dauerhaft abspeichern und nach jedem Hoststart laden

# apt -y install iptables-persistent 

Änderungen an der Firewall speichern mit

# iptables-save > /etc/iptables/rules.v4

LXC-Container erzeugen und auf dem Host konfigurieren

Gilt für alle Container

Reihenfolge der Containerkonfiguration

  • Bevor die anderen Container ins Netz kommen können, muss im OPSI-Container Forwarding und Masquerading eingerichtet werden.

Provisorische Namensauflösung

  • Die Namensauflösung wird am Ende vom Samba-AD/DC übernommen. Da er noch nicht installiert ist, muss eine Übergangslösung genutzt werden.
# vim <containername>/rootfs/etc/resov.conf
z.b. "8.8.8.8"

Container opsi-1.test2.local erstellen

Container opsi-1.test2.local erzeugen

# lxc-create --name opsi-1.test2.local -t debian

Auf dem Host Container opsi-1.test2.local einrichten

  • Als erstes wird die erzeugte Conf bearbeitet.
# vim /var/lib/lxc/opsi.test2.local/config
  • Entfernen
lxc.network.type = empty
  • Hinzufügen
# Autostart des Containers ( 0 steht für kein Autostart)
lxc.start.auto = 1 

# Netzwerk
# Erzeugt tun-device, dass in die Bridge lxcbr0 eingefügt wird (Internet)
lxc.network.type=veth
# Bridge, in der das Interface eingefügt wird
lxc.network.link=lxc-in 
lxc.network.hwaddr = 00:FF:AA:00:31:01
lxc.network.ipv4 = 10.0.0.10/24
# Gateway des Containers
lxc.network.ipv4.gateway  = 10.0.0.1 
lxc.network.flags=up
# Name des TUN-Devices auf dem Host
lxc.network.veth.pair=opsi-in 
 
# Erzeugt tun-device, dass in die Bridge lxc-out eingefügt wird (Intranet)
lxc.network.type=veth
 # Bridge, in der das Interface eingefügt wird
lxc.network.link=lxc-out 
lxc.network.hwaddr = 00:FF:AA:00:31:11
lxc.network.ipv4 = 10.8.190.1/24
lxc.network.flags=up
# Name des TUN-Devices auf dem Host
lxc.network.veth.pair=opsi-out 

# OpenVPN
# Damit OpenVPN im Container genutzt werden kann.
lxc.cgroup.devices.allow = c 10:200 rwm

#Setzt den Hostnamen mittels <Container>/rootfs/etc/hosts
lxc.utsname = opsi

Container samba4.test2.local erstellen

Container samba4.test2.local erzeugen

# lxc-create --name samba4.test2.local -t debian

Auf dem Host Container samba4.test2.local einrichten

  • Als erstes wird die erzeugte Conf bearbeitet.
# vim /var/lib/lxc/samba4.test2.local/config
  • Entfernen
lxc.network.type = empty
  • Hinzufügen
# Autostart des Containers ( 0 steht für kein Autostart)
lxc.start.auto = 1
 
# Erzeugt tun-device, dass in die Bridge lxc-out eingefügt wird (Intranet)
lxc.network.type=veth
 # Bridge, in der das Interface eingefügt wird
lxc.network.link=lxc-out 
lxc.network.hwaddr = 00:FF:AA:00:21:11
lxc.network.ipv4 = 10.8.190.5/24
lxc.network.flags=up
# Name des TUN-Devices auf dem Host
lxc.network.veth.pair=samba4-out 
# Hostname 
lxc.utsname = samba4

Container fs.test2.local erstellen

Container fs.test2.local erzeugen

# lxc-create --name fs.test2.local -t debian

Auf dem Host Container fs.test2.local einrichten

  • Als erstes wird die erzeugte Conf bearbeitet.
# vim /var/lib/lxc/fs.test2.local/config
  • Entfernen
lxc.network.type = empty
  • Hinzufügen
# Autostart des Containers ( 0 steht für kein Autostart)
lxc.start.auto = 1
 
# Erzeugt tun-device, dass in die Bridge lxc-out eingefügt wird (Intranet)
lxc.network.type=veth
 # Bridge, in der das Interface eingefügt wird
lxc.network.link=lxc-out 
lxc.network.hwaddr = 00:FF:AA:01:21:11
lxc.network.ipv4 = 10.8.190.4/24
lxc.network.flags=up
# Name des TUN-Devices auf dem Host
lxc.network.veth.pair=fs-out 
# Hostname 
lxc.utsname = fs