我有一个运行多个容器的 docker,包括 dnsmasq 和 wireguard 服务器。
码头工人组成:
version: "2.1"
services:
wireguard:
image: ghcr.io/linuxserver/wireguard
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1002
- PGID=1002
- TZ=Europe/Paris
volumes:
- ./config:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
restart: unless-stopped
服务器配置:
[Interface]
PrivateKey = XXXXXXXX
ListenPort=51820
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
客户端配置:
[Interface]
PrivateKey = XXXXX
Address = 10.0.0.16/24
[Peer]
PublicKey = XXXX
AllowedIPs = 192.168.0.0/24
Endpoint = XXXXX
PersistentKeepalive = 25
与wireguard的连接正常,握手成功,我可以ping本地网络上的机器并访问互联网。
有些服务只能在本地网络(192.168.0.0/24)上访问,所以我尝试在客户端配置中添加 DNS(dnsmasq 托管在同一 docker 主机上)行:
[Interface]
PrivateKey = XXXXX
Address = 10.0.0.16/24
DNS = 192.168.0.13
[Peer]
PublicKey = XXXX
AllowedIPs = 192.168.0.0/24
Endpoint = XXXXX
PersistentKeepalive = 25
添加 dns 行时,没有解决任何问题。我仍然可以 ping 所有机器,但无法访问本地域或互联网。
我能做些什么来解决这个问题?
谢谢 !