LXC-Host aufsetzen: Unterschied zwischen den Versionen

Aus Vosp.freesn.de
Zur Navigation springen Zur Suche springen
HK (Diskussion | Beiträge)
HK (Diskussion | Beiträge)
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 3: Zeile 3:
== Server mit GRML starten ==
== Server mit GRML starten ==
=== Festplatten partitionieren ===
=== Festplatten partitionieren ===
  fdisk /dev/sda
  f# disk /dev/sda
   * /  5G
   * /  5G
   * swap 1G
   * swap 1G
Zeile 9: Zeile 9:


=== LVM nur für die Container ===
=== LVM nur für die Container ===
  pvcreate /dev/sda3
  # pvcreate /dev/sda3
  vgcreate vg_lxc /dev/sda3
  # vgcreate vg_lxc /dev/sda3
  lvcreate -L 20G -n lv_lxc vg_lxc
  # lvcreate -L 20G -n lv_lxc vg_lxc


  grml-debootstrap --target /dev/sda1 --grub /dev/sda
  # grml-debootstrap --target /dev/sda1 --grub /dev/sda


  reboot
  # reboot
== System starten ==
== System starten ==
=== Keyboard layout einstellen ===
=== Keyboard layout einstellen ===
  dpkg-reconfigure console-data
  # dpkg-reconfigure console-data
Im ncurses-Menu auswählen.
Im ncurses-Menu auswählen.
* Select keymap from arch list => O.K.
* Select keymap from arch list => O.K.
Zeile 27: Zeile 27:


=== Sprache einstellen ===
=== Sprache einstellen ===
  dpkg-reconfigure locales
  # dpkg-reconfigure locales
''de_DE.UTF-8'' auswählen und als default einstellen
''de_DE.UTF-8'' auswählen und als default einstellen


=== Bash-completion ===
=== Bash-completion ===
  apt-get install bash-completion
  # apt install bash-completion
=== Farbiges Promt ===
=== Farbiges Promt ===
vim ~/.bashrc
# vim ~/.bashrc


  export PS1='\[\033[0;31m\]\u\[\033[0;36m\]@\h:\[\033[0m\]\w\$ '
  export PS1='\[\033[0;31m\]\u\[\033[0;36m\]@\h:\[\033[0m\]\w\$ '
Zeile 41: Zeile 41:
* [0;31m] Rot (red)  
* [0;31m] Rot (red)  


* Meine Farbregeln
* Vorschlag Farbregeln
** Vor dem Promt: ''rot'' für root und ''grün'' für user.
** 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.
** Hinter dem Promt: ''rot'' für Produktivserver, ''türkis'' für Testrechner und ''grün'' für Privatrechner/Workstations.
Zeile 64: Zeile 64:


Damit PATH wirksam werden kann:
Damit PATH wirksam werden kann:
  mkdir ~/bin
  # mkdir ~/bin
Dort leben alle custom-scripts.
Dort leben alle custom-scripts.


=== Hostname ===
=== Hostname ===
Wir nennen diesen Rechner ''host-1-lnx01''
Wir nennen diesen Rechner ''host''
  vim /etc/hostname
  # vim /etc/hostname
''host-1-lnx01'' eintragen
''host'' eintragen


=== LXC installieren ===
=== LXC installieren ===
  apt-get install lxc lxctl
  # apt install lxc lxctl


=== LVM für LXC einbinden ===
=== LVM für LXC einbinden ===
LVM auf /var/lib/lxc einbinden.
LVM auf /var/lib/lxc einbinden.


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


Am Ende muss die Zeile so außsehen. Der UUID weicht natürlich ab.<br>
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
  /dev/disk/by-uuid/2c58a476-7b09-428c-8277-b80889443220 /var/lib/lxc ext4        defaults        0      0


Zeile 88: Zeile 88:
=== Netzwerk für LXC vorbereiten ===
=== Netzwerk für LXC vorbereiten ===


  vim /etc/network/interfaces
  # vim /etc/network/interfaces


  # interfaces(5) file used by ifup(8) and ifdown(8)
  # interfaces(5) file used by ifup(8) and ifdown(8)
Zeile 128: Zeile 128:
=== MASQUERADE der Firewall  einschalten ===
=== MASQUERADE der Firewall  einschalten ===


  apt-get install -y iptables
  # apt install -y iptables


  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


Dauerhaft abspeichern und nach jedem Hoststart laden
Dauerhaft abspeichern und nach jedem Hoststart laden
  apt-get -y install iptables-persistent  
  # apt -y install iptables-persistent  


Änderungen an der Firewall speichern mit
Änderungen an der Firewall speichern mit
  iptables-save > /etc/iptables/rules.v4
  # iptables-save > /etc/iptables/rules.v4
= LXC-Container erzeugen und auf dem Host konfigurieren =
= LXC-Container erzeugen und auf dem Host konfigurieren =
== Gilt für alle Container ==
== Gilt für alle Container ==
Zeile 152: Zeile 152:
===  Auf dem Host Container opsi-1.test2.local einrichten ===
===  Auf dem Host Container opsi-1.test2.local einrichten ===


Als erstes wird die erzeugte Conf bearbeitet.
* Als erstes wird die erzeugte Conf bearbeitet.
  # vim /var/lib/lxc/opsi.test2.local/config
  # vim /var/lib/lxc/opsi.test2.local/config


Entfernen
* Entfernen
  lxc.network.type = empty
  lxc.network.type = empty


Hinzufügen
* Hinzufügen
  # Autostart des Containers ( 0 steht für kein Autostart)
  # Autostart des Containers ( 0 steht für kein Autostart)
  lxc.start.auto = 1  
  lxc.start.auto = 1  
Zeile 197: Zeile 197:


=== Auf dem Host Container samba4.test2.local einrichten ===
=== Auf dem Host Container samba4.test2.local einrichten ===
Als erstes wird die erzeugte Conf bearbeitet.
* Als erstes wird die erzeugte Conf bearbeitet.
  # vim /var/lib/lxc/samba4.test2.local/config
  # vim /var/lib/lxc/samba4.test2.local/config


Entfernen
* Entfernen
  lxc.network.type = empty
  lxc.network.type = empty


Hinzufügen
* Hinzufügen
  # Autostart des Containers ( 0 steht für kein Autostart)
  # Autostart des Containers ( 0 steht für kein Autostart)
  lxc.start.auto = 1
  lxc.start.auto = 1
Zeile 218: Zeile 218:
  # Hostname  
  # Hostname  
  lxc.utsname = samba4
  lxc.utsname = samba4


== Container fs.test2.local erstellen ==
== Container fs.test2.local erstellen ==
Zeile 227: Zeile 224:


=== Auf dem Host Container fs.test2.local einrichten ===
=== Auf dem Host Container fs.test2.local einrichten ===
Als erstes wird die erzeugte Conf bearbeitet.
* Als erstes wird die erzeugte Conf bearbeitet.
  # vim /var/lib/lxc/fs.test2.local/config
  # vim /var/lib/lxc/fs.test2.local/config


Entfernen
* Entfernen
  lxc.network.type = empty
  lxc.network.type = empty


Hinzufügen
* Hinzufügen
  # Autostart des Containers ( 0 steht für kein Autostart)
  # Autostart des Containers ( 0 steht für kein Autostart)
  lxc.start.auto = 1
  lxc.start.auto = 1
Zeile 241: Zeile 238:
   # Bridge, in der das Interface eingefügt wird
   # Bridge, in der das Interface eingefügt wird
  lxc.network.link=lxc-out  
  lxc.network.link=lxc-out  
  lxc.network.hwaddr = 00:FF:AA:00:21:11
  lxc.network.hwaddr = 00:FF:AA:01:21:11
  lxc.network.ipv4 = 10.8.190.5/24
  lxc.network.ipv4 = 10.8.190.4/24
  lxc.network.flags=up
  lxc.network.flags=up
  # Name des TUN-Devices auf dem Host
  # Name des TUN-Devices auf dem Host

Aktuelle Version vom 25. Januar 2019, 13:34 Uhr

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