Как добавить контейнерные / docker подсети в сеть с помощью Wireguard? - PullRequest
0 голосов
/ 20 апреля 2020

В настоящее время у меня есть домашний сервер, на котором запущено несколько служб, но я хочу, чтобы только несколько из них были направлены в VPN. Я настроил Wireguard на VPS и могу успешно подключиться к нему через мой Ma c и хост (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 setup Я всегда сначала загружаю WG, а затем пытаюсь запустить контейнеры 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 он наберет su bnet, а затем использует этот адрес при запуске. docker .. Но теперь я ничего не получаю, когда пытаюсь поразить мой локальный контейнер docker, который обычно отвечает некоторым html

curl 10.0.5.4:9091

И из контейнера здесь выводится curl

root@dd0ec0b1cd5a:/# curl ifconfig.me
curl: (6) Could not resolve host: ifconfig.me

Я не могу понять, почему это не сработает ...

...