虽然wireguard因为其流量特征明显,并不能用于“七木棍”,但是加一个声明总比不加好:

请合理利用wireguard技术,遵守当地法律法规。使用wireguard造成的影响作者概不负责!

图片[2]-一起来实践的wireguard服务端+客户端设置-www.88531.cn资享网
关于什么是“七木棍”

本文假设你已经有一个可以正常被访问的网址(下面会用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,参考下图:

图片[4]-一起来实践的wireguard服务端+客户端设置-www.88531.cn资享网

本文将分成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配置增加、下载手段:

图片[6]-一起来实践的wireguard服务端+客户端设置-www.88531.cn资享网

这里的”+ 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

你就配置好了!

来源地址:一起来实践的wireguard服务端+客户端设置

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:www.88531.cn资享网,谢谢!^^

© 版权声明