Wireguard

1 Linux docker wireguard 服务端

1.1 Docker 容器配置
 docker run -d \
  --name=wireguard \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -e SERVERPORT=51820 `#optional` \
  -e SERVERURL=服务端的域名或IP `#optional` \
  -e INTERNAL_SUBNET=10.13.13.0 `#optional` \
  -e PEERS=1 `#optional` \
  -e PEERDNS=auto `#optional` \
  -e ALLOWEDIPS=0.0.0.0/0 `#optional` \
  -e LOG_CONFS=true `#optional` \
  -p 51820:51820/udp \
  -v /root/docker/container/wireguard/config:/config \
  -v /lib/modules:/lib/modules \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --restart always \
  linuxserver/wireguard
  
 #说明:
 `#optional` //参数可选
  -e SERVERPORT=51820 // 服务器端口
  -e INTERNAL_SUBNET=10.13.13.0 //子网掩码
  -v /lib/modules:/lib/modules  //指定模块地址安装地址系统自带则不会安装
  -e ALLOWEDIPS=0.0.0.0/0  //允许的IPs
  -v /root/docker/container/wireguard/config:/config //配置地址
1.2 获取服务端公钥
// 公钥配置文件 /root/docker/container/wireguard/config/server/publickey-server
// 如:AAAAAAAAAAAAAAA=
cat /root/docker/container/wireguard/config/server/publickey-server

2 Linux wireguard 客户端

2.1 安装wireguard
apt update
apt install wireguard
2.2 生成私钥/公钥
//  没有/etc/wireguard就创建 
cd /etc/wireguard  
wg genkey | tee privateKey | wg pubkey > publicKey
2.3 获取客户端私钥
// 配置文件/etc/wireguard/privateKey    
// 如:BBBBBBBBBBBBBBB=
cat /etc/wireguard/privateKey
2.4 获取客户端公钥
// 配置文件/etc/wireguard/publicKey   
// 如:CCCCCCCCCCCCCCC=
cat /etc/wireguard/publicKey
2.5 创建配置文件并写入 wg0.conf
cat << EOF > /etc/wireguard/wg0.conf
[Interface]
# 客户端分配的IP
Address = 10.13.13.3/32
# 客户端的私钥  BBBBBBBBBBBBBBB=  ,见2.3
PrivateKey = 客户端的私钥
# 监听端口
ListenPort = 51820
# 配置DNS
DNS = 10.13.13.1

[Peer]
# 服务端的公钥 AAAAAAAAAAAAAAA= ,见1.2
PublicKey = 填入服务端的公钥
# 对端(即为服务端域名或IP)
Endpoint = 服务端域名或IP:51820
# 允许的IP地址
AllowedIPs = 0.0.0.0/0
EOF
2.6 启动
// 启动 wg0 即 wg0.conf 文件
wg-quick up wg0

// 其它命令如下:
// 停止
wg-quick down wg0
// 查看状态
wg
// 设置开机启动
systemctl enable wg-quick@wg0
// 取消开机启动
systemctl disable wg-quick@wg0
2.7 防火墙-如果需要(debian)
sudo ufw allow ssh
sudo ufw allow 51820/udp

3 再次配置服务端

3.1 配置客户端公钥

服务端下找到文件 /root/docker/container/wireguard/config/wg0.conf,添加如下

[Peer]
# 客户端配置
# 客户端公钥CCCCCCCCCCCCCCCC=
PublicKey = 填入客户端公钥,见2.4
# 客户端分配的IP,与2.4保持一直
AllowedIPs = 10.13.13.3/32
3.2 重新启动服务端
//方法1.docker 容器中
wg-quick down wg0 
wg-quick up wg0
//方法2.重启容器
docker restart wireguard

4 结语

个人简单理解:
服务器好比路由器,客户端就是手机/电脑(linux/mac/win ...), 各个客户端之间通过服务器的转发相互通信.

你可能感兴趣的:(Wireguard)