簡體   English   中英

如何通過 DNS 名稱在 docker 容器之間建立連接?

[英]How to make connections between docker containers via DNS name?

我已經成功設置了以下容器:

  • 突觸:
    • Matrix 聊天服務器
    • 不暴露於外部 web
  • NGINX
    • 反向代理
    • 允許外部連接連接到 synapse 的客戶端 API
    • 阻止與 synapse 管理員 API 的外部連接
  • 電線衛士:
    • 虛擬專用網絡
    • 我連接VPN訪問synapse的admin API
      • API 可通過http://synapse:8008/訪問

問題是當連接到 VPN 時,我無法通過其域名連接到反向代理。

  • 斷開VPN時, https://example.tld成功連接到反向代理
  • 當連接到 VPN 時, https://example.tld無限期掛起
  • 在主機上運行curl https://example.tld可以運行,但在容器中不起作用

我希望能夠同時從其域名訪問管理員 API 和我的 NGINX 反向代理。 我並不總是連接到 VPN,所以我希望我的 Matrix 聊天客戶端無論是否連接到 VPN 都能無縫工作。 我還有其他獨立服務在我無法連接的反向代理后面運行。

docker-compose.yml:

version: "3.8"

services:
    synapse:
        image: docker.io/matrixdotorg/synapse:latest
        ...

    nginx:
        image: nginx:mainline-alpine
        restart: unless-stopped
        volumes:
            - ./www:/var/www
            - ./nginx:/etc/nginx 
        ports:
            - mode: host
              protocol: tcp
              published: 80
              target: 80
            - mode: host
              protocol: tcp
              published: 443
              target: 443

    wireguard:
        image: docker.io/linuxserver/wireguard
        restart: unless-stopped
        cap_add:
            - NET_ADMIN
            - SYS_MODULE
        environment:
            - PUID=1000
            - PGID=1000
            - TZ=America/Los_Angeles
            - PEERS=1
        volumes:
            - ./config:/config
            - /usr/src:/usr/src
            - /lib/modules:/lib/modules
        ports:
            - "51820:51820"
        sysctls:
            - net.ipv4.conf.all.src_valid_mark=1

我有 NGINX 容器以主機模式運行,以允許正確記錄 IP 地址

通過在 WireGuard 客戶端中排除任何 Matrix 客戶端應用程序來拆分隧道 VPN 是可行的,但也有一些缺點:

  • 如果通過瀏覽器連接到管理員 API(即通過https://github.com/Awesome-Technologies/synapse-admin ),則瀏覽器無法拆分隧道,並且無法訪問任何只能通過瀏覽器訪問的服務瀏覽器
  • 如果通過 VPN 的所有流量都首選保護(即使用公共 wifi),那么 Matrix 客戶端應用程序將沒有這種保護,但它可能沒問題:
    • Matrix 客戶端 API 超過 HTTPS 的 MitM 攻擊風險可以忽略不計
    • VPN 和 Matrix 服務器共享一個 IP,因此隱私問題可以忽略不計

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM