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
遇到报错:
/usr/bin/wg-quick: line 32: resolvconf: command not found
执行如下:
sudo apt install openresolv

4 结语

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 云原生是一种信仰,是一种全新的技术模式,它不局限于你脑海中固有的那一亩三分地。人有多大胆,地有多大产,只要你敢想,...
    米开朗基杨阅读 845评论 0 2
  • 网络基础 从输入url到显示页面都发生了什么 用户发起请求 --> 智能DNS的解析(根据IP判断地理位置、接入网...
    Impossible安徒生阅读 906评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,083评论 19 139
  • 一、目录结构 目录说明/binBinary的缩写,这个目录存放最经常使用的命令;/sbins就是Super Use...
    CJ21阅读 1,705评论 0 15
  • 任意文件读取漏洞 所谓文件读取漏洞,就是攻击者通过一些手段可以读取服务器上开发者不允许读到的文件。从整个攻击过程来...
    余生似梦阅读 4,129评论 0 1