使用 FreeBSD + WireGuard 與 Android 建立 VPN 隧道

2 min

language: ja bn en es hi pt ru zh-cn zh-tw

大家好,我是無能。
雖然我在上一篇文章中只發布了速度結果,但這是建立隧道的方法。
由於沒有找到其他日文文章,所以我將其記錄下來。

WireGuard

手機端(客戶端)

您需要在PC端生成WireGuard金鑰。

wg genkey | tee private.key
wg genpsk | tee psk.key

只要生成私鑰,公鑰就會顯示在手機版WireGuard上,所以您不需要在這裡生成它。 您也可以同時使用wg genkey | tee private.key | wg pubkey > pub.key來生成。
一旦將此金鑰傳輸到手機,在WireGuard手機應用程式中

私鑰 = private.key的內容  
預共享金鑰 = psk.key的內容  
位址 = 想要通訊的IP, 這次我們設定為`10.1.0.4/32`
端點 = WireGuard伺服器的全球IP:51820
允許的IP = 0.0.0.0/0 , ::/0 # 所有流量都通過VPN

輸入這些資訊,並準備好將此時生成的公鑰發送或貼上到伺服器端。

PC端(伺服器端)

首先,假設您已經安裝了WireGuard,請在末尾添加一個Peer。

[Peer]
PublicKey = 手機端輸入private.key後顯示的公鑰,或是pub.key的內容
PreSharedKey = psk.key的內容
AllowedIPs = 10.1.0.4/32
PersistentKeepalive = 25

現在,請執行wg quick up wg0。如果手機端開啟VPN後可以進行傳輸,那就沒問題了。但是,這樣只能在WireGuard隧道內部進行通訊,因此需要建立NAT規則。

FreeBSD

首先,啟用IPv4和IPv6的埠轉發。

vi /etc/sysctl.conf

然後添加以下內容

net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1

然後重新啟動。
接著使用pf建立規則。

vi /etc/pf.conf

然後添加以下內容

wireguard_clients=10.1.0.4
wanint="vtnet0"
wg_ports="{51820}"

nat on $wanint inet from $wireguard_clients to any -> $wanint
pass in on $wanint proto udp from any to $wanint port $wg_ports
pass out quick

然後啟用

pfctl -nf /etc/pf.conf

如果沒有錯誤

pfctl -f /etc/pf.conf

這樣就應用了。 檢查IP位址是否已變為伺服器端的IP位址,您可以在簡單方便的Takashi的網站上查看IP位址是否是WireGuard伺服器端的IP。 bibi.moe/ip
這樣就完成了。

如果能夠做到這一點,當您將本地環境中啟動的服務透過家庭伺服器以VPN連接狀態代理到WireGuard網路時,就可以從手機瀏覽器訪問家庭網路,這非常方便。 那麼下次再見。請多關照。

Related Posts