如何配置 Wireguard 以允许互联网访问?

如何配置 Wireguard 以允许互联网访问?

我有一个 Ubuntu 20.04.1 LTS 来托管 linuxserver/wireguard Docker 容器。客户端可以成功连接到 Wireguard 服务器,但在连接时我无法在客户端上浏览互联网网站。如何配置我的 Wireguard 服务器来实现这一点?

我的内部网络是 192.168.0.0/24,网关为 192.168.0.1,Ubuntu 服务器为 192.168.0.2。

我的 docker-compose.yml

version: "3.6"
services:

  portainer:
    image: portainer/portainer-ce
    container_name: portainer
    restart: always
    command: -H unix:///var/run/docker.sock
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${USERDIR}/docker/portainer/data:/data
      - ${USERDIR}/docker/shared:/shared
    environment:
      - TZ='America/Chicago'

  watchtower:
    container_name: watchtower
    restart: always
    image: v2tec/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --schedule "0 0 4 * * *" --cleanup

  plexms:
    container_name: plexms
    restart: unless-stopped
    image: plexinc/pms-docker
    volumes:
      - ${USERDIR}/docker/plexms:/config
      - ${USERDIR}/Downloads/plex_tmp:/transcode
      - /srv/media:/srv/media
      - ${USERDIR}/docker/shared:/shared
    network_mode: host
    environment:
      - TZ=${TZ}
      - HOSTNAME="Docker Plex"
      - PLEX_CLAIM=<redacted>
      - PLEX_UID=${PUID}
      - PLEX_GID=${PGID}
      - ADVERTISE_IP="http://192.168.0.2:32400/"

  wireguard:
    image: ghcr.io/linuxserver/wireguard
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - SERVERURL=<redacted> #optional
      - SERVERPORT=51820 #optional
      - PEERS=1 #optional
      - PEERDNS=8.8.8.8 #optional
      # - INTERNAL_SUBNET=10.13.13.0 #optional
      - ALLOWEDIPS=0.0.0.0/0, ::/0 #optional
    volumes:
      - ${USERDIR}/docker/wireguard/config:/config
      - /lib/modules:/lib/modules
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    restart: unless-stopped

答案1

IP Masquerade 应该在你的 linux/wireguard 服务器上完成,这意味着进入 wireguard 容器的流量应该被路由到 Internet。

本文解释如何做到这一点,但这是为“完整”主机编写的(不适用于容器)。对于您的情况,这个想法应该相同,但iptables可能无法直接在 wireguard 容器中使用。

相关内容