LXC-Host aufsetzen: Unterschied zwischen den Versionen
Aus Vosp.info
HK (Diskussion | Beiträge) |
HK (Diskussion | Beiträge) (→Auf dem Host Container fs.test2.local einrichten) |
||
(8 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 108: | 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 119: | 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 130: | 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 138: | 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 145: | 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 = | ||
+ | == 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 |
Aktuelle Version vom 25. Januar 2019, 13:34 Uhr
ZUrück zu Server_aufsetzen
Inhaltsverzeichnis
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