Docker-compose с VPN и DNS не разрешаются должным образом

Я заключил сделку с моим сыном, где, если он построит полностью рабочий трехсторонний светофор в minecraft, я разместил бы его собственный сервер minecraft, чтобы он и его друзья могли играть любое время. Он выполнил свою часть сделки, так что теперь моя очередь.

Чтобы сохранить эту штуку в коробке и сделать ее простой и дешевой для его друзей (для авторизации mojang требуется платная учетная запись mojang), я использую простой контейнер VPN с общими пользователями / pass / psk - он может просто отдай его своим друзьям.

Проблема: Это нормально работает, если при подключении они устанавливают сервер как IP-адрес контейнера в сети докеров. Проблема в том, что это меняется каждый раз, когда я перезагружаюсь. Мне нужен преобразователь DNS, чтобы имя сервера всегда было minecraft при подключении к VPN. DNS, который поставляется с этим VPN, использует общедоступный DNS, который я могу переопределить, но когда я копаю в контейнере vpn (но не на vpn iself ), я получаю 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#
0
задан 8 July 2019 в 17:53
1 ответ

Вероятно, простое решение состояло бы в том, чтобы присвоить статический IP-адрес minecraft контейнер. Вы видите, как сделать это в https://stackoverflow.com/questions/27937185/assign-static-ip-to-docker-container (обратитесь к ответу, который использует docker-compose, так как это - то, что Вы используете).

0
ответ дан 23 November 2019 в 23:01

Теги

Похожие вопросы