# 雲端技術實務 HW6 :::info **補充問題** https://hackmd.io/@whitefir473/B1lUqeszC ::: ## 系統簡介 * **伺服器OS:** Ubuntu 22.04 LTS Server Vision * **Cloud Image:** ubuntu-24.04-live-server-amd64.iso * **伺服器IP:** 10.2.200.142 * **對外IP:** 10.2.200.150 ## 建置虛擬機的前置作業 ### 1. 下載[Ubuntu Server 24.04 LTS](https://docs.openstack.org/image-guide/obtain-images.html#ubuntu) :::info **Ubuntu 雲端下載:** https://cloud-images.ubuntu.com/ ::: ![image](https://hackmd.io/_uploads/H1yXu5SVR.png) ### 2. 進入[http://10.2.200.142/dashboard](http://10.2.200.142/dashboard)將此映像檔上傳至 openstack :::info Project(專案) -> Compute(運算) -> Image(映像檔) -> Create Image(建立映像檔) ::: :::success **可見性** **私有:** 僅自己可見可用 **已分享:** 所有人可見,僅自己可用 **公開:** 所有人可見可用 ::: ![image](https://hackmd.io/_uploads/SJeaxcSNR.png) ![image](https://hackmd.io/_uploads/H1i36c-V0.png) ### 3.改變安全性群組的規則 :::success 預設群組的規則僅允許所有對外連線,對內連線則是全部禁止。因此我們需要新增規則,允許SSH以及ping連入。 ::: :::info Project(專案) -> Network(網路) -> 安全性群組 -> 管理規則 -> 加入規則 ::: ![image](https://hackmd.io/_uploads/B18y4kMQR.png) ![image](https://hackmd.io/_uploads/S1OBZ5HEC.png) ### 4.新增可用的浮動 IP :::info Project(專案) -> Network(網路) -> Floating IPs(浮動 IP) -> Allocate IP To Project(分配IP到專案) ::: ![image](https://hackmd.io/_uploads/SkQ_JsWVA.png) ### 5.新增 SSH key pairs :::success 由於剛建好的 instance 並沒有可用的使用者帳密以登入,僅能使用 SSH key pairs 登入,因此我們需要新增 SSH key pairs。 ::: :::info Project(專案) -> Compute(運算) -> Key Pairs(密鑰對) -> add Key Pairs ::: ![image](https://hackmd.io/_uploads/Hk2aZib4C.png) ![image](https://hackmd.io/_uploads/rk91XoWVR.png) > 私鑰將會自動下載,檔名為 "key1.pem",將此私鑰放在安全的地方保管。 ![image](https://hackmd.io/_uploads/HyelOiZEA.png) ## OpenStack網路設定 ### 1.建立虛擬外網(須與實體內網網段一樣) :::info **在現有public上,直接新增一子網路** Project(專案) -> Network(網路) -> Networks(網路) -> public -> 子網域 -> 新增子網域 ::: ![image](https://hackmd.io/_uploads/Sykk0T-X0.png) ![image](https://hackmd.io/_uploads/HJJgRTWmA.png) ![image](https://hackmd.io/_uploads/rJWQLH4XA.png) ### 2.橋接虛擬網卡到實體網卡 :::info sudo microstack.ovs-vsctl add-port br-ex **實體網卡名稱** //把虛擬網卡橋接到實體網卡 sudo ip addr flush dev **實體網卡名稱** //清掉實體網卡的 IP,避免跟虛擬網卡 IP 重複 sudo ip addr add **實體網卡IP/網段數字** dev br-ex //把原本實體網卡的 IP 位址加到虛擬網卡上 sudo ip link set br-ex up //啟用虛擬網卡 ::: ```cmd= sudo ovs-vsctl add-port br-ex eno1 #可能需安裝ovs-vsctl sudo ip addr flush dev eno1 #會斷網 ``` ![image](https://hackmd.io/_uploads/BJT-FGiGC.png) **到server修改00-installer-config.yaml** ![image](https://hackmd.io/_uploads/H13DmzjzA.png) ``` network: version: 2 renderer: networkd ethernets: br-ex: dhcp4: no addresses: [10.2.200.142/25] gateway4: 10.2.200.239 nameservers: search: [] addresses: [8.8.8.8,8.8.4.4] eno1: dhcp4: no eno2: dhcp4: true ``` ![image](https://hackmd.io/_uploads/BJRTqMiMC.png) **更新網路配置:** ```cmd= sudo netplan try ``` 接著繼續 ```cmd= sudo ip addr add 10.2.200.142/25 dev br-ex sudo ip link set br-ex up ip route ``` ![image](https://hackmd.io/_uploads/rkDX6zizC.png) ### 3.使用預設網路(虛擬內網)(shared) ![image](https://hackmd.io/_uploads/S13Vyh-VC.png) ### 4.建立虛擬 router 連接虛擬內網和外網 :::info Project(專案) -> Network(網路) -> Routers(路由器) -> Create Router(新增路由器) ::: ![image](https://hackmd.io/_uploads/HkFdyhZV0.png) :::info Admin(管理員)|Project(專案) -> Network(網路) -> Routers(路由器) -> router -> 網路卡 -> 加入網路卡 ::: > 使用預設網路(虛擬內網)(shared) > ![image](https://hackmd.io/_uploads/Syp2kh-V0.png) :::warning **若無法連接shared,則可另外創建虛擬內網** 之前有用router連接過shared,之後砍掉了就連接不上了 ![image](https://hackmd.io/_uploads/Hkm68crVC.png) Project(專案) -> Network(網路) -> Networks(網路) -> Create Network(新增網路) ![image](https://hackmd.io/_uploads/SkAK8qrVR.png) > 虛擬內網網段可以自訂,不要跟實體網路一樣就好 ![image](https://hackmd.io/_uploads/rJSkwRZXA.png) ![image](https://hackmd.io/_uploads/B1wgv0Z70.png) ::: ## 使用OpenStack建立虛擬機 ### 1.建立虛擬機 :::info Project(專案) -> Compute(運算) -> Instances(雲實例) -> Launch Instance(發動雲實例) ::: ![image](https://hackmd.io/_uploads/rk7vji-ER.png) ![image](https://hackmd.io/_uploads/rkwfzcSVR.png) ![image](https://hackmd.io/_uploads/SJyjoi-NR.png) ![image](https://hackmd.io/_uploads/HkN_CoZV0.png) ### 2.檢查網路拓樸並配對 floating IP 到虛擬機的虛擬內網 IP :::info Project(專案) -> Network(網路) -> Network Topology(網路拓撲) ::: ![image](https://hackmd.io/_uploads/BJLjAor4A.png) :::info Project(專案) -> Network(網路) -> Floating IPs(浮動 IP) -> 找到剛才產生的 floating IP -> Associate(連結) ::: ![image](https://hackmd.io/_uploads/HJBXZ2WVC.png) ![image](https://hackmd.io/_uploads/BJxP-nbER.png) ## 檢查連線狀態並連入虛擬機 ### 1.使用 SSH 私鑰連入虛擬機 > 剛建好的 instance 並沒有可用的使用者帳密以登入,僅能使用 SSH key pairs 登入 ``` ssh -i C:\Users\fiona\Downloads\key1.pem ubuntu@10.2.200.150 ``` ![image](https://hackmd.io/_uploads/BJ9M25SV0.png) ![image](https://hackmd.io/_uploads/H14V3cBNR.png) ### 2.添加使用者(X 可能不必要 但主控台可用熟悉帳號登入) ```cmd= sudo adduser s1092960 # 建立使用者 sudo adduser s1092960 sudo # 將剛剛新建立的使用者添加到sudo ``` ![image](https://hackmd.io/_uploads/HkQ0h5HEA.png) ### 3.網路設定 :::info addresses: - 10.0.10.25/24 # 内網IP - 10.2.200.150/32 # 浮動IP gateway4: 10.0.10.1 # 根據實際情况修改 ... nameservers: addresses: - 8.8.8.8 - 8.8.4.4 ::: ![image](https://hackmd.io/_uploads/ByB0BorN0.png) ![image](https://hackmd.io/_uploads/Sym33jr4R.png) ![image](https://hackmd.io/_uploads/rJZe6jr4A.png) ![image](https://hackmd.io/_uploads/By7Saor4A.png) ### 4.ping www.google.com ![image](https://hackmd.io/_uploads/BJZnXjHE0.png) :::warning ***若出現ping: www.google.com: Temporary failure in name resolution,表示DNS沒有設好*** ![image](https://hackmd.io/_uploads/Hy_KA9rEA.png) **解決方法:** https://blog.csdn.net/donaldsy/article/details/119973990 https://askubuntu.com/questions/886359/ping-8-8-8-8-works-but-ping-www-google-com-doesnt ***若遇到sudo: unable to resolve host [hostname]: Temporary failure in name resolution,表示系統在解析機器的主機名時遇到了問題。*** ![image](https://hackmd.io/_uploads/H1EY-sHE0.png) **解決方法:** 檢查 /etc/hosts 文件:確保's1092960'是正確的主機名。如果缺失,請添加它。 > 該文件應該包含將你的主機名映射到 127.0.0.1 或 127.0.1.1 的條目。 ```cmd= sudo nano /etc/hosts ``` ![image](https://hackmd.io/_uploads/S1IDWoSEC.png) **ssh key 問題,Windows連接SSH報錯permissions for are too open** https://blog.csdn.net/asd123pwj/article/details/128087367 ::: # 檢視重點 ## Hostname ![image](https://hackmd.io/_uploads/ryF7ynrVR.png) ## IP ![image](https://hackmd.io/_uploads/ryMry3HEA.png) ## ping www.google.com ![image](https://hackmd.io/_uploads/BJywy2B4C.png)