上課操作筆記
M211 教室如何從隨身碟開機?
- 插入隨身碟
- 開機
- 看到 Dell logo時按F12進入BOOT
- 選 USB Device (不要選Onboard or USB CD-ROM Drive)
- 選 Linux
3/9
cd /media/sda1 find finnix-ckhung16c -type f qemu-system-x86_64 -enable-kvm -monitor stdio -m 1024 /dev/sda
3/16 架設網頁伺服器
# 在 finnix 底下, 請同學看我的網頁 => 失敗! export http_proxy=http://proxy.cyut.edu.tw:3128 apt-get update apt-get install apache2 nano /var/www/html/index.html # 在 <p> 之後加幾個字 # 請同學再看我的網頁 => 成功!
3/16 ssh 攻防
# 在 finnix 底下, 請同學 ssh root@163.17.22.xxx => 失敗 apt-get install openssh-server # 再請同學 ssh root@163.17.22.xxx => 可以耶! 但不知道密碼 passwd # 改密碼 # 再請同學 ssh root@163.17.22.xxx => 有密碼還是無法登入 nano /etc/ssh/sshd_config # 找到 PermitRootLogin, 後面改成 yes service ssh restart # 重新啟動服務 # 再請同學 ssh root@163.17.22.xxx => 成功! # 同學亂改我的網頁 => 哭哭 # 編輯 /etc/ssh/sshd_config 把 PermitRootLogin 改成 no service ssh restart # 重新啟動服務 useradd -g users -m -s /bin/bash s123456789 passwd s123456789 nano /etc/group # 找到 sudo: 在那一句最後面加上 s123456789 # 請同學 ssh s123456789root@163.17.22.xxx # 同學登入後, 可以用 sudo bash 變身成 root
3/23 切割及製作檔案系統
sudo bash mykvm /dev/sdx dd count=2 < /dev/zero > /dev/sdx # 燒毀!! mykvm /dev/sdx fdisk /dev/sdx
參考 fdisk 或 cfdisk (最開始選 dos)。 如果是 fdisk, 最常用的指令有: p 列印、 n 建立、 d 刪除、 t 設定檔案系統類別、 q 放棄修改直接結束、 w 儲存修改。 例:
- n 建立 => P 主分割區 => 1 分割區代號 => Enter 預設起點 => +1G 分割大小
- n 建立 => E 延申分割區 => 2 分割區代號 => Enter 預設起點 => Enter 預設分割大小
- n 建立 => L 延申分割區 => Enter 預設起點 => +1G 分割大小
- n 建立 => L 延申分割區 => Enter 預設起點 => +1G 分割大小
- n 建立 => L 延申分割區 => Enter 預設起點 => +1G 分割大小
- ...
至少建立一個主分割區、 兩個邏輯分割區。 每個分割區至少 1G。
又, 請見 剛建好 OpenVZ container 時值得做的初始化動作
4/13 fail2ban 防護
service fail2ban status service fail2ban stop service fail2ban status # 確認 fail2ban 服務的狀態已變成 inactive (dead) tail -f /var/log/auth.log # 請同學開始攻擊
開幾個視窗 (並且登入你管的機器), 每個分頁分別做以下的事:
- 看 ssh 登入記錄:
tail -f /var/log/auth.log
- 看 fail2ban 封鎖記錄:
tail -f /var/log/fail2ban.log
- 啟動:
service fail2ban start
確認已開啟之後, 請同學開始攻擊 - 攻擊同學:
ssh -p 同學的埠 隨便@163.17.21.200
若看到 fail2ban 成功封鎖, 就請同學幫你登記。
老師表演的指令:
for i in $(cat white-eye-users.txt) ; do id=$(tail -n 1 /var/lib/vz/private/$i/etc/passwd | sed 's/:.*//') ; echo "$i $id" ; echo "$id:e93au4a83" | vzctl exec $i chpasswd ; done
學習重點:
- pipe
- command substitution, 也就是 $( .... )
- regular expressions
4/27 額外關鍵詞
- process
- program
- control domain
- resource pool
- high availability
- live migration
5/4
mykvm -cdrom ~/Downloads/finnix-ckhung16a.iso
- 在虛擬機裡面
apt-get update
然後apt-get install openssh-server
- 在 host 裡面:
ssh -p 8022 root@localhost
=> 有服務。 ctrl-c 切掉。 - 在 guest 裡面:
service ssh stop
- 在 host 裡面: 重連一次 => 失敗。
為下次準備: 接收老師派送的大檔案:
udp-receiver > ~/Downloads/finnix-ckhung16c.iso
-
udp-receiver > ~/Downloads/proxmox-ve_3.4-3f2d890e-1.iso
udp-receiver > ~/Downloads/proxmox-ve_4.2-725d76f0-28.iso
- 如果真的一直都搭不上車, 也沒辦法從同學的 usb 拷貝檔案, 才從 資管系伺服器 下載。
md5sum proxmox*.iso
並且跟 官網上面的 md5sum 比對確認。
5/11
- 插入隨身碟後,
ls /dev/sd*
以及fdisk -s /dev/sd[abcz]
確認一下隨身碟大小至少 15G。 mykvm -cdrom ~/Downloads/proxmox-ve_4.2-725d76f0-28.iso -hda /dev/sdz -boot once=d
- 安裝過程當中, 請架設 qemu/kvm 虛擬區網
- 安裝成功後, 登入。 如果你的 「虛擬區網」 設定成功
(用 finnix 測試過) ==>
- 修改 proxmox 的 /etc/network/interfaces 裡面的 address 跟 gateway 兩欄, 還有 /etc/resolv.conf 跟 /etc/issue。
shutdown -h now
- 從 host 再重開一次:
mykvm -device e1000,netdev=net0,mac=52:54:00:12:34:1f -netdev tap,id=net0,ifname=qitap2931,script=no -hda /dev/sdz
shutdown -h now
- 從 host 再重開一次:
mykvm -redir tcp:13022::22 -hda /dev/sdz
- 重開之後, 在虛擬機裡面測試對外的網路:
ping 8.8.8.8
。 - 也從外面 (host) 測試對虛擬機的連線:
虛擬區網設定成功者 =>ssh root@10.0.29.31
虛擬區網設定失敗者 =>ssh -p 13022 root@localhost
- 以下如果沒有特別講, 都是在 proxmox 虛擬機裡面做事。 透過 ssh 連線的視窗才可以剪貼指令, 比較好用。
export http_proxy=http://proxy.cyut.edu.tw:3128
(只有現在這一次大家同時連線裝套件需要這樣做; 回家以後你就沒辦法用學校的 proxy 了, 所以不要寫到 ~/.bashrc 裡面去)- 做一些 初始化設定, 包含建立一個可以 sudo 的 「普通人」 帳號。
apt-get install lxde iceweasel chromium
兩個瀏覽器擇一安裝即可。- 重開機, 變成圖形介面。 用 「普通人」 登入測試。 先不要開瀏覽器! 瀏覽器很傷隨身碟!
- 如果滑鼠不能動的話, 用
mykvm
啟動虛擬機時, 加上一小段:-usbdevice mouse
(因為 qemu 預設的 ps2 滑鼠模擬好像怪怪的) - 從 host 再用 ssh 連線:
虛擬區網設定成功者 =>ssh 普通人@10.0.29.31
虛擬區網設定失敗者 =>ssh -p 13022 普通人@localhost
- 按照 這一篇 安裝 profile-sync-daemon。 注意: proxmox 算是 debian 版, 而不是 ubuntu 版。 自動啟動檔的路徑是 ~/.config/LXDE/autostart 。
- 用瀏覽器打開 https://localhost:8006 , 對, 永遠信任自己的網站沒關係。
6/1 P2V 實戰
- 為節省時間並減少隨身碟損耗, 我們不採用 proxmox 來建立虛擬機, 而是在教室機的硬碟上用陽春的 kvm 搭配 qcow2 映像檔來實作。
- [用 finnix 開啟 linux 實體機, 用 tar czf 備份] <==
老師已幫你做好, 請下
udp-receiver > ~/Downloads/lubuntu-16.04-2-apps.tgz
等候發車; 傳完之後請下md5sum ~/Downloads/lubuntu-16.04-2-apps.tgz
並且跟 老師的 md5sum 比對 - 建立一個 15G 大的 qcow2 映像檔:
qemu-img create -f qcow2 lubuntu-16.04.qcow2 15G
詳見 qemu-img 講義。 - 用 finnix 開機, 把映像檔配給它, 並且把 host
的 ~/Downloads 目錄分享給它 (唯讀):
myfkvm -virtfs local,path=/home/stux/Downloads,security_model=passthrough,readonly,mount_tag=DL lubuntu-16.04.qcow2
。 進入 finnix 後,mkdir /mnt/dl ; mount -t 9p -o trans=virtio DL /mnt/dl
詳見 目錄任意門 9p。 - 在虛擬硬碟上面建分割:
cfdisk /dev/sda
記得先寫入 (wirte) 再離開! - 建立並掛載檔案系統:
mkfs -t ext4 /dev/sda1 ; mkdir /media/sda1 ; mount /dev/sda1 /media/sda1
- 解壓縮:
date ; cd /media/sda1 ; tar xzpsf /mnt/dl/lubuntu-16.04-2-apps.tgz ; sync ; date
建立開機目錄:cp -a usr/lib/syslinux boot
安裝開機管理員:extlinux -i boot/syslinux
並且按照 「隨遇而安四海為家的 linux」 的說明設定 etc/fstab 跟 boot/syslinux/extlinux.conf 。 - 用 mykvm (不要 finnix!) 重開機測試。
- Windows 呢? Migrating Windows Physical to Virtual on Linux KVM、 Migration of servers to Proxmox VE 要不要開一間工作室接案子啊?
6/15
lxc | proxmox | |
---|---|---|
列清單 | lxc-ls -f | pct list |
查單機 | lxc-info -n 201 | pct config 201 |
啟動 | lxc-start -n 201 | pct start 201 |
進入 shell | lxc-attach -n 201 | pct enter 201 |
關機 | lxc-stop -n 201 | pct stop 201 |
- 在 lubuntu 上面建立一部 lxc container:
lxc-create -n 201 -t debian
或lxc-create -t download -n 201 -- -d debian -r jessie -a amd64
(詳見阿舍的隨手筆記 從範本建立、 從網路下載; 也請查看 /usr/share/lxc/templates/ 跟 /var/lib/lxc ) - 啟動 201、 進入 shell、 裝一些小套件、 建一兩個文字檔、 退出、 關機。
- 設定你的虛擬機時, 例如可以參考:
這篇 改你的提示字元。 比較複雜的範例:
\[\e[1;35m\]\u\[\e[0m\]@\[\e[1;36m\]\H\[\e[0m\]:\[\e[1;32m\]\w\[\e[0m\] \[\e[1;32m\]$\[\e[0m\]
顏色代碼請參考 ANSI escape code - 查看設定檔內提及機器名稱的地方:
grep '2.1' /var/lib/lxc/201/config
- 關機! 然後改名字:
lxc-copy -R -n 201 -N 221
- 再查一次:
grep '2.1' /var/lib/lxc/221/config
- * * * * *
- 關機! 然後打包備份自己的虛擬機: (參考 1
cd /var/lib/lxc/221/rootfs
date ; tar --numeric-owner -czf ~/Downloads/ct221.tgz . ; sync ; date
- 跟同學交換打包檔以及 config 設定檔。 (用 scp 或隨身碟)
- * * * * *
- 把同學的打包檔在自己的 lubuntu 上面解壓縮:
mkdir -p /var/lib/lxc/251/rootfs
cd /var/lib/lxc/251/rootfs ; tar --numeric-owner -xzf 同學的ct221.tgz
- 把 config 抄到 /var/lib/lxc/251/config 並適當修, 還有編輯 /var/lib/lxc/251/rootfs/etc/hostname
- 啟動並測試
- * * * * *
- 從 lubuntu 把 container 搬到 proxmox 裡面去 (參考 1):
- 建立 container
pct create 221 /var/lib/vz/template/cache/同學的ct221.tgz -description '從 lubuntu 搬過來的 container' -hostname ct221 -memory 512 -nameserver 8.8.8.8 -net0 name=eth0,hwaddr=52:54:00:12:34:21,ip=10.0.29.33/24,gw=10.0.29.254,bridge=vmbr0 -storage local-lvm
- 啟動並測試, 含網路
- 本頁沒有任何授權限制, 歡迎隨意使用