Linux / VPN · 2022-04-03 1

Docker 安装 Wireguard Server

使用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启动会自动运行。一般可以放一些额外的路由表配置,或者防火墙配置