荣耀之链论坛

 找回密码
 立即注册
搜索
查看: 370|回复: 4

docker 安装wireguard

[复制链接]

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
发表于 2024-3-19 16:10 | 显示全部楼层 |阅读模式
  1. docker run -d \
  2.   --name=wg-easy \
  3.   -e LANG=chs \
  4.   -e WG_HOST=填服务器公网IP地址 \
  5.   -e PASSWORD=密码 \
  6.   -v /root/docker/wg-easy/wireguard:/etc/wireguard \
  7.   -p 4502:51820/udp \
  8.   -p 4502:51821/tcp \
  9.   --cap-add=NET_ADMIN \
  10.   --cap-add=SYS_MODULE \
  11.   --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  12.   --sysctl="net.ipv4.ip_forward=1" \
  13.   --restart unless-stopped \
  14.   -e TZ=Asia/Shanghai \
  15.   weejewel/wg-easy

  16. 弄好以后默认的wg内网网段是10.8.0.0/24

  17. 然后我上面写的端口是不同的

  18. 下载下来的配置文件需要修改一下

  19. 这里是举例

  20. [Interface]
  21. PrivateKey =
  22. Address = 10.8.0.2/24

  23. [Peer]
  24. PublicKey =
  25. PresharedKey =
  26. AllowedIPs = 0.0.0.0/1, 128.0.0.0/1
  27. Endpoint = 上面填的公网IP:4502
  28. PersistentKeepalive = 25


  29. 我把配置文件里面的dns删掉了
  30. 其他地方也改了几处

复制代码
这样就好了,非常简单
目前wireguard里面的ALLowedIPS没法配置太多




https://www.procustodibus.com/bl ... owedips-calculator/
这个网站可以计算wg的allowedips
一般来说默认的0.0.0.0/1,128.0.0.0/1是走所有流量,但是连wg服务器的ip都包含了,会导致访问wg服务器不行了
那么计算的时候
允许填
0.0.0.0/1,128.0.0.0/1
不允许填
服务器的IP,10.0.0.0/8,192.168.0.0/16
[可以把一些不想走的网段都加到不允许里面]

点计算
就会自动给出结果了


回复

使用道具 举报

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
 楼主| 发表于 2024-3-20 04:06 | 显示全部楼层
wireguard设置MTU的方法  双方都需要设置同样的MTU数值

[Interface]
Address = 10.10.10.1/32
PrivateKey = cP/qYOURSERVERPRIVATEKEYGOESHEREfsfad9Llfkc=
ListenPort = 3333
MTU=1280

[Peer]
PublicKey = oEzMV/70AjYOURCLIENTPUBLICKEYGOESHEREOewPPVQ=
AllowedIPS = 10.10.10.2/32
Endpoint = 127.0.0.1:8880
回复 支持 反对

使用道具 举报

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
 楼主| 发表于 2025-4-15 07:43 | 显示全部楼层
在不支持的系统上用wireguard-go


  1. docker pull masipcat/wireguard-go
  2. docker load < /root/docker/docker-image/masipcat-wireguard-go.tar.gz

  3. docker run -it \
  4. -d \
  5. --name=wireguard_go \
  6. -v /root/docker/wireguard-go/config/:/etc/wireguard/ \
  7. -v /dev/net/tun:/dev/net/tun \
  8. --cap-add=NET_ADMIN \
  9. --sysctl="net.ipv4.ip_forward=1" \
  10. -p 4505:51820/udp \
  11. -e WG_COLOR_MODE=always \
  12. -e LOG_LEVEL=info \
  13. --restart unless-stopped \
  14. masipcat/wireguard-go:latest bash

  15. 编辑/root/docker/wireguard-go/config/wg0.conf

  16. 然后
  17. docker exec -it wireguard_go bash
  18. wg-quick up wg0

复制代码
真坑啊用这个镜像还需要在docker里面开启地址伪装
iptables -t nat -A POSTROUTING -j MASQUERADE如果提示没有nat
就输入这个命令
sudo modprobe iptable_nat
sudo modprobe nf_conntrack
然后查看
lsmod | grep iptable_nat
lsmod | grep nf_conntrack
就行了,都不用重新启动容器顺便贴一个手机用的配置文件

  1. [Interface]
  2. PrivateKey = YAJ+HU=
  3. Address = 192.168.12.2/32
  4. DNS = 114.114.114.114

  5. [Peer]
  6. PublicKey = V22kM=
  7. PresharedKey = YeLfA=
  8. AllowedIPs = 0.0.0.0/1, 128.0.0.0/1,::/0
  9. Endpoint = 1.2.3.4:12345
  10. PersistentKeepalive = 0
复制代码

回复 支持 反对

使用道具 举报

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
 楼主| 发表于 2025-4-28 20:36 | 显示全部楼层
  1. iptables -N INPUT_WireGuard_____________
  2. iptables -I FORWARD 1 -p udp --dport 51820 -j INPUT_WireGuard_____________ -m comment --comment "wg-go的入站规则"

  3. iptables -A INPUT_WireGuard_____________ -s 1.0.0.0/16 -m comment --comment "允许a" -j ACCEPT
  4. iptables -A INPUT_WireGuard_____________ -s 3.0.0.0/16 -m comment --comment "允许b" -j ACCEPT
  5. iptables -A INPUT_WireGuard_____________ -j DROP
复制代码


回复 支持 反对

使用道具 举报

1326

主题

2373

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10267
 楼主| 发表于 2025-5-7 10:10 | 显示全部楼层
  1. 用rockylinux8构建wireguard-go和dnsmasq

  2. docker pull rockylinux/rockylinux:8

  3. docker run -it \
  4. -d \
  5. --name=rockylinux8 \
  6. -v /root/docker/rockylinux8:/root/docker/rockylinux8 \
  7. --restart unless-stopped \
  8. -e TZ=Asia/Shanghai \
  9. rockylinux/rockylinux:8 bash

  10. docker exec -it rockylinux8 bash

  11. 默认的镜像什么都没有
  12. yum install net-tools iproute procps
  13. 这样就可以用netstat和ip还有ipconfig还有ps命令了

  14. #########################################################
  15. #!/bin/bash

  16. # 下载 Go 安装包
  17. wget https://go.dev/dl/go1.24.2.linux-amd64.tar.gz

  18. # 解压安装包
  19. tar -C /usr/local -xzf go1.24.2.linux-amd64.tar.gz

  20. # 配置环境变量
  21. echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
  22. source ~/.bashrc

  23. # 验证安装
  24. go version



  25. #########################################################

  26. yum install dnsmasq
  27. 编辑dnsmasq的配置文件,把倒数第二个配置打开 即读取/etc/dnsmasq.d/*.conf 并把最后一个配置注释掉

  28. /usr/sbin/dnsmasq -k
  29. 参数 -k 表示以守护进程的方式运行 dnsmasq。


  30. #########################################################
  31. yum install git make

  32. git clone https://git.zx2c4.com/wireguard-go
  33. cd wireguard-go
  34. make
  35. make install

  36. 然后可以通过wireguard-go -h显示帮助信息

  37. 最后安装wg-quick
  38. yum install -y epel-release
  39. yum install -y wireguard-tools

  40. 然后就可以使用wg-quick up wg0来启动接口了


  41. #########################################################
  42. 导出镜像 我已经保存到我电脑里面了
  43. docker export 513f10450a71 > /root/docker/docker-image/wg-go-dnsmasq.tar

  44. scp -r /root/docker/docker-image/wg-go-dnsmasq.tar root@2.1.142.121:/root/docker/docker-image/

  45. 导入容器的命令
  46. cat /root/docker/docker-image/wg-go-dnsmasq.tar | docker import - wg-go-dnsmasq:latest
  47. ###########################################################################################################################################################################
  48. 下面开始正式使用
  49. 把客户端和服务端分开

  50. 首先创建客户端
  51. docker run -it \
  52. -d \
  53. --name wg-go-dnsmasq_201 \
  54. -v /root/docker/wg-go-dnsmasq/dnsmasq.d/:/etc/dnsmasq.d/ \
  55. -v /root/docker/wg-go-dnsmasq/etc-wireguard-config/:/etc/wireguard/ \
  56. -v /root/docker/wg-go-dnsmasq/udp2tcp/:/root/udp2tcp/ \
  57. -v /dev/net/tun:/dev/net/tun \
  58. --cap-add=NET_ADMIN \
  59. --sysctl="net.ipv4.ip_forward=1" \
  60. --network=docker_bridge_192_168_21 --ip=192.168.21.201 \
  61. -e WG_COLOR_MODE=always \
  62. -e LOG_LEVEL=info \
  63. -e TZ=Asia/Shanghai \
  64. --restart unless-stopped \
  65. wg-go-dnsmasq bash

  66. docker exec -it wg-go-dnsmasq_201 bash
  67. iptables -t nat -A POSTROUTING -j MASQUERADE
  68. wg-quick up wg0
  69. 用UDPSPEEDER 同时如果不通就两边都kill重新运行,这一点很恶心
  70. /root/udp2tcp/udpspeeder/udpspeeder.sh

  71. 添加路由表
  72. ip rule add from all lookup 100 prio 100
  73. ip rule add from all lookup 101 prio 101
  74. ip rule add from all lookup 102 prio 102

  75. ip route add [国外IP] via 192.168.21.1 dev eth0 table 100
  76. ip route add 192.168.21.0/24 dev eth0 proto kernel scope link src 192.168.21.201 table 100

  77. ip route add 192.168.9.1/32 dev wg0 scope link table 101

  78. ip route add 0.0.0.0/1 dev wg0 scope link table 102
  79. ip route add 128.0.0.0/1 dev wg0 scope link table 102

  80. 比较恶心,每次都要重新启动一下那个udpspeeder

  81. 创建服务端
  82. 用另外一个wireguard-go当服务端提供wireguard服务
  83. docker run -it \
  84. -d \
  85. --name=wireguard_go \
  86. -v /root/docker/wireguard-go/config/:/etc/wireguard/ \
  87. -v /dev/net/tun:/dev/net/tun \
  88. --cap-add=NET_ADMIN \
  89. --sysctl="net.ipv4.ip_forward=1" \
  90. --network=docker_bridge_192_168_21 --ip=192.168.21.202 \
  91. -p 4506:51820/udp \
  92. -e WG_COLOR_MODE=always \
  93. -e LOG_LEVEL=info \
  94. --restart unless-stopped \
  95. masipcat/wireguard-go:latest bash

  96. docker exec -it wireguard_go bash

  97. wg-quick up wg1
  98. iptables -t nat -A POSTROUTING -j MASQUERADE

  99. 然后在这里添加路由表
  100. 思路是 100是访问192.168.21.0的
  101. ip rule add from all lookup 100 prio 100
  102. ip rule add from all lookup 101 prio 101
  103. ip rule add from all lookup 102 prio 102

  104. ip route add 192.168.21.0/24 dev eth0 proto kernel scope link src 192.168.21.202 table 100
  105. ip route add 192.168.12.2 dev wg1 scope link table 100
  106. ip route add 192.168.12.3 dev wg1 scope link table 100
  107. ip route add 192.168.12.4 dev wg1 scope link table 100
  108. ip route add 192.168.12.5 dev wg1 scope link table 100

  109. 然后101就是国内全部走默认
  110. /etc/wireguard/fenliu/guonei-route.sh

  111. 然后102就是全部走201
  112. ip route add 0.0.0.0/1 via 192.168.21.201 dev eth0 table 102
  113. ip route add 128.0.0.0/1 via 192.168.21.201 dev eth0 table 102

  114. 注意这里很奇怪,不能添加default 但是可以按照上面的添加2条 却能生效
  115. #ip route add default via 192.168.21.201 dev eth0 table 102
  116. #ip route del default via 192.168.21.201 dev eth0 table 102

  117. 好像到这里就成功了
  118. /etc/wireguard/fenliu/chakan.sh
  119. 用的udpspeeder,然后感觉网速不是很快,不如我家里直接用路由器快
复制代码


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

荣耀之链

GMT+8, 2025-6-18 16:56 , Processed in 0.015878 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表