我有一个 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 容器中使用。