LXC-Host aufsetzen
ZUrück zu Server_aufsetzen
Inhaltsverzeichnis
Installation LXC-Host
Server mit GRML starten
Festplatten partitionieren
fdisk /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-get 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)
- Meine 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-1-lnx01
vim /etc/hostname
host-1-lnx01 eintragen
LXC installieren
apt-get install lxc lxctl
LVM für LXC einbinden
LVM auf /var/lib/lxc einbinden.
mkfs.ext4 /dev/vg_lxc/lv_lxc blkid |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-get install -y iptables
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Dauerhaft abspeichern und nach jedem Hoststart laden
apt-get -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: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=fs-out # Hostname lxc.utsname = fs