如何使用Raspberry Pi搭建VPN伺服器

想要搭建一個VPN?用月費來租一個很容易,但是如果您有Raspberry Pi,並且瞭解一些專業知識,就可以搭建自己的VPN伺服器了!

什麼是VPN?為什麼需要VPN?

VPN指的是虛擬私人網路絡。它是一種安全、加密的互聯網連接,可以將您連接到其他區域的私人網路。
大多數無線網路使用加密功能,但通常只適用於沒有連接到網路的人。您網路上的每個人都可以看到您發送和接收的所有流量。其中一些可能是敏感的,例如密碼或財務資訊。
這意味著VPN在您旅行的時候會非常有用,因為這種情況下幾乎不可能知道其他人的無線網路配置狀況,或者還有誰在網路上。
透過加密您的所有流量並將其發送到其他地方,您本地網路上的任何其他人都無法看到您發送的內容或發送位置。

搭建VPN vs 租用VPN

在本地網路上的VPN伺服器的最大優勢在於這是您所連接的地方,也就是說您可以訪問檔案伺服器、媒體中心,甚至可以在印表機上列印文檔。
另一個優勢在於安全性。儘管存在一些常見的誤解,但是使用VPN並不能完全消除惡意行為者對您進行監視的風險,它只是將其轉移到了另一個網路中。如果該網路是您的家或者辦公室,那麼就有機會對那裡發生的事情有一定的瞭解和控制。
當您開始使用一項服務時,對它真正瞭解了多少呢?使用可靠的服務可以降低這種風險,但請確保先做好功課,以避免遭受不良行為者的入侵。
另一方面,如果您想要使用VPN的原因中包含進行一些無法追溯到您個人的絕密活動,那麼在您的家用網路上託管VPN伺服器將會是一個糟糕的主意。這種情況下應該選擇其他人常用的商用服務。
Raspberry Pi VPN伺服器不會提供萬無一失的可靠性。偶爾會出現因為斷電或SD卡損壞而離線的情況。
如果您身處地球的另一端,而需要VPN來訪問某些東西,當這種離線情況出現將會很麻煩。如果沒有人回家進行重啟,那就更糟糕了。
值得注意的一點是,您還可以在雲上安裝自己的VPN伺服器。這是一種兼具兩者優點的中間選項。

選擇VPN軟體

VPN軟體有兩部分:用戶端和伺服器。
用戶端可以安裝在手機、筆記型電腦或者其他您隨身攜帶的設備上。它通常只連接到一台伺服器。
伺服器位於您要連接的網路上,可以接受多個用戶端的連接。
我們的Raspberry Pi基於ARM架構運行Linux,因此所選擇的伺服器軟體需要支援這一點。
您的用戶端很有可能會不同:可能是Windows、Mac或者Android設備。所以,我們希望它也可以在這些設備上運行。
對於本項目,我們將使用一個名為PiVPN的腳本,該腳本可以使在Raspberry Pi上搭建VPN伺服器變得非常簡單。
PiVPN實際提供了兩種滿足這些需求的選項:建立完善並且被廣泛支持的OpenVPN,以及版本更新並且具有出色性能的Wireguard。

配置您的VPN路由器

在我們安裝Wireguard之前,需要告訴您的路由器在VPN流量到達時該將其發送到哪裡。

保留IP地址

您的Raspberry Pi VPN伺服器應該被分配一個保留IP位址,以便能夠始終在本地網路上的同一位址找到它。
如果尚未配置,您可以在路由器的儀錶板中進行配置。確切的步驟因路由器而異,但通常只是一些登陸和DHCP設置這樣的簡單配置。
如果您遇到困難,請使用搜尋引擎查找您設備的手冊。

埠轉發

現在您需要在路由器上設置埠轉發,以將到達特定埠的UDP流量發送到您剛剛為VPN伺服器保留的IP地址。
同樣,具體步驟因路由器而異,因此您可能需要查找設備手冊。
您的路由器可能允許您選擇打開一系列埠,並為它們分配不同的內部和外部編號。您只需要打開一個埠,它可以有相同的內部和外部編號。
預設情況下,Wireguard使用埠51820,但如果您願意,也可以配置另一個埠。只是小心不要分配一個已經被使用的埠。選擇UDP作為協議。

使用No-IP配置動態DNS

如果您的公共IP位址是靜態的(即一直保持不變),那麼您可以跳過這一步。
如果您透過常規住宅或小型企業計畫連接互聯網,那麼您的互聯網供應商很可能正在為您分配一個動態IP位址,也就是說IP位址會定期更改。當您嘗試從互聯網連接本地網路時,之前的IP位址已經不存在了,所以這個IP地址不是很有用。
如果您有一個動態IP位址(或者您不知道它是靜態還是動態的),您可以配置動態DNS或DDNS,它會在每次您的公共IP位址發生更改時為其更新一個自訂主機名稱。

從No-IP獲取免費帳戶

我們將需要有人在他們的域上託管我們的主機名稱。有許多服務供應商提供該項服務。如果使用了正確的DNS主機,您甚至有可能在自己的域上設置一個。
在本教程中,我們將使用No-IP,它可以讓您免費設置主機名稱。
打開 https://www.noip.com/,輸入主機名稱,然後點擊註冊。
完成免費註冊過程並確認您的電子郵寄地址。
現在進入“My Account(我的帳戶)”並配置一個用戶名。記下您的用戶名和密碼,我們很快就會用到它。

安裝Ddclient

在終端中,輸入以下命令來更新您的作業系統:
sudo apt update && sudo apt upgrade -y

現在安裝ddclient。
sudo apt install ddclient -y

然後編輯ddclient設定檔。
sudo nano /etc/ddclient.conf

將配置編輯為如下所示,替換為您的用戶名、密碼和主機名稱。
use=web
ssl=yes

protocol=noip
login=<USERNAME>
password=<PASSWORD>
<YOUR_HOSTNAME>

現在使用以下命令運行ddclient:
sudo ddclient -daemon 10m

使用PiVPN安裝Wireguard

現在,您已經可以運行PiVPN了。輸入:
curl -L https://install.pivpn.io | bash

片刻之後,您將會看到一個歡迎您使用自動安裝程式的介面。按兩次回車。

接下來,它會詢問您的Raspberry Pi是否有保留IP。您這時候已經解決了這個問題,所以用方向鍵選擇是,然後按下回車。

然後,它會要求您選擇一個帳戶來託管VPN。可以選擇pi用戶,按回車。

現在,它會要求您在Wireguard和OpenVPN之間進行選擇。Wireguard是默認選擇,因此請直接按回車。

安裝Wireguard需要幾分鐘時間。之後它會詢問您要在哪個埠運行Wireguard。如果您之前在路由器中配置了51820以外的其他埠,請在此輸入埠編號。

再次按下回車確認設置。接下來,它會要求您選擇一個DNS伺服器。如果您有自己的DNS伺服器(請查閱之前的DNS伺服器文章),則選擇“自訂”。
我發現使用Google DNS伺服器可以獲得很好的服務。如果您更喜歡其他伺服器也沒問題。

接下來它會詢問是透過公共IP位址還是透過動態DNS進行連接。如果您有靜態IP,那麼可以保持原樣不動,否則按向下箭頭並按下空白鍵來為DNS條目配置用戶端。按下回車,然後輸入您在noip.net上(如果這是您使用的)配置的主機名稱。

現在您會看到將生成伺服器金鑰的提示。按下回車,在它運行時稍等片刻。
接下來,它會詢問您是否希望將伺服器配置為自動安全更新。這是個好主意,所以再次按下回車選擇接受。

完成該腳本後,它會詢問您是否要重新啟動。選擇是,然後按回車。

將用戶端添加到VPN伺服器

您的VPN伺服器需要配置一個以上的用戶端才能使用。
您可以使用以下命令來執行該操作:
pivpn add

它會詢問用戶端的名稱,然後在/home/pi/configs/中生成一個.conf檔,您可以將其與相關作業系統中的wireguard用戶端一起使用。
Wireguard用戶端軟體可以用於以下系統:
• Linux
• MacOS
• Windows
• Android
• iOS
小心這個.conf文件!它包含任何人從世界上任何地方訪問您的本地網路所需要的一切。因此,不要將其留在移動硬碟或者USB上。