使用linuxserver.io 的docker image搭建Wireguard server。
envfile:
SERVERURL=EXTRNAL_IP_OR_DOMAIN # 外部ip
SERVERPORT=51820 # 希望的端口号
PEERS=3 # 希望生成的client配置个数
PEERDNS=YOUR_DNS
INTERNAL_SUBNET=10.6.0.0/24 # WG子网
ALLOWEDIPS=10.6.0.0/24 # 支持多个,`,` 分割,可以用0.0.0.0/0转发所以流量
一些字段说明:
- ALLOWEDIPS是一系列ip段。配置了这个字段后wg客户端会将这些网段路由到wg接口,可以把INTERNAL_SUBNET加进去。这样可以让peer之间互通。也可以把0.0.0.0/0加进去。这样客户端的所有流量都会转发到server去。
为什么说wiregruard轻量呢。因为wireguard只是在系统添加了条路由表而已!它不本身并不负责什么路由工作。
- PEERDNS 是生成的客户端配置的dns地址。可以设置生server的地址,也可以设置成公共dns地址
docker-compose.yaml 文件:
version: "3.3"
services:
wireguard:
image: linuxserver/wireguard
restart: always
env_file:
- ./conf/wg_config/env
environment:
PUID: "1000"
PGID: "1000"
volumes:
- ./conf/wg_config:/config
- /lib/modules:/lib/modules
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
ports:
- 51820:51820/udp
因为wireguard是内核模块支持的,所以cap_add的SYS_MODULE是必须的。
sysctls 的作用是让server作为一台router。实现peer之间的流量转发。
Server 启动:
docker-compose up -d
docker-compose 启动 sevice 后。./conf/wg_config 目录下会自动生成配置文件。如下:
drwxr-xr-x 2 opc opc 4.0K Feb 3 15:44 coredns
drwxr-xr-x 2 root root 4.0K Feb 28 09:12 custom-cont-init.d
drwxr-xr-x 2 root root 4.0K Feb 3 15:44 custom-services.d
-rw------- 1 opc opc 193 Feb 3 15:49 .donoteditthisfile
drwx------ 2 opc opc 4.0K Feb 3 15:44 peer1
drwx------ 2 opc opc 4.0K Feb 3 15:44 peer2
drwx------ 2 opc opc 4.0K Feb 3 15:44 peer3
drwxr-xr-x 2 opc opc 4.0K Feb 3 15:44 server
drwxr-xr-x 2 opc opc 4.0K Feb 3 14:35 templates
-rw-r--r-- 1 opc opc 677 Feb 3 15:49 wg0.conf
peer1 到peer2 是自动生成给客户端使用的配置文件,里面有个peer.conf客户端可以直接导入,还有个peer.png客户端可以扫码导入
custom-cont-init.d 里面可以放一下shell脚本,server启动会自动运行。一般可以放一些额外的路由表配置,或者防火墙配置
1 条回复
[…] 如果你想安装在其他server上,参考这个 Docker 安装 Wireguard […]