Docker-compose 与 VPN 和 DNS 无法正确解析

Docker-compose 与 VPN 和 DNS 无法正确解析

我跟儿子做了一个约定,如果他在 Minecraft 中建造一个功能齐全的三向交通灯,我就为他搭建一个自己的 Minecraft 服务器,这样他和他的朋友就可以随时玩了。他遵守了约定,所以轮到我了。

为了将这个东西封闭起来,并试图为他的朋友保持简单和便宜(mojang auth 需要付费的 mojang 帐户),我使用了一个简单的 VPN 容器,其中共享用户/密码/psk - 他可以把它给他的朋友。

问题:如果在连接时将服务器设置为 docker 网络上容器的 ip 地址,则此方法可行。问题是,每次我重新启动时,该地址都会发生变化。我需要一个 DNS 解析器,以便服务器名称在minecraftVPN 上始终为。此 VPN 附带的 DNS 使用公共 DNS,我可以覆盖它,但当我dig在 VPN 容器上时(但不在 VPN 本身上) 我得到了一个我没想到的 IP 地址,而且根本无法预测。因此,我不知道是否/如何覆盖它。我已阅读 docker 网站上的文档,并且还考虑过使用 dnsmasq 作为转发器。详情如下。

docker-compose.yml

version: '3.3'
services:
  minecraft:
    build:
      context: .
    restart: always
    hostname: minecraft
    volumes:
      - world:/game/world
  vpn:
    image: hwdsl2/ipsec-vpn-server
    environment:
      - VPN_DNS_SRV1=127.0.0.11
    restart: always
    hostname: vpn
    ports:
      - 500:500/udp
      - 4500:4500/udp
    privileged: true
volumes:
  world:

终端调试(关闭vpn):

[ec2-user@ip-172-31-25-185 ~]$ docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                          NAMES
608165ea8236        hwdsl2/ipsec-vpn-server   "/opt/src/run.sh"        2 days ago          Up 2 days           0.0.0.0:500->500/udp, 0.0.0.0:4500->4500/udp   mcft_vpn_1
075f6313ae9d        mcft_minecraft            "java -Xms1024M -jar…"   2 days ago          Up 2 days           25565/tcp                                      mcft_minecraft_1
[ec2-user@ip-172-31-25-185 ~]$ docker exec -it 608165ea8236 /bin/bash
root@vpn:/opt/src# dig minecraft

; <<>> DiG 9.10.3-P4-Debian <<>> minecraft
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29390
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;minecraft.         IN  A

;; ANSWER SECTION:
minecraft.      600 IN  A   172.20.0.2

;; Query time: 0 msec
;; SERVER: 127.0.0.11#53(127.0.0.11)
;; WHEN: Mon Jul 08 14:45:41 UTC 2019
;; MSG SIZE  rcvd: 52

root@vpn:/opt/src#

答案1

最简单的解决方案可能是为minecraft容器分配一个静态 IP 地址。你可以在https://stackoverflow.com/questions/27937185/assign-static-ip-to-docker-container (请参阅使用 的答案docker-compose,因为那是您正在使用的)。

相关内容