我目前有一台运行多种服务的家庭服务器,但我只想将少数几个路由到 VPN。我在 VPS 上设置了 Wireguard,可以通过我的 Mac 和主机(Ubuntu 18.04)成功连接到它,但无法隔离容器。这是我取得的进展。
服务器配置
[Interface]
Address = 10.66.66.1/24,fd42:42:42::1/64
ListenPort = 49161
PrivateKey = xxx
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = xxxx
PresharedKey = xxxx
AllowedIPs = 10.66.66.2/32,10.0.5.0/24,fd42:42:42::2/128
客户端配置
[Interface]
PrivateKey = xxxx
Address = 10.66.66.2/24
DNS = 176.103.130.130,176.103.130.131
[Peer]
PublicKey = xxxx
PresharedKey = xxxx
Endpoint = xxxx:49161
AllowedIPs = 10.0.5.0/24
客户端 Wireguard 引导输出 这里有些奇怪的是,当我将 AllowedIPs 设置为 0.0.0.0/0 时,它缺少一些运行的命令。也许这是一个暗示?
~$ sudo wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.66.66.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x
[#] ip -4 route add 10.0.5.0/24 dev wg0
wg 现在开始的输出。它正在握手!
~$ sudo wg
interface: wg0
public key: xxxx
private key: (hidden)
listening port: 40518
peer: xxxx
preshared key: (hidden)
endpoint: xxxx:49161
allowed ips: 10.0.5.0/24
latest handshake: 23 seconds ago
transfer: 92 B received, 1.08 KiB sent
Docker 设置 我总是先启动 WG,然后尝试启动 docker 容器... 这是来自我的 docker-compose 的相关信息
networks:
wireguard-vpn:
ipam:
config:
- subnet: 10.0.5.0/24
services:
transmission:
...
networks:
wireguard-vpn:
ipv4_address: 10.0.5.4
如果我正确地考虑它,它将在启动 wg 时创建子网,然后在启动 docker 时使用该地址。但是现在当我尝试访问本地 docker 容器时,我什么也没得到,它通常会响应一些 html
curl 10.0.5.4:9091
从容器内部这里是卷曲的输出
root@dd0ec0b1cd5a:/# curl ifconfig.me
curl: (6) Could not resolve host: ifconfig.me
我不明白为什么这不起作用...