榨乾 VM 主機 Part 2 - 使用 Docker 安裝 SOCKS5 Proxy Server 代理伺服器

閱讀時間約 13 分鐘
接下來,就是要使用 MobaXterm 來 SSH 連線到 VM 主機。
📷
連線的方式如上,若是 DNS 可以解析到 域名,那就在 Remote Host 打上域名,若是還不能夠成功解析,那就先打上公用 IP(外部 IP)
📷
成功的話就設看到這個畫面。

接下來,由於這個免費方案的 VM 主機,效能只有 1C 1G 而已,非常的脆弱,基本上是不能做太多的事情,一般來說會建議只專注做一件事情就好,例如只安裝 Wordpress、Proxy server 或是 VPN server。
BUT!
若是只能這樣的話,那就太無聊了,所以我們要榨乾它。
接下來的思路是,使用 Docker,將需要的服務通通安裝到 Container 裡,這樣一但服務掛掉,只要將 Container 重啟就可以了,並且可以設定好 Container 的效能限制讓它不致於將所有的效能都吃光。
首先,先來設定 SWAP (置換空間、交換空間),由於目前擁有的 memory 只有 1G(1024M),很容易就用光了,而一旦用光了,基本上就是直接死機給你看,最慘的狀況就是連 SSH 都無法連線,必須要將 VM 主機重啟才可以。
關於 SWAP 的相關知識一樣不在這邊作科普,這邊建議記憶體不足 4G 的話,swap 設定為兩倍比較好,所以這邊將會設定 2G 的 swap 空間。
第一步先更新一下該更新的套件,並安裝 vim、net-tools、saidar、docker、docker-compose
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

sudo apt install vim net-tools saidar docker docker-compose -y
設定 swap 約 2G 的空間/容量
先確認系統是否有預設 swap
sudo swapon -s
若是無回應就表示沒有設定
接下來是設定 2G 的 swap 交換空間
sudo fallocate -l 2G /swapfile   #設定2G的swap 空間

sudo chmod 600 /swapfile      #設定資料夾的權限,600為系統管理員可讀/寫,其他使用這不可讀/寫

sudo mkswap /swapfile        #初始化 swap

sudo swapon /swapfile        #啟用 swap
📷
目前的設定,若是VM 重啟就會停用,以下是設定開機便啟用 swap
sudo vim /etc/fstab     #修改 fstab 這份文件
新增這一行
/swapfile none swap sw 0 0
📷
※ vim 文字編輯器的基本用法
  1. 按 i 才能夠進行編輯。
  2. 結束編輯:ESC。
  3. 儲存並退出這份文件:(冒號): + wq。(:wq)
  4. 強制退出這份文件:(冒號): + q!。(:q!)
  5. 快速刪除全部的內容:游標移到最上方,鍵盤直接按 d + G
以上參數新增完畢即完成 swap 設定
若是要停用 swap,或是要修改 swap。
sudo swapoff -a

sudo rm -f /swapfile
修改 swap 的使用積極度,ubuntu 的預設值是 60,可以解釋成(但不完全是)系統在執行時,有 60% 的機率會使用 swap,這邊會建議降到 10 以下,設定成 0 也沒關係(但最好不要)。
cat /proc/sys/vm/swappiness            #查詢 swappiness 的設定值

sudo sysctl vm.swappiness=5            #設定 swappiness=5

                           #以下的動作,也是本次才知道,需要使用 root 帳號進行。

sudo su root                     #登入 root 帳戶

echo "vm.swappiness = 5" >> /etc/sysctl.conf   #設定 swappiness 開機就是 5,若不設定則重新開機會復原到 60
📷
以上,就是關於 swap 交換空間的設定方式,你的 VM 主機現在已經沒那麼容易自殺了。

接下來,將會使用 Docker ,以 Ubuntu 的官方 image,建立 Ubuntu 的 Container ,並限制這個 Container 的性能,然後將它變成 Proxy Server。
#docker 指令需要的權限比較高,所以若非 root 帳戶,則都要使用 sudo 指令。

sudo docker run --restart=always -itd --name proxy -p 9527:9527 -m 512m --memory-swap 1024m ubuntu /bin/bash
這邊使用到的指令,簡單解釋一下。
--restart=always >> 如果 container 自己出問題死掉,請自動重啟。
-itd >> container 請在背後持續運行,並為 container 分配一個終端,以方便連線下指令。
--name >> 為 container 命名。
-p >> 設定 VM 主機與 container 對應的 port。
-m >> 設定 memory 限制。
--memory-swap >> 設定 container 的 swap 使用量。
ubuntu >> 使用 ubuntu 這個 image 建立 container。
📷
正常來說會先把要用的 image 先抓下來,再使用 image 建立 container。
這邊由於沒有先抓 image,所以系統自動幫我們抓最新的 ubuntu image,使用 sudo docker ps 可以查看 container 是否有正常運行。
進入這個 ubuntu container,它目前名字是 proxy。
sudo docker exec -it proxy bash
ubuntu 官方的 image 建立的 container ,都是最小最精簡的系統,很多套件都要自行安裝,而且一旦連線就是最高權限的 root 帳號,所以接下來的指令都不用加 sudo,想用也不行,會顯示錯誤。
(若是硬要使用 sudo 指令,請先安裝它, apt install sudo -y)
proxy server 有很多種協定類型,目前的主流是 HTTP(s) Proxy 與 SOCKS5(4) Proxy。
主要的差異在這邊,由於涉及得知識量有點多,所以在此僅以下圖解釋,若是看不懂的話請放棄理解細節。
📷
📷
簡單了解,HTTP Proxy 是主要且古老的協議,所以很多程式若是可以設定 Proxy 的話,那一定是指這個協定,除非該程式在設定時有說是 SOCKS Proxy 協定,例如:Telegram。
SOCKS5 是較新的協議,比較安全,且速度更快,且允許各式各樣不同種類的封包使用。
📷
首先是連線、更新套件資料庫,並安裝 dante 這個套件,與其它好用的套件。
apt update && apt install dante-server vim -y
編輯設定檔
vim /etc/danted.conf
裡面有原先的設定值,首先按 d + G(按一下d,然後按SHIFT+g),刪除原有的設定。
然後按 i ,進入編輯模式。
【連接代理時,不必輸入帳密的設定】
logoutput: syslog stdout /var/log/sockd/sockd.log

internal: eth0 port = 9527
external: eth0
method: none
clientmethod: none
user.privileged: root
user.notprivileged: proxyuser
client pass {
from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
}

pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: bind connect udpassociate
log: error # connect disconnect iooperation
}

pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: bindreply udpreply
log: error # connect disconnect iooperation
}
📷
【連接代理時,必須要輸入帳密的設定】
logoutput: syslog stdout /var/log/sockd/sockd.log

internal: eth0 port = 9527
external: eth0
method: username
clientmethod: none
user.privileged: root
user.notprivileged: proxyuser
client pass { from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0}
pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: bind connect udpassociate
log: error # connect disconnect iooperation
method: username
}

pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
command: bindreply udpreply
log: error # connect disconnect iooperation
}
以上的設定中,我們已經設定 proxy 的使用者,帳戶為 proxyuser,接下來在系統新增這個使用者,並設定它的密碼。
useradd proxyuser     # 新增使用者 proxyuser

passwd proxyuser     # 修改 proxyuser 密碼

mkdir /var/log/sockd   # 新增錯誤紀錄(log)的資料夾
以上內容,就完成配置的設定嘍,接下來就是啟動這個程式(服務)。
service danted start
📷
會跳出一堆看不懂的東西,也不曉得到底有沒有成功,這時候測試的方法有兩個,第一就是直接找個程式來連接測試看看,另一個就是察看我們設定的連接port。
查看 9527 這個port,我們需要安裝 net-tools 這個套件,在前面我們有安裝在 VM 主機上了,container 還沒有安裝。
apt install net-tools -y

netstat -anp | grep 9527
📷
若是沒有回傳任何結果,那就是啟動失敗了,若有成功的話則會像上圖一樣。
我們可以使用 Telegram 或 Firefox 測試看看。
📷
📷
Firefox 火狐瀏覽器可以直接設定 SOCKS5 Proxy 的代理方式,若是設定有成功,那就可以上網了,若是設定失敗的話,火狐瀏覽器會直接無法連網。
在這邊可以看到我的 ip 顯示是在美國。
📷
在容器中退出,請輸入 exit。
使用 sudo docker ps 可以查看 container 是否有在運作。
使用 sudo docker stats 可以監看 container 目前的運作狀況。(按 CTRL+C 則停止監看)
以上,便是在 VM 主機中,使用 Docker 並安裝 SOCKS Proxy Server 的方式,如此方式可以確保 Proxy server 不會把 VM 的效能給吃光,由於 Proxy server 的特性,雖然可以達到類似於 VPN 的效果,但也容易把主機的效能個吃光,所以使用 Docker 來建立,則可以保證 VM 不會輕易的死掉。
接下來會在敘寫一篇,使用 Docker Compose 建立 Wordpress 的方法,這樣這台小費費 VM 主機,就可以同時提供 Wordpress 與 proxy server 兩種服務了。
但其實,並不建議這樣做配置,因為無論是 Proxy server 、VPN server 或是 Wordpress 站台,其實運行在 1C 1G 的VM 上,都是有點吃力的,本篇文章只是使用免費方案進行練習而已,實際上要建立長期使用的穩定站台時,會建議將配置拉高,至少,記憶體要設定到 4G以上會比較好。
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
1會員
4Content count
留言0
查看全部
發表第一個留言支持創作者!
迷途小資男的沙龍 的其他內容
今天主要的內容,將會使用 GCP 的主機,設立一個免費額度的 VM 主機,並且簡單的調教他,主要的目標是如果服務死掉時,至少還可以連線到 VM 主機,將該服務重啟或關閉,而不是服務死掉, VM 主機也跟著死掉了。
承接上篇文章 架設好環境後我們要來安裝 WordPress 了 其實安裝 WordPress 非常簡單,但是其中要注意的小細節太多了,若是沒有設定好,接下來在做各種激烈操作的時候就會有一堆問題。 文章目錄: 首先,建立一個專門給 WordPress 的資料庫,開啟 phpmyadmin 解壓縮
本篇將會記錄如何在GCP上建立的Ubuntu虛擬機,進行Wordpress的環境準備與網站安裝。 本篇將會以架式環境與安裝 WordPress 為主,虛擬機平台的註冊與架設將不會太過著重,未來若有機會再進行記錄。 首先需要準備的軟體有 有沒有比較好或是其他區別,在這邊不做討論。
今天主要的內容,將會使用 GCP 的主機,設立一個免費額度的 VM 主機,並且簡單的調教他,主要的目標是如果服務死掉時,至少還可以連線到 VM 主機,將該服務重啟或關閉,而不是服務死掉, VM 主機也跟著死掉了。
承接上篇文章 架設好環境後我們要來安裝 WordPress 了 其實安裝 WordPress 非常簡單,但是其中要注意的小細節太多了,若是沒有設定好,接下來在做各種激烈操作的時候就會有一堆問題。 文章目錄: 首先,建立一個專門給 WordPress 的資料庫,開啟 phpmyadmin 解壓縮
本篇將會記錄如何在GCP上建立的Ubuntu虛擬機,進行Wordpress的環境準備與網站安裝。 本篇將會以架式環境與安裝 WordPress 為主,虛擬機平台的註冊與架設將不會太過著重,未來若有機會再進行記錄。 首先需要準備的軟體有 有沒有比較好或是其他區別,在這邊不做討論。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
可能包含敏感內容
脫光後李伯率先抓握住的他的巨獸將獸口對準針筒噴發,亮黃黃的尿液就嘩啦啦地衝射進針筒裡,同時我也感覺到溫熱的尿液流入我的膀胱裡,慢慢地在我體內匯聚,在體內有別人的體溫就如同被內射般,是一種被佔有心靈上的爽感......
Thumbnail
這是一篇關於2024 年 3 月底去高雄勞工公園花市購買多肉的心得分享,包括晶肉大補帖、明鏡、紅脣、紅蘋果椒草、砂糖、水晶殿、子吹奇隆丸,大概對不同多肉植物的描述與觀察,分享感受到對多肉植物的熱愛與獨特偏好。
Thumbnail
高三學生在學測後可能感到壓力大、精力被榨乾,工作效率低落。這篇文章探討造成這種情況的原因,包括休息不足和社群媒體負面影響。並提出在休假後給予自己足夠休息時間、避免過度使用社群媒體等改善策略。
乾鮑魚的泡發方法,是要用一點不沾油的容器,半日換水一次,連續用井水泡發兩天,再用溫水泡發一夜,然後取出,刷洗幹淨備用。 中國人吃魚翅的記錄,始於《宋會要》。吃海參那就更早,三國時期《臨海水土異物誌》記載:“土肉,如小兒臂大,長五寸,中有腹,無口目……炙食。” 泡發手法,蹄筋,需要放入水中浸泡一夜,然
Thumbnail
『張醫師,我覺得 #嘴巴好乾,我很容易 #嘴唇脫皮、裂開、容易嘴破、#口臭,該怎麼辦?』​ ​ 『添醫師,我覺得 #口腔灼熱 感覺、吃東西沒什麼滋味、食物不容易吞進去、有些食物飲料會讓感覺更刺激、不舒服啊!』​ ​ 『皓醫師,是不是只有老人家才會口乾呢?』​ ​ 你是不是很常覺得口乾舌燥、喝水都沒
Thumbnail
通常對於懶惰者,或是日常太忙碌,或是對開伙真的沒有天賦也沒有興趣的朋友,最喜歡的通常都是簡單就能成功,還能讓自己吃上一陣子的方便作法。 乾辣椒系列,就相當適合這樣的朋友,當然,也適合喜歡更加深入鑽研的朋友。
Thumbnail
在《無法再神秘的 Tesla 大股東 蘇格蘭巨鯨 Baillie Gifford 的投資哲學與方法》這篇文章介紹了Baillie Gifford這家厲害的投資機構後,分享給大家一些在研究路途中找到和看到的資料,也會不定期地更新這個Post,更新一些值得追蹤的動態。
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
可能包含敏感內容
脫光後李伯率先抓握住的他的巨獸將獸口對準針筒噴發,亮黃黃的尿液就嘩啦啦地衝射進針筒裡,同時我也感覺到溫熱的尿液流入我的膀胱裡,慢慢地在我體內匯聚,在體內有別人的體溫就如同被內射般,是一種被佔有心靈上的爽感......
Thumbnail
這是一篇關於2024 年 3 月底去高雄勞工公園花市購買多肉的心得分享,包括晶肉大補帖、明鏡、紅脣、紅蘋果椒草、砂糖、水晶殿、子吹奇隆丸,大概對不同多肉植物的描述與觀察,分享感受到對多肉植物的熱愛與獨特偏好。
Thumbnail
高三學生在學測後可能感到壓力大、精力被榨乾,工作效率低落。這篇文章探討造成這種情況的原因,包括休息不足和社群媒體負面影響。並提出在休假後給予自己足夠休息時間、避免過度使用社群媒體等改善策略。
乾鮑魚的泡發方法,是要用一點不沾油的容器,半日換水一次,連續用井水泡發兩天,再用溫水泡發一夜,然後取出,刷洗幹淨備用。 中國人吃魚翅的記錄,始於《宋會要》。吃海參那就更早,三國時期《臨海水土異物誌》記載:“土肉,如小兒臂大,長五寸,中有腹,無口目……炙食。” 泡發手法,蹄筋,需要放入水中浸泡一夜,然
Thumbnail
『張醫師,我覺得 #嘴巴好乾,我很容易 #嘴唇脫皮、裂開、容易嘴破、#口臭,該怎麼辦?』​ ​ 『添醫師,我覺得 #口腔灼熱 感覺、吃東西沒什麼滋味、食物不容易吞進去、有些食物飲料會讓感覺更刺激、不舒服啊!』​ ​ 『皓醫師,是不是只有老人家才會口乾呢?』​ ​ 你是不是很常覺得口乾舌燥、喝水都沒
Thumbnail
通常對於懶惰者,或是日常太忙碌,或是對開伙真的沒有天賦也沒有興趣的朋友,最喜歡的通常都是簡單就能成功,還能讓自己吃上一陣子的方便作法。 乾辣椒系列,就相當適合這樣的朋友,當然,也適合喜歡更加深入鑽研的朋友。
Thumbnail
在《無法再神秘的 Tesla 大股東 蘇格蘭巨鯨 Baillie Gifford 的投資哲學與方法》這篇文章介紹了Baillie Gifford這家厲害的投資機構後,分享給大家一些在研究路途中找到和看到的資料,也會不定期地更新這個Post,更新一些值得追蹤的動態。