antony@notes:~/container$ cat "Alpine-Linux-詳細安裝說明.md"
Alpine Linux 詳細安裝說明
Alpine Linux 詳細安裝說明
[TOC]
左下角鯨魚:Docker(碼頭工人),事實上是一間公司的名字,上面的方塊圖形是container(貨櫃)
container(貨櫃)
- 一台container就是一台電腦
- 一台實體電腦,可以同時執行很多台container
- 在同樣的實體硬體規格,虛擬技術做出來10台的虛擬機器,container可以做出30台
左下角第二個圖, kubernetes(簡稱:k8s,因為k到s中間有8個字母) 它的圖示是一個船舵,他是雲端作業系統,功能是用來管理Container,以上的架構是新一代的系統工程
這套系統是google公司設計的,因為是google公司設計的,微軟沒有這種技術,現在真正技術主導的是Google、Amazon和Yahoo
Cloud Native Computing Foundation 負責推動雲原生技術,主導系統工程的網站
2022年電腦基礎概論,就是以上的系統工程架構
第三個圖示,和第四個圖示 Hadoop和Spark為資料工程,建立在系統工程之上,他們主要為企業做出分析,和AI人工智慧
之後可以找的工作: 1. 網路工程師 要會的技能:TCP/IP網路系統和Ip tables 2. 資料庫管理師(Database manager) 要會的技能:主軸在MySQL,SQL command,MySQL instance,CDC 以上兩者底層加分技術:linux和bash script
2022/04/20 複習前面的課程
下載Alpine

Standard
下載下來的都是光碟片(.iso),是把alpine linux裝在實體電腦裡面,實體電腦規格可以用5年前的電腦cpu i5(i3其實也可以) 記憶體 8GB, x86 是32位元 x86_64 是64位元
現在台灣大部分的網路工程師,是把Ubuntu裝在實體機器
為何使用Alpine Linux?
- Alpine linux = Kernel + musl + busybox + apk * linux kernel,linux 的核心,能用 CPU、記憶體、硬碟和網路,有它才可以使用電腦 * musl ,C語言的程式庫,可以在alpine linux裡面用C語言設計要用的功能(linux 作業系統的核心大部分還是用C語言) * busybox ,800k的大小,可以模擬出linux 60幾個指令(像是cut、grep、zip…等) * apk ,全名alpine package ,如果原本沒有套件,可以透過apk add安裝 * 因為內容簡單,所以資安等級A,且舊的設備也可跑起來
台灣現況:Centos 也是一種linux系統,因內容眾多,只要系統一起來,就把防火牆和很多防護機制啟動,windows 10/11 也是
VIRTUAL
給VMware和linux KVM使用
啟動 VMware Workstation Player
建立 alp.takoyaki 虛擬主機
請選擇 “I will install the operating system later”, 開始建立 alp.takoyaki 虛擬主機

Guest operating system 選擇 Linux, Version 為 Other Linux 5.x kernel 64-bit
- 選Other Linux 5.x kernel 64-bit,是因為alpine 所使用的 kernel 為最新的 5 系列

- 選Other Linux 5.x kernel 64-bit,是因為alpine 所使用的 kernel 為最新的 5 系列
Virtual Machine name 設為 alp.takoyaki, Location 設為 c:\alp.takoyaki

Maximum disk size (GB): 800, 點選 “Store virtual disk as a single file”,代表一個檔案最大可以到800 GB,算是單檔作業

點選 Customize Hardware 按鈕, 移除 Printer, Sound Card, USB Controller, 因為用不到還啟動他們會浪費運算資源
然後設定 New CD/DVD(IDE), 點選 Use ISO Image File, 選擇 alpine-virt-3.15.4-x86_64.iso,
點選 Processors, 勾選 Virtualize Intel VT-x/EPT or AMD-V/RVI
啟動 alp.dt 虛擬主機
一個資料夾代表一台電腦 副檔名(.vmdk),虛擬電腦的硬碟檔,就是剛剛選擇的800 GB的硬碟,事實上它就是windows裡面的一個檔案,我們的alpine linux就是存在裡面,不僅如此,我們之後在alpine linux所做的一切linux命令動作,也會通通放在裡面
dk 就是disk的簡寫
副檔名(.vmx),虛擬電腦的設定檔,點他右鍵,用記事本開啟,可以看到設定檔,像是記憶體有多大,cpu幾個核心
- 將記憶體大小改成:memsize = “2048”

如果有軟體在使用這台虛擬電腦,他的資料夾裡面會多出.lck檔

開始安裝(setup-alpine)
用root登入,我們用光碟片啟動的系統
透過setup-alpine這個命令,把alpine linux系統裝到硬碟裡面
localhost:~# setup-alpine第一個是設定鍵盤的排列方式,因為我們台灣的鍵盤是美規,所以這邊打us或是tw都一樣 第二個是地區性的按鍵是什麼規格,在us裡面還有分很多不同的規格,一樣打us
Select keyboard layout [none]: us
Select variant []: us
* Caching service dependencies ...
[ ok ]
* Setting keymap ...
[ ok ]設定電腦名稱: takoyaki
Enter system hostname (short form, e.g. 'foo') [localhost]: takoyaki設定這台alpine linux虛擬電腦的網路卡名稱,使用內定名稱"eth0"就好,不要修改
Available interfaces are: eth0.
Enter '?' for help on bridges, bonding and vlans.
Which one do you want to initialize? (or '?' or 'done') [eth0] 有了網路卡,就要有IP位址,這邊透過DHCP Sserver配發IP,VMware workstation扮演Dhcp Server
Ip address for eth0? (or 'dhcp', 'none', '?') [dhcp]是否要手動設定其他的網路設定: no
Do you want to do any manual network configuration? [no]
udhcpc: started, v1.31.1
udhcpc: sending discover
udhcpc: sending discover
udhcpc: sending select for 10.0.2.15
udhcpc: lease of 10.0.2.15 obtained, lease time 86400設定root的密碼
Changing password for root
New password: root
passwd: password for root changed by root設定時區,Asia的A一定要大寫,Taipei的T也要大寫,我們在的時區是亞洲台北
Which timezone are you in? ('?' for list) [UTC] Asia
What sub-timezone of 'Asia' are you in? ('?' for list) Taipei
* Starting busybox acpid ...
[ ok ]
* Starting busybox crond ...
[ ok ]系統詢問我們的工作環境是否有proxy server,回答: none
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] NTP : network time protocol,網路時間協定 chrony:他是一套軟體,會跟網路上的時間伺服器做同步 每台電腦時間一定要同步,不然會導致部分軟體無法使用
Which NTP client to run? ('busybox', 'openntpd', 'chrony' or 'none') [chrony]
* service chronyd added to runlevel default
* Caching service dependencies ...
[ ok ]
* Starting chronyd ...
[ ok ]
Available mirrors:
1) dl-cdn.alpinelinux.org
2) uk.alpinelinux.org
3) dl-2.alpinelinux.org
4) dl-4.alpinelinux.org
5) dl-5.alpinelinux.org
6) dl-8.alpinelinux.org
7) mirror.yandex.ru
8) mirrors.gigenet.com
9) mirror1.hs-esslingen.de
.............
r) Add random from the above list
f) Detect and add fastest mirror from above list
e) Edit /etc/apk/repositories with text editorapk的套件有72個下載點,要選擇第6個下載點,因為他是alpine官網下載的第六個網址,依照老師的經驗,出錯比例低
Enter mirror number (1-72) or URL to add (or r/f/e/done) [1]: 6
Added mirror dl-8.alpinelinux.org
Updating repository indexes... done.安裝哪個SSH Server(遠端管理電腦的伺服器)?
Which SSH server? ('openssh', 'dropbear' or 'none') [openssh]
* service sshd added to runlevel default
* Caching service dependencies ...
[ ok ]
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
* Starting sshd ...
[ ok ]選擇我們當初創造出來的名字叫sda的硬碟
Available disks are:
sda (536.9 GB ATA QEMU HARDDISK )
Which disk(s) would you like to use? (or '?' for help or 'none') [none] sda
The following disk is selected:
sda (536.9 GB ATA QEMU HARDDISK )系統問我們硬碟裡面要裝什麼 因為我們的硬碟要裝整個作業系統,所以打sys
How would you like to use it? ('sys', 'data', 'lvm' or '?' for help) [?] sys
WARNING: The following disk(s) will be erased:
sda (536.9 GB ATA QEMU HARDDISK )是否要清理硬碟的內容: 是
WARNING: Erase the above disk(s) and continue? [y/N]: y
Creating file systems...
Installing system on /dev/sda3:
/mnt/boot is device /dev/sda1
100% ############################################==> initramfs: creating /boot/initramfs-virt
/boot is device /dev/sda1
Installation is complete. Please reboot.把虛擬機器關機
alp:~# poweroff再次啟動 VMware Workstation Player
移除 CD/DVD 裝置, (因為我們已經把alpine系統裝到硬碟上,所以可以把光碟刪掉)然後啟動 alp.takoyaki 虛擬主機,
登入 Alpine 虛擬主機
takoyaki login: root
Password: root安裝nano和sudo兩個指令
$ apk add nano sudo更改OpenSSH Server的設定檔,允許root可以透過ssh登入
$ nano /etc/ssh/sshd_config
....
PermitRootLogin yes (原本是prohibit-password,禁止密碼)
....將虛擬機器重新開機
$ rebootAlpine 系統環境設定
在 Windows 命令提示字元 視窗, 登入 alp.takoyaki 虛擬主機
$ ssh root@192.168.61.xxx root@192.168.61.xxx's password: root
如果出現這個畫面,代表之前有同樣的IP位址被Windows電腦記住憑證,可以用notepad進去把那個IP刪掉系統更新
# nano /etc/apk/repositories ...... http://mirrors.gigenet.com/alpinelinux/v3.15/main # 官方本身會維護的套件下載點 http://mirrors.gigenet.com/alpinelinux/v3.15/community (取消這行 備註) # 是到非官方的社群、其他第三方單位維護的套件下載點 ## 以上兩個網址,在一般外面工作都稱為穩定版的套件下載點 ...... $ apk update; apk upgrade # update : 到上面的兩個網站,下載套件清單 # upgrade : 把舊的套件根據前面新的套件清單做比對,把舊的套件升級到最新版———————–以上兩點就是將系統更新
安裝 應用套件
$ apk add tree unzip curl wget zip grep bash procps util-linux-misc dialog go udev建立與設定 管理者 帳號 (bigred) 建立使用者 : bigred
$ echo -e "bigred\nbigred" | adduser -s /bin/bash bigred # /bin/bash 就是我們跟Linux交談的終端機程式將bigred加入wheel群組
$ addgroup bigred wheel # wheel 群組只有在alpine linux有,如果要在Ubuntu或其他linux系統,可以自己創一個wheel系統,再把bigred加進去。
修改sudo的授權檔
$ nano /etc/sudoers
....
%wheel ALL=(ALL) NOPASSWD: ALL (取消這行 備註)
# 取消註解會讓wheel這個群組裡面的成員在執行sudo時,不用打密碼
....冷凍 root 帳號
$ passwd -dl root 宣告root的密碼,永遠過期關閉 IPv6 (有先軟體預設會先找IPV6溝通,會影響到我們的網路速度)
$ nano /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6 = 1 # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:EE:79:EA inet addr:192.168.61.136 Bcast:192.168.61.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:feee:79ea/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:105588 errors:0 dropped:0 overruns:0 frame:0 TX packets:10794 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:157168681 (149.8 MiB) TX bytes:768421 (750.4 KiB)重新開機
$ reboot在 Windows 命令提示字元 視窗, 使用 bigred 帳號, 登入 alp.takoyaki 虛擬主機
$ ssh bigred@192.168.61.xxx bigred@192.168.61.xxx's password: bigred檢查IPV6有沒有關閉
$ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:EE:79:EA inet addr:192.168.61.136 Bcast:192.168.61.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:104 errors:0 dropped:0 overruns:0 frame:0 TX packets:99 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:13399 (13.0 KiB) TX bytes:12816 (12.5 KiB)設定 SSH ,產生公私鑰,並複製公鑰成 authorized_keys
$ ssh-keygen -t rsa -P '' # keygen的gen,全名是genarate,所以就是產生兩把鑰匙 # -t rsa 是用rsa演算法 Enter file in which to save the key (/home/bigred/.ssh/id_rsa): 按 Enter # 上面這行是問你鑰匙是否存放在/home/bigred/.ssh/目錄下檢查
takoyuki:~$ ls -al .ssh total 16 drwx--S--- 2 bigred bigred 4096 Apr 19 15:36 . drwxr-sr-x 3 bigred bigred 4096 Apr 19 15:36 .. -rw------- 1 bigred bigred 2602 Apr 19 15:36 id_rsa 這是私鑰 -rw-r--r-- 1 bigred bigred 569 Apr 19 15:36 id_rsa.pub 這是公鑰以上的私鑰和公鑰是給bigred使用的
做ssh設定檔的修改,以後當我們要來=連接對方,對方給我們的公鑰,我們就直接收了,不用打yes
$ echo 'StrictHostKeyChecking no' | sudo tee -a /etc/ssh/ssh_config這是後面大數據平台要用的
$ echo 'PermitUserEnvironment yes' | sudo tee -a cat /etc/ssh/sshd_config設定登入 訊息
$ echo 'Takoyaki 22.04.0' | sudo tee /etc/motd # /etc/motd 這個檔案裡面只能放文本,只要我們一登入進去,就會看到的文字說明重新開機
$ sudo reboot備份 alp.takoyaki 虛擬主機 壓縮虛擬機器的資料夾
2020/04/20 上課
Encryption
當Host A主機要傳資料給Host B主機時,會先用Host B的公鑰(public key)將明文(plaintext)加密,Host B 收到密文後,用自己的私鑰(private key)解密出明文(plaintext)
SSH
當client端第一次連線到Server端的時候,Server端會問你要不要收公鑰,回答:yes,就會接收到Server的公鑰,如果我們的client端是windows系統,這把公鑰會放在C:\Users\ybean.ssh目錄裡面的Known_host檔案裡面,
192.168.61.140 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOWo9mcmIQL5mFLnZtuNmXtNB0w7UNI7aPIbOvgthFO7f/R2EeLeh/lEOYlo5WEJM2spiQMaf8UZljeyb4QcyTM=
Server的IP位址 演算法 公鑰章魚燒 系統
[職能考驗項目]
- 資料容量大小計算
- 網路代號計算
- 檔案目錄權限判讀
[系統設計]
在 Windows 命令提示字元 視窗, 使用 bigred 帳號, 登入 alp.takoyaki 虛擬主機 $ ssh bigred@192.168.61.xxx bigred@192.168.61.xxx’s password: bigred
檢視 命令 目錄
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ which sh
/bin/sh根據『PATH』這個環境變數所紀錄的路徑,去搜尋『執行檔』的檔名
在alpine linux裡面很多命令真正的執行,都會導向/bin/busybox
- 自製 攔截 命令
$ mkdir takoyaki
$ nano takoyaki/sh
#!/bin/sh
echo '5 second to answer question'
read -t 5 -p '57+42/6 = ' ans
[ $? == 1 ] && echo -e "\nbye" && exit 1
$ chmod +x takoyaki/sh
$ ./takoyaki/sh
5 second to answer question
57+42/6 =
bye
$ ./takoyaki/sh
5 second to answer question
57+42/6 = 64
$ sudo cp takoyaki/sh /usr/local/bin/
$ sh
5 second to answer question
57+42/6 =
bye- 修改 攔截 命令
$ nano takoyaki/sh #!/bin/sh echo '5 second to answer question' read -t 5 -p '57+42/6 = ' ans # -t ,給秒數 [ $? == 1 ] && echo -e "\nbye" && exit 1 if [ "$ans" == "64" ]; then sudo rm /usr/local/bin/sh &>/dev/null # 刪除sh的程式,並且丟到黑洞 [ "$?" == 1 ] && echo -e "\nerror" && exit 1 echo "pass" fi
$ sudo cp takoyaki/sh /usr/local/bin/
$ sh
5 second to answer question
57+42/6 = 64
pass
$ sh
-bash: /usr/local/bin/sh: No such file or directory
$ exit
練習:
1. 設計 攔截 ping 命令, 問題如下:
192.168.30.127/26 ,network id is ?
2. 設計 攔截 mkdir 命令, 問題如下:
rwxr--r-x = ? (number)
---
### IP
Class A0.x.x.x /8 ~ 127.0.0.0 /8 8是subnet mask 這個8也是subnet mask 8的意思是8個bit,也就是1111 1111 = 255 , 完整地表示255.0.0.0 Class A的網段,子網路遮罩一定是8開始,往後數
Class B128.x.x.x /16 ~ 191.x.x.x /16 Class B的網段,子網路遮罩一定是16開始,往後數
Class c192.x.x.x /24 ~ 223.x.x.x /24
Class C的網段,子網路遮罩一定是24開始,往後數

行規IP分配(沒有強制性)
120.96.143.128/25 代表Network ID (頭)
120.96.143.129 ~ 120.96.143.138 代表IP Server (前面10個)
120.96.143.250 ~ 120.96.143.254 代表網路設備 (後5個)
120.96.143.255/25 代表廣播位址 (尾)
口訣:去頭去尾前十後五