快速且最新的安全 VPN 隧道
目的
在本教程中,您將了解 Wireguard 是什麼、如何使用、如何安裝和配置它,以及如何明智地使用 Wireguard。
什麼是線衛?
Wireguard 是一款開源、可靠且先進的 VPN 隧道軟件,您可以安裝和使用開箱即用的方式來創建與服務器的安全點對點連接。
注意:更新:Ubuntu 20.04 的作者決定在最新版本的 Ubuntu 中包含一個包含 WireGuard VPN 服務功能的自定義內核。 WireGuard 目前是 Universe 存儲庫的一部分,因此您不需要第三方存儲庫來安裝 Wireguard。可以使用“apt-get install wireguard-dkms-y”命令添加此軟件。
先決條件
- 您必須以具有 sudo 權限的用戶身份登錄,或者在系統上以 root 身份安裝 Wireguard 軟件。
- Wireguard 軟件安裝在 Ubuntu 18.04 服務器上。
服務器安裝
首先,添加 ppa:wireguard/wireguard 存儲庫。
[email protected]:~# add-apt-repository ppa:wireguard/wireguard WireGuard is a novel VPN that runs inside the Linux Kernel. This is the Ubuntu packaging for WireGuard. More info may be found at its website, listed below.
More info: https://www.wireguard.com/ Packages: wireguard wireguard-tools wireguard-dkms
Install with: $ apt install wireguard More info: https://launchpad.net/~wireguard/+archive/ubuntu/wireguard
Press [ENTER] to continue or Ctrl-c to cancel adding it.
Get:1 https://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Hit:2 https://us.archive.ubuntu.com/ubuntu bionic InRelease
Get:3 https://us.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:4 https://repo.saltstack.com/py3/ubuntu/18.04/amd64/latest bionic InRelease [2126 B]
Hit:5 https://deb.nodesource.com/node_10.x bionic InRelease
Get:6 https://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic InRelease [15.9 kB]
Get:7 https://us.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:9 https://repo.saltstack.com/py3/ubuntu/18.04/amd64/latest bionic/main amd64 Packages [3202 B]
Hit:8 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
Get:10 https://us.archive.ubuntu.com/ubuntu bionic-updates/main i386 Packages [662 kB]
Get:11 https://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [897 kB]
Get:12 https://us.archive.ubuntu.com/ubuntu bionic-updates/universe i386 Packages [1012 kB]
Get:13 https://us.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [1061 kB]
Get:14 https://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main i386 Packages [984 B]
Hit:15 https://packages.cisofy.com/community/lynis/deb stable InRelease
Get:16 https://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main amd64 Packages [984 B]
Get:17 https://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main Translation-en [764 B]
Fetched 3909 kB in 2s (1978 kB/s)
Reading package lists... Done
[email protected]:~#
接下來,您需要執行更新以確保新存儲庫被識別並添加到數據庫中。
[email protected]:~# apt-get update
Hit:2 https://repo.saltstack.com/py3/ubuntu/18.04/amd64/latest bionic InRelease
Hit:3 https://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:4 https://us.archive.ubuntu.com/ubuntu bionic InRelease
Hit:5 https://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic InRelease
Hit:6 https://us.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:7 https://us.archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:1 https://packages.cloud.google.com/apt kubernetes-xenial InRelease
Hit:8 https://deb.nodesource.com/node_10.x bionic InRelease
Hit:9 https://packages.cisofy.com/community/lynis/deb stable InRelease
Reading package lists... Done
[email protected]:~#
最後,使用 apt-get 安裝 Wireguard。
[email protected]:~# apt-get install wireguard
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
dkms wireguard-dkms wireguard-tools
Suggested packages:
menu
The following NEW packages will be installed:
dkms wireguard wireguard-dkms wireguard-tools
0 upgraded, 4 newly installed, 0 to remove and 129 not upgraded.
Need to get 417 kB of archives.
After this operation, 2388 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 https://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 dkms all 2.3-3ubuntu9.7 [68.1 kB]
Get:2 https://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main amd64 wireguard-dkms all 1.0.20200330-1ubuntu1~18.04 [253 kB]
Get:3 https://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main amd64 wireguard-tools amd64 1.0.20200319-0ppa1~18.04 [88.2 kB]
Get:4 https://ppa.launchpad.net/wireguard/wireguard/ubuntu bionic/main amd64 wireguard all 1.0.20200319-0ppa1~18.04 [7980 B]
Fetched 417 kB in 1s (325 kB/s)
Selecting previously unselected package dkms.
(Reading database ... 115256 files and directories currently installed.)
Preparing to unpack .../dkms_2.3-3ubuntu9.7_all.deb ...
Unpacking dkms (2.3-3ubuntu9.7) ...
Selecting previously unselected package wireguard-dkms.
Preparing to unpack .../wireguard-dkms_1.0.20200330-1ubuntu1~18.04_all.deb ...
Unpacking wireguard-dkms (1.0.20200330-1ubuntu1~18.04) ...
Selecting previously unselected package wireguard-tools.
Preparing to unpack .../wireguard-tools_1.0.20200319-0ppa1~18.04_amd64.deb ...
Unpacking wireguard-tools (1.0.20200319-0ppa1~18.04) ...
Selecting previously unselected package wireguard.
Preparing to unpack .../wireguard_1.0.20200319-0ppa1~18.04_all.deb ...
Unpacking wireguard (1.0.20200319-0ppa1~18.04) ...
Setting up wireguard-tools (1.0.20200319-0ppa1~18.04) ...
Setting up dkms (2.3-3ubuntu9.7) ...
Setting up wireguard-dkms (1.0.20200330-1ubuntu1~18.04) ...
Loading new wireguard-1.0.20200330 DKMS files...
Building for 4.15.0-72-generic
Building initial module for 4.15.0-72-generic
Building initial module for 4.15.0-72-generic
Done.
wireguard:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/4.15.0-72-generic/updates/dkms/
depmod...
DKMS: install completed.
Setting up wireguard (1.0.20200319-0ppa1~18.04) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
[email protected]:~#
服務器配置
啟用內核模塊
其次,Wireguard 作為內核模塊運行,必須使用 modprobe 命令啟用。這將在每次編譯新內核時更新 Wireguard 內核模塊。
[email protected]:~# modprobe wireguard
[email protected]:~#
現在您可以通過運行以下命令來驗證內核模塊是否處於活動狀態:
[email protected]:~# lsmod | grep wireguard
wireguard 221184 0
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 16384 1 wireguard
[email protected]:~#
創建密鑰
接下來,您需要創建一個公鑰/私鑰對來保護連接。首先,使用 umask 命令設置密鑰文件的默認權限設置。
順便說一下,這裡有一些關於 umask 命令的附加信息: umask 命令(或用戶文件創建模式掩碼)用於確定新創建文件的文件權限設置。它還可用於控制對新文件設置的基本或默認文件權限。它通常以 4 位符號或八進制值表示。 我們將使用 umask 將新文件的權限設置為 077,因此我們將概述如何計算權限設置。
見表
小數量 | 反對 | 文件權限 |
0 | 所有者 | 讀、寫、執行 |
7 | 團體 | 拒絕訪問 |
7 | 其他 | 拒絕訪問 |
Wireguard 還創建名為 wg0 和 wg1 的標準網絡接口,它們的行為類似於 eth0 或 eth1。這使您可以像使用 ipconfig 和 ip 命令處理標準網絡接口一樣處理這些接口。
設置權限
首先,使用以下 umask077 命令設置新密鑰的權限。
[email protected]:~ # umask 077
[email protected]:~ #
接下來,生成加密數據傳輸所需的公鑰和私鑰。
[email protected]:~ # wg genkey | tee privatekey | wg pubkey > publickey
這將創建一個新密鑰並將其保存在您的當前目錄中。在這種情況下,您在 /root 文件夾中運行命令,因此密鑰存儲在那裡。您可以使用 cat 命令來驗證密鑰。 (注意:不要在這裡與任何人共享這些密鑰。這些只是示例密鑰。)
[email protected]:~ # cat privatekey
YMJHJqjyQIuro9uVVp3rPoSvD9i92Dw2r2mAt121q3A=
[email protected]:~ # cat publickey
Y5HkgP1jRSM9+Ti9CfpKfF/ZSZlQ0GFrRo3tlv+35gc=
[email protected]:~ #
創建配置文件
接下來,您需要為 wg0 接口創建一個配置文件。首先將其插入/etc/wireguard文件夾,然後使用以下命令訪問該文件:
[email protected]:~# cd /etc/wireguard/
[email protected]:/etc/wireguard# ll
total 8
drwx------ 2 root root 4096 Mar 20 07:00 ./
drwxr-xr-x 102 root root 4096 Apr 1 14:08 ../
[email protected]:/etc/wireguard# touch wg0.conf
[email protected]:/etc/wireguard#
下一步是使用 vim 編輯 wg0.conf 文件。
[email protected]:/etc/wireguard# vim wg0.conf
接下來,您需要復制以下基本配置設置並將它們複製到 conf 文件中。然後添加選擇的接口使用的IP地址,並將其放在配置文件中。
[Interface]
PrivateKey = YMJHJqjyQIuro9uVVp3rPoSvD9i92Dw2r2mAt121q3A
Address = 10.10.0.1/24
Address = fd86:ea04:1111::1/64
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
ListenPort = 51820
wg0.conf 文件中的上述術語定義為:
- 私鑰: 該字段包含上面生成的私鑰。
- 地址 :這兩個IP地址值定義了WireGuard服務器的私有IPv4和IPv6地址。 VPN 網絡中的所有對等點都必須具有此設置的唯一值。
- 保存配置 :與其他 VPN 服務器不同,此值意味著客戶端無需重新啟動或重新加載 Wireguard 即可連接。 對等點可以通過使用 wg 命令簡單地添加對等點來直接連接。此設置是“內存中”操作,因此重新啟動服務器將刪除您添加的對等點。這是 SaveConfig 設置派上用場的地方。該值告訴 wg-quick 命令自動保存添加到配置文件的新對等體。
- 方法 // 發布: 此配置定義了啟用或禁用 wg0 接口時必須採取的其他步驟。在這種情況下,iptables 命令用於表示建議的 IP 規則,供客戶端共享服務器的主要 IPv4 或 IPv6 地址。當隧道被丟棄時,這些規則會被清除。
- 監聽端口 :此設置指定 WireGuard 偵聽傳入連接的端口。
如果您選擇不在 conf 文件中包含防火牆規則,則可以通過運行以下 sysctl 命令啟用端口轉發:
[email protected]:~# sysctl -w net.ipv4.ip_forward=1
接下來,您需要更改 wg0.conf 文件中的權限設置。
[email protected]:~# chmod -v 600 /etc/wireguard/wg0.conf
mode of '/etc/wireguard/wg0.conf' changed from 0644 (rw-r--r--) to 0600 (rw-------)
[email protected]:~#
更新防火牆規則
接下來,您需要允許 SSH 連接,打開 WireGuard VPN 端口,最後在服務器上啟用防火牆。
[email protected]:/etc/wireguard# ufw allow 22/tcp
Rules updated
Rules updated (v6)
[email protected]:/etc/wireguard# ufw allow 51820/udp
Rules updated
Rules updated (v6)
[email protected]:/etc/wireguard# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
[email protected]:/etc/wireguard#
您可以運行 ufwstatus 命令來驗證設置。
[email protected]:/etc/wireguard# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
80,443/tcp (Nginx Full) ALLOW IN Anywhere
22/tcp ALLOW IN Anywhere
51820/udp ALLOW IN Anywhere
80,443/tcp (Nginx Full (v6)) ALLOW IN Anywhere (v6)
22/tcp (v6) ALLOW IN Anywhere (v6)
51820/udp (v6) ALLOW IN Anywhere (v6)
[email protected]:/etc/wireguard#
啟動 Wireguard 服務
您現在可以使用以下命令啟動 Wireguard 服務:
[email protected]:/etc/wireguard# cd
[email protected]:~# wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.10.0.1/24 dev wg0
[#] ip -6 address add fd86:ea04:1111::1/64 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
[email protected]:~#
注意:“wg-quick”命令是“wg”命令使用的一些標準任務的便捷命令包裝器。例如,您可以使用以下命令啟用或禁用 wg0 接口:
[email protected]:~# wg-quick down wg0
[email protected]:~# wg-quick up wg0
接下來,讓 Wireguard 服務在服務器啟動時自動重啟。
[email protected]:~# systemctl enable [email protected]
Created symlink /etc/systemd/system/multi-user.target.wants/[email protected] → /lib/systemd/system/[email protected]
[email protected]:~#
現在您可以看到 Wireguard 服務正在運行。
[email protected]:~# wg show
interface: wg0
public key: Y5HkgP1jRSM9+Ti9CfpKfF/ZSZlQ0GFrRo3tlv+35gc=
private key: (hidden)
listening port: 51820
[email protected]:~#
您還可以使用 ifconfig 命令進行檢查。
[email protected]:~# ifconfig wg0
wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1420
inet 10.10.0.1 netmask 255.255.255.0 destination 10.10.0.1
inet6 fd86:ea04:1111::1 prefixlen 64 scopeid 0x0<global>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[email protected]:~#
客戶端安裝
設置 Wireguard 客戶端與設置服務器非常相似,唯一的區別是配置文件。 有幾種方法可以將對等點(客戶端)添加到 Wireguard。
Ubuntu客戶端安裝
您必須先設置權限,然後在客戶端生成密鑰對。
[email protected]:~ # cd /etc/wireguard
[email protected]:~ # umask 077
[email protected]:~ # wg genkey | tee privatekey | wg pubkey > publickey
創建配置文件
接下來,您需要為 wg0 接口創建一個配置文件。首先 cd 到 /etc/wireguard 文件夾,然後使用以下命令觸摸該文件:
[email protected]:/etc/wireguard# ll
total 8
drwx------ 2 root root 4096 Mar 20 07:00 ./
drwxr-xr-x 102 root root 4096 Apr 1 14:08 ../
[email protected]:/etc/wireguard# touch wg0-client.conf
[email protected]:/etc/wireguard#
下一步是使用 vim 編輯本地 wg0-client.conf 文件。
[email protected]:/etc/wireguard# vim wg0-client.conf
在 vim 中打開文件後,您需要復制以下基本配置設置並將它們粘貼到新的 wg0-client.conf 文件中。然後添加所選接口使用的 IP 地址。這些設置應包括服務器的 IP 地址和 DNS 值,而不是 ListenPort、PostUp、PostDown 和 SaveConfig 值。
[Interface]
Address = 10.200.200.2/32
PrivateKey = <insert client_private_key>
DNS = 10.200.200.1
[Peer]
PublicKey = <insert server_public_key>
Endpoint = <insert vpn_server_address>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21
最後,我想保護文件,所以我使用 chmod 更改文件權限。
[email protected]:/etc/wireguard # chmod 600 /etc/wireguard/wg0-client.conf
接下來,您需要在客戶端計算機上啟用 Wireguard 服務
[email protected]:/etc/wireguard# systemctl enable [email protected]
wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip address add 10.10.0.2/32 dev wg0
[#] ip address add fd86:ea04:1111::2/128 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] ip -6 route add ::/0 dev wg0 table 51820
[#] ip -6 rule add not fwmark 51820 table 51820
[#] ip -6 rule add table main suppress_prefixlength 0
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
請檢查連接
要查看連接詳細信息,請運行 wg 命令,然後運行 wg-quick save wg0 命令將設置保存到配置文件。
[email protected]:/etc/wireguard# wg
interface: wg0
public key: YMJHJqjyQIuro9uVVp3rPoSvD9i92Dw2r2mAt121q3A=
private key: (hidden)
listening port: 51820
peer: Y5HkgP1jRSM9+Ti9CfpKfF/ZSZlQ0GFrRo3tlv+35gc=
endpoint: 10.0.0.2:51820
allowed ips: 10.0.0.2/24, fd86:ea04:1115::/64
[email protected]:/etc/wireguard# wg-quick save wg0
然後,您可以 ping 服務器以測試連接。
ping 10.0.0.1
latest handshake: 1 minute, 37 seconds ago
transfer: 192.66 KiB received, 143.08 KiB sent
最後,您需要能夠在啟動時運行 Wireguard。要將其添加到服務中,請運行以下命令:
[email protected]:/etc/wireguard # systemctl enable [email protected]
最後,您可以隨時使用以下命令檢查連接:
[email protected]:/etc/wireguard# wg show
Windows 客戶端安裝
這是 Wireguard 鏈接 適用於 Windows 的 Msi 安裝程序..
注意:建議 Wireguard 開發人員僅使用經過批准的 Windows 客戶端,因為他們在使用其他客戶端時不保證安全連接。
其他安裝選項
Wireguard 還提供了更多用於在多個平台上安裝軟件的選項。我們可以看到別人 Wireguard 安裝選項 這裡。
結論是
總體而言,Wireguard 是一種有效、穩定且有用的工具,用於保護從本地客戶端到 VPN 服務器的連接。您學習瞭如何在服務器上安裝和配置 Wireguard,以及如何在本地計算機上安裝和配置客戶端。
你能幫助我嗎?
我們的支持團隊人滿為患,尤其是那些對本文中描述的網絡託管技術有深入了解的人。如果您按照此處描述的步驟感到不舒服,您可以簡單地打電話、聊天或出售您的票以支持該過程。 請致電 800.580.4985 或 聊天 或者諮詢我們知識淵博的解決方案或經驗豐富的託管顧問,了解如何利用這些技術。