工作和生活很忙的緣故,一直沒有好好維護Shadowsocks的Qt/C++分支,最近下定決心索性聲明好放棄維護了。偶然看到關於WireGuard的新聞,宣稱是一款現代、快速、安全的VPN工具,今天總算抽出來一點時間來試驗一番,下面來分享一下WireGuard之初體驗。
首先,在伺服器和客戶端安裝好WireGuard,官方文檔寫的很詳細。
然後在伺服器和客戶端都創建好一套密鑰文件,命令如下:
wg genkey > privatekey
wg pubkey < privatekey > publickey
chmod 600 privatekey
chmod 644 publickey
然後SSH連線到伺服器,首先確保sysctl裏面IPv4轉發已經啓用了,然後新建/etc/wireguard
目錄,這個用於存放適用於wg-quick
命令的配置文件(這些文件和wg
命令不兼容)。然後新建文件/etc/wireguard/wg0.conf
,內容如下:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
FwMark = 51820
PrivateKey = <YOUR-SERVER-PRIVATE-kEY>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
AllowedIPs = 10.0.0.2/32
PublicKey = <YOUR-CLIENT-PUBLIC-KEY>
然後運行wg-quick up wg0
(不需要sudo
權限)啓用WireGuard。如果測試通過需要服務在開機時自啓動,則可以添加到systemd
的服務列表中:sudo systemctl enable wg-quick@wg0
。
這份配置文件僅僅允許最多一個客戶端同時連接(因爲限定了IP地址爲10.0.0.2
)。如果需要允許多個客戶端同時連接,可以新增多個[Peer]
設定。如果願意共享客戶端的私鑰,可以放寬IP的限制(多個IP用逗號隔開,或者/24整個子IP段)。
切記要把/etc/wireguard
整個目錄chown
給root
用戶和組,內部的*.conf
文件都要改爲僅用戶可讀寫(chmod 600
)。
在客戶端你可以同樣的創建一個/etc/wireguard/wg0.conf
文件,然後使用wg-quick
來啓用和停止。如果你使用一個較新的Linux發行版和NetworkManager的話,你也可以選用透過NetworkManager圖形化的介面來控制客戶端的WireGuard,今天我調試了很久總算把這裏搞定(完全沒有使用wg-quick
來得quick)。
這裏的Private Key填客戶端生成的私鑰,這個必須是和伺服器配置文件中Peer的公鑰相匹配。監聽端口可以是其他端口並不重要,FwMark和伺服器保持一致。然後,點擊Peers按鈕配置好伺服器的信息。
這裏的Public Key是伺服器生成的公鑰,允許的IP地址這裏我們填0.0.0.0/0, ::/0
表示允許全部IP地址(這樣就讓系統把所有數據包全部轉發到伺服器)。Endpoint地址是伺服器的公網地址,端口就是伺服器WireGuard的監聽端口。確定之後回到NetworkManager,切換到IPv4選項卡,設定好要使用的IP地址(必須是伺服器Peer類別允許的IP地址段)。
比如這裏我們的地址是10.0.0.2
,就是目前伺服器允許的唯一IP,確定好子網掩碼是255.255.255.0
,然後網關地址是0.0.0.0
寫在最後,如果想要提升連接的安全係數,常見的如更換監聽端口到非默認值、加入預共享密鑰都是可以採取的,這裏就不贅述了。
參考文章: https://wiki.archlinux.org/index.php/WireGuard#Specific_use-case:_VPN_server
Comments
One response to “WireGuard初體驗”
shadowsocks-qt5 很好用,停止维护,很可惜。
向博主致敬。