0

我已经在同一个 VPS 上运行了 5 个容器:

  • 容器 1 指向 traefik.xx.com(子域)。

  • 容器 2 指向 cloud.&&.com(子域)。

  • 容器 3 指向 api.xx.com(子域)。

  • 容器 4 指向 xx.com(主域)

  • 容器 5 指向 oauth.xx.com(子域)

  • 第六个容器是 vpn.xx。com(子域)

当我的手机(在本例中是客户端或对等方)上的wireguard VPN 关闭时,我可以浏览这些域,并且可以从任何地方访问它们。

但是,一旦我开始在作为客户端或对等方的手机上运行 Wireguard VPN,这些域就无法访问,但我可以浏览其他网站,例如 google 和 youtube.Etc。我的域也可以在其他没有运行我的wireguard vpn的设备上访问。

我对 docker-compose.yml 的设置:

services:
  wireguard:
    image: linuxserver/wireguard
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
#      - SERVERURL=wireguard.domain.com #optional
      - SERVERPORT=51820 #optional
      - PEERS=1 #optional
      - PEERDNS=8.8.8.8, 8.8.4.4 #optional
      - INTERNAL_SUBNET=10.13.13.0 #optional
    volumes:
      - ./config:/config
      - /lib/modules:/lib/modules
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    restart: unless-stopped

我尝试在主机网络上使用network_mode: hostdocker 运行,它工作正常,我可以在运行 wireguard VPN 时访问上述域,但还有另一个问题是容器与主机中的 DNS 端口 53 冲突,并且登录wireguard 说

端口 53 已在使用中。

就我而言,上述工作是因为容器 DNS 无法工作,它必须改用主机 DNS。所以解决方案是使用iptables将容器的 DNS 转发到主机 DNS 并使主机 DNS 完全控制。

你能帮我解决这个问题吗?或者有人有解决方案吗?

4

1 回答 1

0

我发现 ufw 阻止了连接,所以我不得不查看 ufw 的日志,看看哪个接口被阻止了,我只允许接口进出任何端口,这就解决了问题。

于 2020-05-05T15:18:06.470 回答