TIES478 Linux-virtuaalipalvelimen ylläpito
Luento 1
Tervetuloa!
Yleiset tiedot
- 4op, hyväksytty/hylätty
- Vastuuopettaja: Matias Kangas
- Demot: Pyry Kotilainen, Ilona Nurminen ja Janne Uusitupa
- Pohjautuu Tapani Tarvaisen ja Tuomas Tenkasen kurssitoteutuksiin
- Kurssi antaa perusvalmiudet virtuaalipalvelimen ylläpitoon
- Kurssilla opitaan tekemällä
Kurssin suoritus
- Eli miten pääsen läpi
- Luennot ei pakollisia
- Demoissa pakollinen läsnäolo
- Demoja yhteensä 8 kappaletta
- Viimeinen demo toimii harjoitustenttinä
- “Korjaa kone”
Luennoista
- Luennoilla käsitellään demoissa vastaan tulevia asioita
- Käydään läpi edelliset demot
- Teoriaa
- Katsaus tuleviin demoihin
Demot
- Demot ovat pakollisia ja niissä on myös pakollinen läsnäolo
- Nimi listaan
- Demon läpäisyyn vaaditaan tarkistusskriptin hyväksyntä sekä loki, joka kertoo mitä tehtiin ja miten tehtiin
- Demot voivat olla joillekin pitkiä ja haastavia
Demot
- Demot rakentuvat aina edellisen pohjalle, joten demot on tehtävä kokonaan, jotta voi jatkaa seuraavaan tehtävää
- Demot aloitetaan ohjauksissa ja tarvittaessa omalla ajallaan loppuun
- Joskus voi olla tarvetta käydä useammassa ohjauksessa
Demoryhmät
- Ke klo 14-16, 16-18
- Pe klo 12-14, 14-16
- Ilmoittautukaa ryhmiin korpissa
- Tentin ajankohta sovitaan myöhemmin
Motivointi
- Miksi kurssi kannattaa suorittaa?
Linux
Linux
- Yhtenä jakeluja erottavana* tekijänä ohjelmien hallinta, pakettienhallintajärjestelmä:
- deb (dpkg, apt): Debian, Ubuntu, Mint
- rpm (rpm, up2date, yum, dnf): Red Hat, CentOS, Fedora, Oracle, Amazon
- rpm (rpm, yast, zypper): SLS, Slackware, SUSE, openSUSE
Linux
Palvelin
- Fyysinen tai virtuaalinen kone tai ohjelma, joka tarjoaa jotain palvelua/palveluita
- Etäkäyttö (mitään fyysistä konsolia ei yleensä ole)
- Useita (samanaikaisiakin) käyttäjiä (ihmisiä, toisia koneita tai ohjelmia...)
- Päällä yleensä 24/7
Palvelin
- Tarjoaa palvelun tai palveluita, esim: www, ftp, levytila, sähköposti, tietokanta, laskenta, irc, jabber, suorakäyttö (shell), varmuuskopiointi, pelit, webcam, palomuuri, vpn, dns, dhcp, tftp, ntp ...
Palvelin
- Ei omaa, dedikoitua fyysistä konetta, vaan ohjelma, joka esittää sellaista toisen koneen sisällä (mahdollisesti liikkuen koneesta toiseen)
- Etuja: Hinta, ylläpidon (raudan/palvelun) ulkoistaminen, skaalattavuus, käyttöönoton ja resurssien lisäämisen nopeus
- Haittoja: jaettujen resurssien vaikea ennakoitavuus, tietoturvaongelmat (Spectre!), datan fyysinen sijainti, lainsäädäntö (GDPR!)
Monenlaista virtualisointia
- Virtuaalikoneet (full hardware virtualization)
- Virtuaalikoneen sisältä kuin ”oikea” rautakone
- Kontit (containers, OS-level virtualization)
- Alustakoneen käyttöjärjestelmä mutta omat kirjastot jne
- Ajoympäristöt (application virtualization)
- Eristetty sovellusympäristö, usein palveluna (PaaS, Faas)
- Palvelun virtualisointi (virtual hosting)
- nimipohjainen: yhdellä IP-osoitteella useita nimiä, joissa eri sisältö
- osoitepohjainen: yhdellä koneella useita IP-osoitteita, joissa eri sisältö
- Virtuaaliverkot (VPN, VLAN), -levyt, -laitteet ...
Virtuaalikone
- Ei omaa, dedikoitua fyysistä konetta. Samassa raudassa yleensä useita virtuaalikoneita, virtuaalikone voi siirtyä fyysisestä koneesta toiseen.
- Hypervisor luo tietokonetta simuloivan ympäristön, johon voidaan asentaa käyttöjärjestelmä kuten oikeaan rautaan.
- type 1, native: Oracle VM Server, Citrix XenServer, Microsoft Hyper-V, VMware ESX
- type 2, hosted: VMware Workstation, VirtualBox, Parallels Desktop, QEMU
- siltä väliltä: KVM, bhyve
- Tällä kurssilla käytössä KVM
- “KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the core virtualization infrastructure and a processor specific module, kvm-intel.ko or kvm-amd.ko. “
- http://www.linux-kvm.org/page/Main_Page 14.1.
Kontti, container
Ylläpito
- Käyttöjärjestelmän ja muiden ohjelmien ja laitteiden asennus, konfigurointi ja päivittäminen
- Käyttäjien ja oikeuksien hallinta
- Resurssien hallinta (levytila, muisti, cpu jne), monitorointi
- Tietoturva ja -suoja
- Varmuuskopiointi
- Dokumentointi
Virtuaalikoneet kurssilla
- Jokaiselle kurssilaiselle useampia virtuaalikoneita asennettavaksi ja ylläpidettäväksi ohjeiden mukaan
- Demot:
- ohjattuja harjoituksia
- asennukset tehdään itse
- "esimiehen määräyksiä"
- Harjoitustyö = Demot + lokikirja
- Ylläpitoa, asennuksia myös demojen ja luentojen välillä: monitorointi
- Tentti: yksi tai useampi ylläpitotehtävä
- tiedonhaku sallittu, kysyminen ei
Linux-koneiden käyttäminen etänä
- Aiemmin esim. salaamattomat telnet tai rlogin, nykyään yleisimmin ssh (joko alustakoneelle tai suoraan virtuaalikoneelle).
Ssh
- "Secure Shell (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. The best known example application is for remote login to computer systems by users." -- Wikipedia
- tcp/22
- tunnistautuminen käyttäjätunnus/salasanalla tai avaimilla
- /usr/bin/ssh, yleensä polussa
- ~/.ssh/config
- ~/.ssh/authorized_keys, ~/.ssh/known_hosts
- ~/.ssh/id_rsa[.pub], ~/.ssh/id_dsa[.pub]
- /etc/ssh/ssh_config, /etc/ssh/sshd_config
- ssh [-X] [user@]kone
- ssh mailkang@halava.cc.jyu.fi
Komentorivi, shell
Esimerkkejä komentorivikäskyistä
man
ls
cd
sudo
pwd
echo “kissa istuu” | grep kissa
echo “kissa istuu” | grep –o kissa
echo “kissa istuu” > esimerkki.txt
Shell-skriptit
- Komentorivikäskyistä voidaan tehdä tulkittavia ohjelmia, skriptejä. Skriptitiedostot ovat tekstitiedostoja, joissa luetellaan suoritettavat komennot ja käytettävät muuttujat.
#!/bin/sh
echo "Hello world“
$ chmod a+x hei.sh
$ ./hei.sh “Hello world”
Pikakertaus verkon toiminnasta
- Connection, packet, network interface, lan, wan, protocol, port, firewall, nat, vpn
- osi model: application, presentation, session, transport, network, data link, physical;
- tcp/ip model: application, transport, internet, link;
- interfaces;
- protocols: mac, ip, icmp, tcp, udp, http, ftp, dns, ssh
- ITKP104 Tietoverkot
IP-osoite, verkkomaski
- IP-osoite: osoite, johon IP-protokollan mukaisia paketteja toimitetaan
- kone joka uskoo pitävänsä hallussaan jotain tiettyä IP-osoitetta ottaa käsiteltäväkseen ko. IP-osoitteeseen lähetetyt näkemänsä paketit
- IPv4-osoitteet: 32-bittinen luku, tavallisesti esitetään neljänä numeroryhmänä
- verkkomaski: kertoo mitkä IP-osoitteet kuuluvat samaan verkkoon, esim 192.168.1.0/24
- 192.168.1.0 - 192.168.1.255
- maski 255.255.255.0
- maski bitteinä 11111111.11111111.11111111.00000000
- IPv6-osoitteet: 128 bittiä
- esim: fe80::a00:27ff:fe9e:d99/64
- joillakin osoitteilla erikoistarkoituksia, esim:
- privaattiosoitteet: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
- loopback: 127.0.0.0/8
- yhdellä laitteella ja interfacella voi olla useita IP-osoitteita
- kurssilla käytössä vain IPv4
IP-osoitteiden määrittely (kiinteä, palvelinkoneella)
- ifconfig
- cat /etc/network/interfaces
- netplan?
resolv.conf, hosts
- Tiedostot /etc/resolv.conf ja /etc/hosts sisältävät määrittelyjä mistä koneita etsitään kun käytetään vain hostnamea ja tunnettujen koneiden osoitteita.
resolvconf uudemmissa jakeluissa
- Uudemmissa jakeluissa oletusverkkoasetuksilla /etc/resolv.conf kirjoitetaan automaattisesti yli verkkoasetusten päivittyessä esim. DHCP:n kautta. Ratkaisuna on asentaa paketti resolvconf, joka asentaa mm. tiedoston /etc/resolvconf/resolv.conf.d/base, jonne voi tehdä omia pysyviä määrityksiä.
Kytkin, reititin, reitti, palomuuri
- Kytkin: laite, joka välittää liikenteen kaikille samaan kytkimeen liitetyille koneille suoraan. Yleensä ei omaa IP-osoitetta.
- Hubi: "tyhmä" kytkin, välittää kaiken saamansa liikenteen kaikille kytketyille laitteille.
- Reititin: laite, joka välittää ja ohjaa liikennettä verkkojen välillä. Useita IP-osoitteita.
- Reitti: laite, jolle paketti tulee lähettää, että se saavuttaa osoitetun vastaanottajan.
- samassa verkossa välitetään suoraan (kytkin, IP)
- erikseen määritelty reitti: joillekin koneille/verkoille muista poikkeava reitti
- oletusreitti: jos ei tiedetä mihin paketti pitäisi lähettää. Usein reititin oman verkon reunalla.
- Palomuuri: laite tai ohjelma, joka suodattaa liikennettä (yleensä) paketin tietojen perusteella. Usein myös reititin.
NAT, Network Address Translation
- palomuuri (tai muu) muuntaa IP-osoitteen toiseksi IP-osoitteeksi
- käytetään usein, koska ulospäin käytettävissä vähemmän IP-osoitteita kuin sisäverkossa
Portit, protokollat, palvelun liittäminen porttiin
- portti: IP-osoitteeseen liitetty 16-bittinen numero
- protokollat:
- TCP (tilallinen, taataan pakettien perillemeno oikeassa järjestyksessä)
- UDP (tilaton, ei taata mitään)
- esim. TCP/80 = HTTP
- /etc/services
- sopimuskysymys
- porttia kuuntelemaan sidotaan (bind) palvelinohjelma
- paketin sisältö kuuntelevan ohjelman käsiteltäväksi
DNS: Domain Name System
- hierarkinen järjestelmä IP-osoitteiden ja koneiden nimien (host name) välisten suhteiden ylläpitämiseksi
- liikenne välitetään IP-osoitteiden perusteella
- kumpi helpompi muistaa: 130.234.4.129 vai www.jyu.fi?