我想使用 Wireguard 将 docker 容器连接到远程网络。更详细地说,它需要连接 NAS @home 的服务器上的 Nextcloud。
我知道有一些解决方案带有一些 Linux 防火墙技巧。我尝试实现一个纯粹基于 docker-compose 的解决方案!
所以什么工作:我能够从 10.13.13.2 一直 ping 到“nextcloud”。反过来是行不通的。
我认为这是因为 Wireguard 容器中的 NAT。我不确定。另一个原因可能是 Nextcloud 容器内缺少路由信息。我不确定传入的数据包(从 Nextcloud 到 Wireguard)是否会被 Wireguard 容器正确路由。
有什么方法可以让这个工作?
我有一个部分工作的版本:
version: "3.8"
services:
db:
image: mariadb
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- ./mariadb:/var/lib/mysql
networks:
- default
app:
image: nextcloud
volumes:
- ./html:/var/www/html
restart: always
networks:
webproxy:
default:
wireguard-home:
ipv4_address: 10.0.14.2
wireguard:
image: linuxserver/wireguard
restart: always
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Amsterdam
- SERVERURL=<url>
- SERVERPORT=51820
- PEERS=1
- PEERDNS=auto
- INTERNAL_SUBNET=10.13.13.0
- ALLOWEDIPS=10.0.14.0/24,172.16.0.0/12
volumes:
- ./wireguard:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
networks:
default:
wireguard-home:
ipv4_address: 10.0.14.1
networks:
webproxy:
external:
name: webproxy
wireguard-home:
ipam:
config:
- subnet: 10.0.14.0/24