發表文章

學習案例:首次登入的系統巡檢任務 (V2.0 增強版)

 # 學習案例:首次登入的系統巡檢任務 (V2.0 增強版) ## 情境介紹 (The Core Problem) 您是一位新上任的系統管理員,今天第一次登入公司的一台重要伺服器。您的首要任務不是修改任何東西,而是進行一次**非侵入式的系統巡檢**,全面了解這台主機的作業系統版本、帳號與網路配置、以及當前的運行狀態,並將結果彙整成一份結構化的報告。 ## 你的任務是: 1.  在你的家目錄下,建立一個用於存放本次巡檢報告的工作區。 2.  全面收集系統的**版本、帳號、網路、磁碟、登入及程序**等核心資訊。 3.  將收集到的原始數據,分門別類地儲存到一份報告檔案中。 4.  分析這份報告檔案,從中過濾並找出關鍵資訊。 5.  完成報告後,整理工作區。 --- ### 階段一:【建立工作區】為你的任務做好準備 * **問題:** 在開始收集資訊前,我需要一個乾淨的地方來存放我的報告。 * **操作與解說:**     ```bash     # 確認當前位置     pwd     # 建立名為 system_check 的資料夾     mkdir system_check     # 進入該資料夾     cd system_check     # 建立一個名為 report.txt 的空白報告檔     touch report.txt     # 確認工作區與檔案已就緒     ls -l     ```     * **階段成果:** 您已成功建立 `~/system_check/` 工作區及 `report.txt` 報告檔。 --- ### 階段二:【數據採集】將系統狀態輸出到報告中 * **問題:** 如何依序執行一系列檢查指令,並將它們的結果有條理地全部存入 `report.txt` 中? * **操作與解說:** 我們將使用 `>` (覆蓋) 來寫入第一筆資料,然後統一使用 `>>` (附加) 來新增後續所有資訊區塊...

學習案例:設定多人共用的安全 Web 目錄

# 實戰案例:設定多人共用的安全 Web 目錄 ## 情境介紹 (The Core Problem) 您是公司的系統管理員,目前正在管理一台 Web 伺服器。有兩位網頁開發者,`alice` 和 `bob`,他們需要共同開發一個位於 `/var/www/project_alpha` 的新網站。 **您的核心挑戰是:** 1.  `alice` 和 `bob` 都必須能夠在 `/var/www/project_alpha` 目錄中新增、編輯和刪除檔案。 2.  為了解決協作問題,`alice` 建立的檔案,`bob` 必須能夠編輯,反之亦然。 3.  系統上其他的無關使用者,絕對不能對此目錄有寫入權限。 4.  最終,網站伺服器軟體(例如 Nginx,通常以 `www-data` 使用者身份運行)需要能夠讀取這些檔案,以便將網頁呈現給訪客。 --- ## 階段一:【建立協作團隊與成員】 * **問題:** 「首先,我需要為開發者 `alice` 和 `bob` 建立系統帳號,並將他們納入一個名為 `webdevs` 的共同開發群組中。」 * **操作與解說 (以 `root` 或具備 `sudo` 權限的使用者執行):**     1.  **建立 `webdevs` 群組:**         ```bash         sudo groupadd webdevs         ```         * **`groupadd`**: 用於建立一個新的使用者群組。     2.  **建立使用者 `alice`,並將其主要群組設為 `webdevs`:**         ```bash         sudo useradd -m -s /bin/bash -g webdevs alice         ```         * **`us...

學習案例:設定 Ubuntu 伺服器的 SSH 金鑰安全認證

# 實戰情境:設定 Ubuntu 伺服器 (172.30.0.199) 的 SSH 金鑰安全認證 ## 概述 本教學模擬一個常見的內部訓練情境。指導者已備妥一台全新的 Ubuntu 伺服器,學員需從自己的 Ubuntu 電腦,透過私有網路連線至該伺服器,並完成從密碼登入到金鑰認證的安全升級。 ### **情境設定** * **指導者提供資訊:**     * 伺服器 IP 位址:`172.30.0.199`     * 初始登入帳號:`ubuntu`     * 初始登入密碼:(指導者提供) * **學員端 (您的電腦):**     * 作業系統:Ubuntu Linux     * 角色:跟隨本指南操作,連線至伺服器。 --- ## 步驟一:【前置作業】網路環境確認 在嘗試連線之前,必須先確認您自己的電腦與目標伺服器在網路上是「可溝通」的。 ### **1.1 檢查自身網路座標** * **問題:** 「在連線到別台電腦前,我得先知道我自己的 IP 位址是什麼,以及我所在的網路環境為何?」 * **操作 (在您的 Ubuntu 電腦上執行):**     ```bash     ip a     ```     * **解說:** 找出您電腦的網路卡(如 `ens18`, `eth0`),記下其 `inet` 後面的 IPv4 位址。 ### **1.2 確認與目標伺服器的連線** * **問題:** 「我知道我的位置了,那目標伺服器在網路上『活著』嗎?它的 SSH 服務有在聽嗎?」 * **操作 (在您的 Ubuntu 電腦上執行):**     1.  **測試網路是否通暢 (Ping):**         ```bash         ping -c 4 172.30.0.199         ```     2.  **測試 SSH 服務端口是否開啟 (Netcat):**   ...

透過 curl 的 timeout 設定識別 http 的網路連線壅塞問題

網路連線壅塞是一個難解的問題, 因為網路會產生抖動(Jitter)現象, 抖動發生時, 連線會突然變得很慢. 當狀況改善後就會回復. 但很大的原因是因為是因為 DNS 解析或是 TCP 交握的過程產生的問題.  當 curl 連線到一個 HTTP 網址時,其工作流程包括以下幾個主要步驟: 1. DNS 查詢 目標 :解析主機名 (如 example.com ) 對應的 IP 位址。 過程 : curl 通過 DNS 伺服器進行查詢,獲取目標伺服器的 IP 地址。 結果 :若查詢成功,返回 IP 地址, curl 將繼續下一步。若查詢失敗, curl 則返回 DNS 錯誤並中止。 2. TCP 三向交握 (Three-Way Handshake) 目標 :建立與目標伺服器的 TCP 連線。 過程 : curl 通過系統內核發送一個 SYN 封包,目標伺服器回應 SYN-ACK ,然後 curl 返回 ACK 完成三向交握,建立起 TCP 連線。 結果 :若在 --connect-timeout 設定時間內未完成三向交握,則連線失敗並返回超時錯誤。 3. 發送 HTTP 請求 目標 :向伺服器發送具體的 HTTP 請求,根據 URL 設定不同的請求方法(如 GET 、 POST )。 過程 : curl 構建 HTTP 請求標頭並附加任何所需的數據(如表單數據),然後通過已建立的 TCP 連線將請求發送到伺服器。 結果 :伺服器接收請求並準備回應,若過程中出現網路問題,則請求可能中止或失敗。 4. 伺服器處理請求並返回回應 目標 :伺服器根據請求的 URL 路徑處理並生成對應的回應內容。 過程 :伺服器確認請求內容後,由 HTTP 伺服器(如 httpd )根據需求(例如讀取靜態文件或調用後端服務)生成回應,並加上適當的 HTTP 狀態碼和標頭。 結果 :伺服器將回應內容傳回給 curl 客戶端。 5. 接收 HTTP 回應 目標 : curl 從伺服器接收回應數據,並在終端或指定的輸出目標中顯示。 過程 : curl 讀取 HTTP 回應標頭(包括狀態碼,如 200 OK 、 404 Not Found 等)及內容,並根據需要顯示、保存或處理該回應。 結果 :若指定了輸出文件, curl 將回應寫入文件;若未指定,則在終端中顯示。...

VMWARE VM linux 擴充硬碟空間

可以參考 AWS 上面的文章  https://docs.aws.amazon.com/zh_tw/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html  但 EC2 流程更簡單, 你在EC2調整後他自動幫你最佳化到好. Linux 內部他幫你處理了. VMWARE ESXi 就自己動手流程是 先調整 VMWARE 的VM硬碟空間 再去 LINUX 擴大硬碟分割區 然後把  FileSystem 放大 就好了...XD but 很重要的是, 因為這些有風險建議先備份免得出意外!!!  VMWARE ESXi Ubuntu Linux 放大VM硬碟 ESXi 把要放大硬碟的VM主機關機, 調整外部的硬碟容量設定大小(增大) 重開機, 從 ESXi console 登入 root 調整 可以先檢查目前的 disk 容量 # fdisk /dev/sda -l 重新掃描磁碟, ex: /dev/sda # echo 1 | sudo tee -a /sys/block/sda/device/rescan 延伸VM磁碟配置表 , 延伸後可以再檢查看看VM硬碟容量是否已經改變 #  growpart /dev/sda 3 重新讀取磁碟配置表 #  partprobe -s /dev/sda 延伸 LVM 的 Physical Extent (PE) , pvdisplay 可以檢查pv容量是否變化 #  pvresize -v /dev/sda3 延伸 LVM 的 Logical Volume (LV) * 完全延展 # lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv * 指定容量延展 # lvextend -L +100G /dev/ubuntu-vg/ubuntu-lv 延伸檔案系統 size , 可以用 df -lh 檢查容量 # resize2fs /dev/ubuntu-vg/ubuntu-lv

NGINX 沒有 index.html 預設顯示目錄索引

圖片
可以參考這一篇  https://serverfault.com/questions/312796/custom-autoindex-pages-with-nginx 設定 nginx 沒有 index.html 有索引檔案 location / { autoindex on; autoindex_format xml; xslt_stylesheet /path/to/custom.xslt } 但是設定好不是很美觀, 沒有 CSS 的排版及顏色  https://github.com/gibatronic/ngx-superbindex  再參考這個專案, 改成 xslt 檔案來配顏色及排版. 大功告成!!

買個 HTTP SSL 憑證

圖片
自從 sslforfree 及 letsencrypt 有提供免費憑證後, 就很少參與付費買憑證這種事    https://www.sslforfree.com/     https://letsencrypt.org/zh-tw/  後來連 wildcard 也跟著免費了  https://community.letsencrypt.org/t/acme-v2-production-environment-wildcards/55578 但, 在商業應用上, 為了某些因素還是得買個有效長一點的憑證, 才不會拿出來感覺像是詐騙網站 搜尋一下網路上賣憑證的廠商超級多的, 實在不知道該如何比較.. 後來我只能稍微檢查一下, 看看瀏覽器內的內建憑證商, 有哪些憑證有效期間比較長來選擇 這裡有些基本的憑證資訊要先理解一下,  買起來才會順利 https://haway.30cm.gg/ssl-key-csr-crt-pem/ 申請的流程 1.需要先有個私鑰 Private Key 2.還需要有簽署憑證須求檔 CSR 3.再來提交到網站上, 他就會給你生成的 CRT 憑證, 及 PEM or CRT 中繼憑證 以  https://cheapsslsecurity.com/ 為例, 你先選擇 SSL 憑證廠牌後, 在選擇需要的憑證格式 付款後就會進入生成憑證的流程.  但還是需要先生成 Private Key 才可以 可以用 openssl 工具產生KEY and CSR ubuntu@hk:~/csr$ openssl req -new -newkey rsa:2048 -sha256 -nodes -out wildcard.apptest.com.csr -keyout wildcard.apptest.com.key -subj "/C=HK/ST=Queenswat/L=Admiralty/O=Topplayer/OU=IT/CN=*.apptest.com" 這裡我生成的是一個 Wildcard 的萬用字元憑證, 網站會依據 csr 生成簽署過後的 CRT 給你, 通常會是一個 ZIP 壓縮檔.  因為商業銷售與代理機制的關係, 所以通常不會是由 ROO...

LibreOffice Draw 可以編輯PDF

圖片
 昨天最驚訝的事, 一直有再用的 LibreOffice 的軟體,  LibreOffice Draw 可以編輯PDF LibreOffice Office 編輯PDF 原來在 WIKI 都有寫了, 沒遇到還真的不知道. 這樣 Adobe Acrobat 難怪要轉往雲端發展了. XDXD 馬上下載來玩玩吧!!! https://zh-tw.libreoffice.org/  

xshell 3.0 無法登入 ubuntu 2004 LTS 版本

圖片
當你的 xshell or ssh client 無法登入新版的ssh server... no matching key exchange method found. Their of offer: diffie-hellman-group1-sha1. * 錯誤訊息應該長得雷同 # tail /var/log/auth.log Apr 24 13:43:45 mtchang sshd[1537]: Unable to negotiate with 172.24.0.201 port 61949: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael128-cbc,rijndael192-cbc,rijndael256-cbc,rijndael-cbc@lysator.liu.se [preauth] * 降版本應該可以好 root@mtchang:~# tail -n 5 /etc/ssh/sshd_config Ciphers 3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 root@jutainet:~# /etc/init.d/ssh restart Restarti...

Ubuntu 19.10 LTS Mini. install 調整Linux內部預設時區

圖片
Ubuntu 19.10  LTS Mini. install 調整Linux內部預設時區 最小安裝 ubuntu 的時候,預設都是設定 UTC +0 的時區,有時候真的很難對時間。 Ubuntu 只要透過安裝 tzdata 就可以設定預設時間了  sudo apt-get install tzdata 如果你已經設定過了,可以透過 sudo dpkg-reconfigure tzdata 重新設定。 詳細過程如下: jangmt@instance-1-tokyo:/usr/share$ sudo apt-get install tzdata Reading package lists... Done Building dependency tree      Reading state information... Done The following NEW packages will be installed:   tzdata 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 208 kB of archives. After this operation, 3534 kB of additional disk space will be used. Get:1 http://asia-northeast1.gce.archive.ubuntu.com/ubuntu eoan/main amd64 tzdata all 2019c-3 [208 kB] Fetched 208 kB in 1s (171 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package tzdata. (Reading database ... 63700 files and directories currently installed.) Preparing to unpack .../tzdata_20...

xshell 舊版無法登入新版的ubuntu ssh 問題

圖片
ssh 使用加密演算法報錯unknown cipher type 找出目前這個版本的 ssh 支援的加密演算法 ssh -Q cipher localhost | paste -d , -s - * 到 /etc/ssh/sshd_config 加到最後面,重新啟動 sshd 就可以了...!! * 把生成的變數參考,可能長的類似下面的,把它貼入 config 。 Ciphers 3des-cbc,blowfish-cbc,cast128-cbc,arcfour,arcfour128,arcfour256,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com Ciphers 3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com ref: http://mgalgs.github.io/2014/10/22/enable-arcfour-and-other-fast-ciphers-on-recent-versions-of-openssh.html 圖文不相關 圖文不相關-東京塔 HERMES 圖文不相關

新手工程師練習實作參考

圖片
### 新手工程師練習實作參考 * 因為要學習WEB寫程式的範圍很廣泛,所以這裡提供一個快速的實作目標,讓你快速通過新手村。 * 詳細可以參考這篇: https://github.com/goodjack/developer-roadmap-chinese web developer 但是看完後,多數人會直接放棄。 * 底下提供比較簡單開始的新手村,讓開發者可以自己練習。 * 指說明需要完成的元素,內容請自行想像與設計。當成一個屬於自己的作品呈現空間。 ### 使用純文字編輯器操作系統 * Sublime https://www.sublimetext.com/ * VSCODE https://code.visualstudio.com/ * ATOM https://atom.io/ * NotePAD++ https://notepad-plus-plus.org/zh/ * 熟悉上面至少 2 套文字編輯器,並且可以使用他的外掛。 ### 使用 github 建立一個屬於自己的網站。 * 選一個 GIT 工具, https://git-scm.com/download/gui/windows , 可以選 SourceTree 或 https://git-scm.com/download/win * 需要能夠透過 git 工具上傳及維護網站。 * 了解 git 的 pull , clone , merge, getch, commit, push, add 功能與用法 * 了解 branch, master, orign 使用上的意義 * 參考: https://gitbook.tw/chapters/github/using-github-pages.html ### 使用 bootstrap 4 規劃你的網站版面 * 參考: https://getbootstrap.com/docs/4.1/examples/ * 使用 Grid 排版,編排出一個可以放作品的網站版型。 * 可以善用 bootstrap 的各種元件,完成你的目標。 * 調整你的版面, 讓他在 Mobile 環境下,也可以不會太糟糕。 * 使用自訂的 CSS 讓你的 Bootstrap 4 看起來和別人不一樣。 ### 使用 Jquery 的 API * 使用...

保證瀏覽器連到 https 的功能 (HSTS)

圖片
因為最近遇到一個特殊的 TLD 最上層的網域, 「.app」 ,這個網域預設 HSTS Preload 功能。 這功能一旦被開啟後,歡樂的時光就來臨了...... 網域的擁有者也可以自己設定,HSTS Preload 設定下去,所有連線都需要 SSL 的功能 ,於是它就有了 1. 無論是否有設定 HTTPS ,瀏覽器都會轉向 HTTPS 2. 可以抵禦SSL剝離攻擊,防網站劫持。 3. 不能隨意關掉 HTTPS,萬一憑證不見或過期,只好被 BROWSER 檔掉或警告。 4. HSTS會在一定時間後失效(有效期由max-age指定) ,但是沒有人會只設定一天過期。 * 你可以到這裡檢查,網址是否被 HSTS Preload 了....   * https://hstspreload.org     * 如果設定了,但是時間還沒有過期你可以參考這裡暫時移除   * https://www.thesslstore.com/blog/clear-hsts-settings-chrome-firefox/   * https://ephrain.net/chrome-%E5%B0%87%E7%B6%B2%E7%AB%99%E5%BE%9E-hsts-%E6%B8%85%E5%96%AE%E4%B8%AD%E7%A7%BB%E9%99%A4/   * https://blog.bennyling.cc/362/clear-google-chrome-hsts-setting /    * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security 目前已經支援的瀏覽器

MQTT 的文件

圖片
幾個重點整理: 提供三種訊息傳送服務的QoS QoS0:At most once 最多一次 QoS1:At least once 至少一次 QoS2:Exactly once 確保一次 減少封包傳送時的負擔,同時減少網路所需之頻寬 Last Will and Testament(最後遺囑) 機制 主題萬用字元(Topic Wildcard Characters)   CONNECT 當Client(客戶端)對Broker建立起TCP/IP socket連線時,需傳送Message Type為CONNECT的訊息,Broker端會回傳Message Type為CONNACK的確認訊息。   DISCONNECT DISCONNECT訊息被傳送至Broker,表示需要關閉TCP/IP連線,若在連線時設置Clean Session,Broker清除此Client連線時所有的設定,包括訂閱的主題。 PUBLISH Publish訊息會因為所使用的QoS有不同的工作流程。若QoS設置為0,訊息會透過底層的TCP/IP連線傳輸訊息,並不預期有任何的回應,也不會重新傳送,故訊息可能傳送至Broker 一次,或是沒有傳送成功。 PING 在TCP/IP的連線中會在一固定時間傳送一心跳值確保其連線的暢通,MQTT通訊協議中以PINGREQ訊息傳送至Broker確保連線狀態,Broker回傳PINGRESP訊息回覆Client此連線是否正常。 ref: https://zh.wikipedia.org/wiki/MQTT https://swf.com.tw/?p=1002 http://designer.mech.yzu.edu.tw/articlesystem/article/compressedfile/(2016-07-15)%20%E7%AC%AC%E4%B8%89%E7%AB%A0%20MQTT%E9%80%9A%E8%A8%8A%E5%8D%94%E8%AD%B0.aspx?ArchID=2621

VPN 目前還可以用的翻牆技術及歷史技術手段

圖片
* VPN部份可用 AnyConnect OpenVPN * CDN方式 Lantern、FireFly、Tor Browser – Meek * 新的主流 https://toutyrater.github.io/prep/install.html  V2Ray Shadowsocks、V2Ray、ShadowsocksR、ShadowsocksRR * 之前翻牆的歷史技術篇 https://blog.yandere.moe/moe/gfw-vs-proxy/97.html   墙与梯的较量——那些年我们一起用过的翻墙手段

[案例]BUG經過時間的演化,它就成為了功能

圖片
講一個程序員在1970年左右犯的錯誤 , 它把 Unix 的 system call 拼成 creat() 以至於 到現在只要用的 file 的 creat 都會用到這個函式 然後有人問它, 如果有機會重新系統你想要有哪些不一樣,它回答「I'd spell creat with an e.」 然後2009.11.10 的時候 Ken Thompson 在 go-lang 的上面, 修正了這個錯誤. 足足經過了約 40 年 #標準美東時間是UTC -05 夏令美東時間是UTC -04 #系統使用 UTC -04 那冬天的時候帳務就會出錯了呀!!! #我其實是要講美東時間當算帳基準這個ISSUE,所以這個 ISSUE 就成為了功能的一環 ref: https://en.wikiquote.org/wiki/Ken_Thompson wiki 有記載 http://www.di.uevora.pt/~lmr/syscalls.html unix system call https://coolshell.cn/articles/1761.html  故事完整的始末 kevinwatt.net 參考來源(人還在,blog已消失因為老闆太忙沒更新)

memcached UDP 放大攻擊之亂--Centos7 關閉UDP及只綁定127.0.0.1

圖片
昨晚機器流量異常....爆增流量 * 十小時前的新聞 https://www.ithome.com.tw/news/121543 "Majkowski建議不使用UDP的Memcached用戶應直接關閉該通訊埠,或確保自己的Memcached伺服器受到防火牆的保護,也提醒開發人員最好不要使用UDP,就算不得不用,也不應預設為啟用狀態,並應嚴格限制回應封包的大小,以免成為駭客執行DDoS攻擊的幫兇。" * 七小時前的新聞 https://www.networkworld.com/article/3258772/security/memcached-servers-can-be-hijacked-for-massive-ddos-attacks.html * memcached 伺服器參數 ConfiguringServer https://github.com/memcached/memcached/wiki/ConfiguringServer#commandline-arguments * 看一下啟動程序怎麼寫的 [root@dev ~]# more /usr/lib/systemd/system/memcached.service ...SKIP 略... [Service] Type=simple EnvironmentFile=-/etc/sysconfig/memcached ExecStart=/usr/bin/memcached -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN $OPTIONS ...SKIP 略... * 看來改一下 memcached 的 OPTIONS 就可以 * -l 參數可以指定接收的 interface * -U 可以關閉 UDP port [root@dev ~]# cat /etc/sysconfig/memcached PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS="-l 127.0.0.1 -U 0" ...

樹狀結構的 UI 界面

圖片
* 官方網站 https://www.jeasyui.com/documentation/tree.php  * 測試DEMO頁面 http://mtchang.github.io/code/easyui_tree.html  and source code

和人月神話一樣, 經過 10 年後來看還是一樣的貼切

和人月神話一樣, 經過 10 年後來看還是一樣的貼切。 「你進入狀況後, 要繼續維持並不算太難. 我的一天通常都是這樣子的: (1) 上班 (2) 看信看網頁等等 (3) 決定應該吃過午飯後再做事 (4) 吃完午飯回來 (5) 看信看網頁... 由 巴克里 貼上了  2017年9月14日

使用AWS EC2當OpenVPN Server

圖片
使用AWS EC2當OpenVPN Server * 透過 AWS 設定 OpenVPN server * 先看一下 EC2 價格 https://aws.amazon.com/tw/ec2/pricing/ * 首先去申請一台乾淨的 AWS EC2 server , 新使用者可以免費使用 750HR . * 可以參考網路上的教學文章,把 OpenVPN 安裝設定好。 * How to Setup and Configure an OpenVPN Server on CentOS 6 https://www.digitalocean.com/community/tutorials/how-to-setup-and-configure-an-openvpn-server-on-centos-6 * 在 CentOS 6 架設 OpenVPN Server http://jamyy.us.to/blog/2013/09/5220.html * How To Set Up an OpenVPN Server on Ubuntu 16.04 https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-16-04 * 本人推薦官方的說明, 比較準確 https://help.ubuntu.com/lts/serverguide/openvpn.html * 將設定檔及憑證全部設定在設定檔內 , 因為手機 IPHONE 才可安裝 https://community.openvpn.net/openvpn/wiki/IOSinline * 設定主機的 NAT 轉換 IP , 讓 IP 有可以出去。 root@ip-172-31-10-225:~# cat fire.sh # -------------------------------------------------------------- #!/bin/bash # linux firewall rule sample EXTIF="eth0"               # ...