虽然wireguard因为其流量特征明显,并不能用于“七木棍”,但是加一个声明总比不加好:
请合理利用wireguard技术,遵守当地法律法规。使用wireguard造成的影响作者概不负责!
本文假设你已经有一个可以正常被访问的网址(下面会用http://wg-server.com代指这个网址)或者固定的公网IPV4/IPV6地址(如果是这种情况,在后文中就用这个地址代替http://wg-server.com就行)。不固定的公网IPV4/IPV6我个人没试过,不保证可用性。
本文假设http://wg-server.com连接到的设备(下面简称server)具有七木棍,否则你在访问docker时可能会非常慢,且无法下载docker。
本文假设server是ubuntu系统。你可以同理得到其他Linux系统的配置方法。
本文不讨论具体的wireguard原理,但是我会尽可能详细地介绍配置的作用。
wireguard分成两部分:server和client,参考下图:
本文将分成server端和client端分别介绍搭建方法。由于后续你会看到的原因,client端的配置将会非常简单,本文主要关注在server端。
server端配置
下载、配置docker
首先,你需要在server上下载、配置docker。下面内容都来自 Install Docker Engine on Ubuntu (你可能需要魔法来访问),但是为了讲解方便,我会做一个转载。建议你对照阅读。
先删除冲突的包(命令行执行。本文剩下代码块的内容都是在命令行执行):
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
因为后续需要使用apt下载http://docker.com的内容,而http://docker.com需要魔法,所以先为apt配置proxy:
# after setting up http_proxy https_proxy
echo "Acquire::http::Proxy \"$http_proxy\";" | sudo tee -a /etc/apt/apt.conf
echo "Acquire::https::Proxy \"$https_proxy\";" | sudo tee -a /etc/apt/apt.conf
之后加docker的gpg key、并让apt update做索引。注意,如果你不加apt的proxy,这一步很可能会慢到不可接受。
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
然后就是下载了。同样,如果你没有配置apt的proxy,这一步很可能会慢到不可接收。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
下载结束后,跑一个hello-world看一下是否异常:
sudo docker run hello-world
另外,如果你不希望通过sudo跑docker,可以参考 Linux post-installation steps for Docker Engine 进行设置。之后我们的docker命令默认不带sudo,如果你不做配置的话请自行加上sudo。
此外,docker拉取镜像也需要proxy,它的配置方法是:将下面的内容粘贴进~/.docker/config.json。
{
"proxies": {
"default": {
"httpProxy": "$http_proxy",
"httpsProxy": "$https_proxy",
"noProxy": "127.0.0.0/8, .local, localhost"
}
}
}
记得将里面的$http_proxy和$https_proxy换成你的proxy配置。
拉取wg-easy
GitHub – wg-easy/wg-easy: The easiest way to run WireGuard VPN + Web-based Admin UI. wg-easy是一个非常easy的跑WireGuard server的docker镜像。
你可以先pull一下镜像,以检查网络问题。
docker image pull ghcr.io/wg-easy/wg-easy
之后就可以跑docker镜像了(你也可以看 https://github.com/wg-easy/wg-easy/blob/master/README.md 来自行做配置):
docker run -d \
--name=studio-wg \
-e LANG=en \
-e WG_HOST=wg-server.com \
-e PASSWORD=12345 \
-e WEBUI_HOST="0.0.0.0" \
-e WG_PERSISTENT_KEEPALIVE="25" \
-v ${HOME}/.wg-easy:/etc/wireguard \
-p 51820:51820/udp \
-p 51821:51821/tcp \
--cap-add=NET_ADMIN \
--cap-add=SYS_MODULE \
--sysctl="net.ipv4.conf.all.src_valid_mark=1" \
--sysctl="net.ipv4.ip_forward=1" \
--restart always \
-e WG_DEFAULT_DNS="114.114.114.114" \
-e WG_DEFAULT_ADDRESS="10.8.0.x" \
-e WG_ALLOWED_IPS="0.0.0.0/0, ::/0" \
ghcr.io/wg-easy/wg-easy
一行行解释:
- –name==studio-wg:你的docker容器名字,和wireguard服务本身无关。
- –e LANG=en:你的wireguard跑起来后,控制面板的语言。我这里选了英文,你可以选中文。
- -e WG_HOST=http://wg-server.com:你的wireguard server的hostname是http://wg-server.com。
- -e PASSWORD=12345:你的wireguard跑起来后的控制面板的密码是12345,建议按照自己的喜好修改。
- -e WEBUI_HOST=”0.0.0.0″:这个是必须的,否则你不能访问http://wg-server.com的控制面板。
- -e WG_PERSISTENT_KEEPALIVE=”25″:25秒时间让wireguard连接alive。你可以自行查资料,这里不详细解释了。
- -v ${HOME}/.wg-easy:/etc/wireguard:将本机的${HOME}/.wg-easy挂载到/etc/wireguard。后者是wireguard的配置文件夹,前者是你server上的一个用于保存wireguard配置的文件夹。
- -p 51820:51820/udp、-p 51821:51821/tcp:端口映射。其中51820会被用于数据传输,51821用于wireguard的控制面板。
- –cap-add的两个、–sysctl的两个:目前不用了解。
- –restart always:容器会在server重启、docker挂掉等情况发生后自动重启。
- -e WG_DEFAULT_DNS=”114.114.114.114″:默认使用DNS设置为114.114.114.114。注意,这个如果不配置会使用”1.1.1.1″——这个是CloudFlare的DNS,目前连接并不稳定。不了解的话114.114.114.114就行。
- -e WG_DEFAULT_ADDRESS=”10.8.0.x”:所有的设备将使用10.8.0.x网段。不了解的话不需要修改。
- -e WG_ALLOWED_IPS=”0.0.0.0/0, ::/0″:设置后续产生的client端的AllowedIps字段内容为”0.0.0.0/0, ::/0″。这个设置会让client所有的流量走server。如果需要“仅控制内网流量走server”,可以改成”10.8.0.0/24″。
- http://ghcr.io/wg-easy/wg-easy:使用wg-easy镜像。
注意,如果你的server来自云服务商,请检查准入策略,将51820端口开放UDP连接、51821端口开放TCP连接。
执行完之后,你的服务应该就跑起来了。此时你可以通过http://wg-server.com:51821来访问wireguard的控制面板。
client端配置
在http://wg-server.com:51821上,其实提供了方便的client配置增加、下载手段:
这里的”+ New”就是增加client的方法——你只需要点击后输入client的名字就行,这真是太简单了!。
下面的二维码图案、下载图案则是用于client的配置分发。点击二维码图案,之后在客户端扫码,就可以下载配置。点击下载图案,就可以得到你的配置了。
iPad
下载WireGuard应用(你可能需要其他地区帐号)。
之后在WireGuard应用中点击”+”,点击”Create from QR code”,之后扫http://wg-server.com:51821上配置对应的二维码就行!
Linux
Linux端相对复杂些:
先下载必要包
sudo apt install wireguard
sudo apt install resolvconf
注意,安装完resolveconf之后可能需要reboot下。
之后下载配置到~/Downloads/wg0.conf,然后:
cd /etc/wireguard
sudo cp ~/Downloads/wg0.conf ./wg0.conf
最后:
systemctl start wg-quick@wg0
你就配置好了!
转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:www.88531.cn资享网,谢谢!^^