在 docker 中运行 wireguard 时如何访问 LAN?

在 docker 中运行 wireguard 时如何访问 LAN?

我有搭载 ubuntu 的 vps,并安装了 wireguard。此外,我还有一个家庭网络:路由器 + 几台笔记本电脑。我想将路由器连接到 vps,并从 vps 访问任何笔记本电脑。

我使用 docker compose 运行 wirequard:

  wireguard:
    image: linuxserver/wireguard
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London #set correct timezone
      - SERVERPORT=51820 #optional
      - PEERS=green #optional
      - PEERDNS=auto #optional
      - ALLOWEDIPS=0.0.0.0/0 #Peer addresses allowed
      - INTERNAL_SUBNET=10.13.13.0/24 #Subnet used in VPN tunnel
      - SERVERURL=example.org #Wireguard VPN server address
    volumes:
      - ~/apps/wireguard/config:/config
      - /lib/modules:/lib/modules
    ports:
      - 51820:51820/udp

这是我的 wg0.conf:

[Interface]
Address = 10.13.13.1
ListenPort = 51820
PrivateKey = 
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# peer_green
PublicKey = 
PresharedKey = 
AllowedIPs = 10.13.13.2/32, 192.168.1.0/24

对等配置:

[Interface]
Address = 10.13.13.2
PrivateKey = 
ListenPort = 51820
DNS = 10.13.13.1

[Peer]
PublicKey = 
PresharedKey = 
Endpoint = example.org:51820
AllowedIPs = 0.0.0.0/0

我可以使用路由器连接到 wireguard,但无法从 vps ping 路由器或任何设备。此外,我使用“ip route”在 ps 上看不到任何路由器。如何使 LAN 可从我的 vps 或连接到 vps 的笔记本电脑访问?

在此处输入图片描述

答案1

不要使用 AllowedIPs = 0.0.0.0/0,使用 10.13.13.0/24 并使用 PersistentKeepalive = 25。如果您仍然无法通过 vpn 连接,您应该执行 masquearate docker tunnel。

相关内容