LXC-Host aufsetzen: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
HK (Diskussion | Beiträge) |
HK (Diskussion | Beiträge) |
||
| (5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 3: | Zeile 3: | ||
== Server mit GRML starten == | == Server mit GRML starten == | ||
=== Festplatten partitionieren === | === Festplatten partitionieren === | ||
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 | # 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) | ||
* | * 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 | Wir nennen diesen Rechner ''host'' | ||
vim /etc/hostname | # vim /etc/hostname | ||
''host | ''host'' eintragen | ||
=== LXC installieren === | === LXC installieren === | ||
apt | # 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 | ||
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. | 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 99: | Zeile 99: | ||
# Mit diese Bridge werden die Container verbunden, damit sie Verbindung zum Internet bekommen. | # Mit diese Bridge werden die Container verbunden, damit sie Verbindung zum Internet bekommen. | ||
auto | auto lxc-in | ||
iface | iface lxc-in inet static | ||
address 10.0.0.1 | address 10.0.0.1 | ||
netmask 255.255.255.0 | netmask 255.255.255.0 | ||
pre-up (ip addr show |grep | pre-up (ip addr show |grep lxc-in) || brctl addbr lxc-in | ||
# eth1 verbindet den Host physikalisch mit dem Intranet | # eth1 verbindet den Host physikalisch mit dem Intranet | ||
| Zeile 110: | Zeile 109: | ||
iface eth1 inet manual | iface eth1 inet manual | ||
# Durch die IP wird der Host auch aus dem Intranet erreichbar. | |||
# Per Bridge steht eth1 den Containern zur Verfügung | # Per Bridge steht eth1 den Containern zur Verfügung | ||
auto lxc-out | auto lxc-out | ||
iface lxc-out inet | iface lxc-out inet static | ||
address 10.8.190.10 | |||
broadcast 10.8.190.255 | |||
netmask 255.255.255.0 | |||
bridge_ports eth1 | bridge_ports eth1 | ||
bridge_maxwait 1 | bridge_maxwait 1 | ||
| Zeile 118: | Zeile 121: | ||
=== Packet Forwarding einschalten === | === Packet Forwarding einschalten === | ||
vim /etc/sysctl.conf | # vim /etc/sysctl.conf | ||
Die folgende Zeile suchen und einkommentieren (# vor der Zeile entfernen) | Die folgende Zeile suchen und einkommentieren (# vor der Zeile entfernen) | ||
| Zeile 125: | Zeile 128: | ||
=== MASQUERADE der Firewall einschalten === | === MASQUERADE der Firewall einschalten === | ||
apt | # 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 | # 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 == | |||
=== 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 erstellen == | ||
=== Container samba4.test2.local erzeugen === | === Container samba4.test2.local erzeugen === | ||
| Zeile 140: | 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 162: | Zeile 219: | ||
lxc.utsname = samba4 | 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 === | ||
# vim | * 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 | |||
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