上課操作筆記

M211 教室如何從隨身碟開機?

  1. 插入隨身碟
  2. 開機
  3. 看到 Dell logo時按F12進入BOOT
  4. 選 USB Device (不要選Onboard or USB CD-ROM Drive)
  5. 選 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 儲存修改。 例:

  1. n 建立 => P 主分割區 => 1 分割區代號 => Enter 預設起點 => +1G 分割大小
  2. n 建立 => E 延申分割區 => 2 分割區代號 => Enter 預設起點 => Enter 預設分割大小
  3. n 建立 => L 延申分割區 => Enter 預設起點 => +1G 分割大小
  4. n 建立 => L 延申分割區 => Enter 預設起點 => +1G 分割大小
  5. n 建立 => L 延申分割區 => Enter 預設起點 => +1G 分割大小
  6. ...

至少建立一個主分割區、 兩個邏輯分割區。 每個分割區至少 1G。

又, 請見 剛建好 OpenVZ container 時值得做的初始化動作

4/13 fail2ban 防護

service fail2ban status
service fail2ban stop
service fail2ban status
# 確認 fail2ban 服務的狀態已變成 inactive (dead)
tail -f /var/log/auth.log
# 請同學開始攻擊

開幾個視窗 (並且登入你管的機器), 每個分頁分別做以下的事:

  1. 看 ssh 登入記錄: tail -f /var/log/auth.log
  2. 看 fail2ban 封鎖記錄: tail -f /var/log/fail2ban.log
  3. 啟動: service fail2ban start 確認已開啟之後, 請同學開始攻擊
  4. 攻擊同學: 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

學習重點:

  1. pipe
  2. command substitution, 也就是 $( .... )
  3. regular expressions

4/27 額外關鍵詞

  1. process
  2. program
  3. control domain
  4. resource pool
  5. high availability
  6. live migration

5/4

  1. mykvm -cdrom ~/Downloads/finnix-ckhung16a.iso
  2. 在虛擬機裡面 apt-get update 然後 apt-get install openssh-server
  3. 在 host 裡面: ssh -p 8022 root@localhost => 有服務。 ctrl-c 切掉。
  4. 在 guest 裡面: service ssh stop
  5. 在 host 裡面: 重連一次 => 失敗。

為下次準備: 接收老師派送的大檔案:

  1. udp-receiver > ~/Downloads/finnix-ckhung16c.iso
  2. udp-receiver > ~/Downloads/proxmox-ve_3.4-3f2d890e-1.iso
  3. udp-receiver > ~/Downloads/proxmox-ve_4.2-725d76f0-28.iso
  4. 如果真的一直都搭不上車, 也沒辦法從同學的 usb 拷貝檔案, 才從 資管系伺服器 下載。
  5. md5sum proxmox*.iso 並且跟 官網上面的 md5sum 比對確認。

5/11

  1. 插入隨身碟後, ls /dev/sd* 以及 fdisk -s /dev/sd[abcz] 確認一下隨身碟大小至少 15G。
  2. mykvm -cdrom ~/Downloads/proxmox-ve_4.2-725d76f0-28.iso -hda /dev/sdz -boot once=d
  3. 安裝過程當中, 請架設 qemu/kvm 虛擬區網
  4. 安裝成功後, 登入。 如果你的 「虛擬區網」 設定成功 (用 finnix 測試過) ==>
    1. 修改 proxmox 的 /etc/network/interfaces 裡面的 address 跟 gateway 兩欄, 還有 /etc/resolv.conf 跟 /etc/issue。
    2. shutdown -h now
    3. 從 host 再重開一次: mykvm -device e1000,netdev=net0,mac=52:54:00:12:34:1f -netdev tap,id=net0,ifname=qitap2931,script=no -hda /dev/sdz
    如果 「虛擬區網」 設定失敗, 那麼以後只能固定用預設的 10.0.2.15 這個 IP =>
    1. shutdown -h now
    2. 從 host 再重開一次: mykvm -redir tcp:13022::22 -hda /dev/sdz
  5. 重開之後, 在虛擬機裡面測試對外的網路: ping 8.8.8.8
  6. 也從外面 (host) 測試對虛擬機的連線:
    虛擬區網設定成功者 => ssh root@10.0.29.31
    虛擬區網設定失敗者 => ssh -p 13022 root@localhost
  7. 以下如果沒有特別講, 都是在 proxmox 虛擬機裡面做事。 透過 ssh 連線的視窗才可以剪貼指令, 比較好用。
  8. export http_proxy=http://proxy.cyut.edu.tw:3128 (只有現在這一次大家同時連線裝套件需要這樣做; 回家以後你就沒辦法用學校的 proxy 了, 所以不要寫到 ~/.bashrc 裡面去)
  9. 做一些 初始化設定, 包含建立一個可以 sudo 的 「普通人」 帳號。
  10. apt-get install lxde iceweasel chromium 兩個瀏覽器擇一安裝即可。
  11. 重開機, 變成圖形介面。 用 「普通人」 登入測試。 先不要開瀏覽器! 瀏覽器很傷隨身碟!
  12. 如果滑鼠不能動的話, 用 mykvm 啟動虛擬機時, 加上一小段: -usbdevice mouse (因為 qemu 預設的 ps2 滑鼠模擬好像怪怪的)
  13. 從 host 再用 ssh 連線:
    虛擬區網設定成功者 => ssh 普通人@10.0.29.31
    虛擬區網設定失敗者 => ssh -p 13022 普通人@localhost
  14. 按照 這一篇 安裝 profile-sync-daemon。 注意: proxmox 算是 debian 版, 而不是 ubuntu 版。 自動啟動檔的路徑是 ~/.config/LXDE/autostart 。
  15. 用瀏覽器打開 https://localhost:8006 , 對, 永遠信任自己的網站沒關係。

6/1 P2V 實戰

  1. 為節省時間並減少隨身碟損耗, 我們不採用 proxmox 來建立虛擬機, 而是在教室機的硬碟上用陽春的 kvm 搭配 qcow2 映像檔來實作。
  2. [用 finnix 開啟 linux 實體機, 用 tar czf 備份] <== 老師已幫你做好, 請下 udp-receiver > ~/Downloads/lubuntu-16.04-2-apps.tgz 等候發車; 傳完之後請下 md5sum ~/Downloads/lubuntu-16.04-2-apps.tgz 並且跟 老師的 md5sum 比對
  3. 建立一個 15G 大的 qcow2 映像檔: qemu-img create -f qcow2 lubuntu-16.04.qcow2 15G 詳見 qemu-img 講義
  4. 用 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
  5. 在虛擬硬碟上面建分割: cfdisk /dev/sda 記得先寫入 (wirte) 再離開!
  6. 建立並掛載檔案系統: mkfs -t ext4 /dev/sda1 ; mkdir /media/sda1 ; mount /dev/sda1 /media/sda1
  7. 解壓縮: 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 。
  8. 用 mykvm (不要 finnix!) 重開機測試。
  9. 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
  1. 在 lubuntu 上面建立一部 lxc container: lxc-create -n 201 -t debianlxc-create -t download -n 201 -- -d debian -r jessie -a amd64 (詳見阿舍的隨手筆記 從範本建立 從網路下載; 也請查看 /usr/share/lxc/templates/ 跟 /var/lib/lxc )
  2. 啟動 201、 進入 shell、 裝一些小套件、 建一兩個文字檔、 退出、 關機。
  3. 設定你的虛擬機時, 例如可以參考: 這篇 改你的提示字元。 比較複雜的範例: \[\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
  4. 查看設定檔內提及機器名稱的地方: grep '2.1' /var/lib/lxc/201/config
  5. 關機! 然後改名字: lxc-copy -R -n 201 -N 221
  6. 再查一次: grep '2.1' /var/lib/lxc/221/config
  7. * * * * *
  8. 關機! 然後打包備份自己的虛擬機: (參考 1
  9. cd /var/lib/lxc/221/rootfs
  10. date ; tar --numeric-owner -czf ~/Downloads/ct221.tgz . ; sync ; date
  11. 跟同學交換打包檔以及 config 設定檔。 (用 scp 或隨身碟)
  12. * * * * *
  13. 把同學的打包檔在自己的 lubuntu 上面解壓縮:
  14. mkdir -p /var/lib/lxc/251/rootfs
  15. cd /var/lib/lxc/251/rootfs ; tar --numeric-owner -xzf 同學的ct221.tgz
  16. 把 config 抄到 /var/lib/lxc/251/config 並適當修, 還有編輯 /var/lib/lxc/251/rootfs/etc/hostname
  17. 啟動並測試
  18. * * * * *
  19. 從 lubuntu 把 container 搬到 proxmox 裡面去 (參考 1):
  20. 建立 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
  21. 啟動並測試, 含網路