在眾多VPN服務中,使用者常常面臨選擇困難。許多服務需要每月訂閱,有些則不夠安全,或者速度很慢。幸運的是,用戶仍然可以選擇自建VPN。雖然這需要一些技術知識,但如果你想要完美的解決方案,自己動手是最好的選擇。
開始之前
亞馬遜網路服務(AWS)提供一年的免費虛擬伺服器空間,只要你使用的頻寬、時間和空間未超出預定限制。即使超出限制,執行伺服器鏡像的費用通常也低於VPN訂閱的費用。
在本文中,我們將介紹兩種透過AWS的彈性雲服務(EC2)來轉送連線的方法: SSH隧道和OpenVPN 。每種方法都有其優缺點,因此可以根據自己的需求進行選擇。無論選擇哪一種方式,你都需要以下工具:
- 一個AWS帳戶。註冊時需要信用卡,但你只需為實際使用付費,如果謹慎操作,可能根本不需要花費。
- PuTTy (Windows用戶)。如果在Linux或Mac上,SSH命令列介面已內建。
- WinSCP或等效的FTP用戶端,用於在本機電腦和EC2執行個體之間傳輸檔案。
- 基本的Unix命令知識和伺服器與客戶端的工作原理將會在故障排除時大有幫助。
- 安裝在預設位置的OpenVPN GUI。
設定AWS
建立AWS帳戶後,請依照下列步驟啟動將用於VPN的伺服器:
- 登入你的AWS帳戶,進入EC2儀表板。
- 點選“編輯安全群組”。
- 你應該已經有一條規則允許透過SSH連接到你的伺服器。接下來需要新增一條規則以允許OpenVPN連線(預設使用1194連接埠)。在“入站”標籤下,點擊“新增規則”按鈕,類型選擇“自訂UDP”,連接埠範圍設定為1194,來源設定為“任何地方”。
- 點選“儲存”。
現在,建立一個金鑰對,類似於你連接虛擬伺服器時使用的密碼。從下拉式選單中選擇“建立新的金鑰對”,並命名。下載密鑰對並妥善保存。
頁面底部會提示實例正在啟動,捲動到最底部並點擊「檢視實例」。如果這是你第一次使用EC2,你將看到一條實例資訊。
使用PuTTy連接伺服器
使用PuTTy連接EC2實例之前,我們需要一個合適的金鑰檔案。安裝PuTTy時,你應該也安裝了PuTTygen。現在運行PuTTygen:
- 打開PuTTygen,點擊「載入」。
- 導航到之前下載的.pem密鑰對檔案並載入。選擇“所有文件”以查看.pem文件。點選“儲存私鑰”,檔案名稱必須與.pem金鑰相同。
- 關閉PuTTygen,開啟PuTTy。將實例的公共IP位址複製到PuTTy中,輸入會話名稱並儲存。
- 在左側面板中,導覽至“SSH”下的“Auth”,點擊瀏覽按鈕,找到剛產生的私鑰。
- 返回主會話頁面,命名並儲存會話配置,以便下次快速連線。然後點選“開啟”。
- 提示你輸入使用者名,基於你設定的伺服器類型,Amazon Linux AMI的使用者名為「ec2-user」。
SSH隧道(可選)
我們可以透過SSH隧道和代理將網路流量重新路由到我們建立的實例。這是一種快速繞過防火牆或地理限制的方法。雖然這不是一個完整的VPN,但對於輕量級網頁流量來說,它更容易設定。設定SSH隧道是可選的,可以選擇跳過此部分。
- 開啟PuTTy,導覽至左側的「隧道」選項。新增連接埠8080,選擇“自動”和“動態”。
- 返回會話頁面,再次點擊“儲存”,然後點擊“開啟”。
現在你已連接到伺服器,但還需要將瀏覽器的流量通過它。如果使用Firefox,可以在瀏覽器設定中完成。如果使用Chrome,則需下載Proxy Switchy擴充。若想要建立一個完整的VPN,而不僅僅是瀏覽器代理,請跳到下一部分。
在Firefox中設置
- 前往工具> 選項> 進階> 網路> 連線> 設定> 手動代理配置
- 將SOCKS主機設定為127.0.0.1,連接埠設定為8080(或PuTTy中設定的隧道連接埠)。
- 點選「確定」儲存。
在Chrome使用Proxy Switchy
- 安裝擴充功能後,設定頁面會自動彈出,或點擊右上角的圖標,選擇「選項」。
- 為設定檔命名。在手動設定下,將SOCKS主機設定為127.0.0.1,連接埠設定為8080(或PuTTy中設定的隧道連接埠),其他保持空白。
- 點擊“儲存”,然後再次點擊圖示選擇你的代理設定檔。
這樣,你的瀏覽器流量就被轉送到EC2實例了。這適用於基本瀏覽,但某些網站可能會遇到問題,除了瀏覽器以外的應用程式仍將使用直接連線。若要建立完整的VPN以重新路由所有網路流量,請繼續閱讀。
在伺服器和用戶端上設定OpenVPN
OpenVPN是一個免費的開源工具,可以透過Amazon EC2執行個體運行完整的VPN。這意味著所有網路流量都將通過它,而不僅僅是瀏覽器流量。
使用PuTTy連接到你的EC2實例,執行以下命令:
bash
sudo yum install -y openvpn
sudo modprobe iptable_nat
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 10.4.0.1/2 -o eth0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
請注意,某些Linux版本使用apt-get
指令,如果yum
不適用,請嘗試以下指令:
bash
sudo apt-get install -y openvpn
安裝過程中會在命令提示字元中顯示許多文字。其他指令則設定IP轉發,這是VPN正常運作的必要條件。
方法一:使用easy-rsa設定PKI身份驗證(建議)
在本教學的原始版本中,我們將詳細介紹如何使用easy-rsa來設定PKI身份驗證,以確保你的VPN連線安全可靠。
透過以上步驟,你就可以在AWS上成功搭建VPN服務。無論是SSH隧道還是OpenVPN,你都能根據自己的需求選擇最適合的方案。希望這篇文章對你有幫助!