我与儿子达成协议,如果他在我的世界中建立了一个可以正常工作的三向交通信号灯,我将为他托管自己的我的世界服务器,以便他和他的朋友可以随时玩。他维持了讨价还价的目的,现在轮到我了。
为了让这个东西装箱,并尝试使其对他的朋友既简单又便宜(mojang auth需要付费的mojang帐户),我正在使用一个共享用户/密码/ psk的简单VPN容器-他可以只要把它给他的朋友。
问题:,如果他们在连接时将服务器设置为Docker网络上容器的ip地址,则此方法很好。问题是,每次重新启动时都会改变。我需要一个DNS解析器,以便在VPN上时服务器名称始终为minecraft
。该VPN随附的DNS使用公共DNS,我可以对其进行覆盖,但是当我dig
在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#