我想完成一个 minecraft 服务器 (TCP/UDP)
我已经有一个使用私有 IP 192.168.0.9 的系统
并且其上的 DNS 使用公共 IP 2.220.217.108,然后使用 ddclient 从 helloworld.dyndns.org 重定向到它
但是当我启动服务器时,它允许我通过内部 IP 连接到 minecraft,但不允许通过公共 IP 或主机名连接到 minecraft?服务器使用端口 25565,但如果我尝试使用主机名或公共 IP 连接,连接总是被拒绝?
我可以在 Web 浏览器中连接到服务器,但尽管配置正确(据我所知),我无法在 minecraft 上连接到它,而且即使我从公共 IP 连接,它也不会显示是否有人试图连接到服务器并被拒绝。这是因为连接没有通过公共 IP 或主机名防火墙吗?
可能是因为我的配置/etc/network/interfaces
不正确?
我无法在配置中使用静态 IP 地址,因为我的 ISP 不提供该地址
/etc/network/interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
post-up iptables-restore < /etc/iptables.up.rules
答案1
我将从澄清从你的问题中得出的一些事实/假设来开始我的回答:
- 您的域名是 helloworld.dyndns.org
- helloworld.dyndns.org 指向公共 IP 2.220.217.108(这个我测试过了,知道)
- 2.220.217.108 是您的家庭 IP。
- 您正在运行 minecraft 服务器的计算机在您的家庭网络内有一个私有 IP 192.168.0.9。
恭喜,好消息是您只需要再完成一步,而且不需要设置新的 DHCP 服务器,而只需在路由器/集线器上设置端口转发,并可选择调整其 DHCP 设置。
剩下的就是设置端口转发在您的“家庭中心”(路由器)上。不幸的是,我见过的每个路由器都有不同的界面和功能集,但 99% 的时间都有一个您可能需要登录的“高级”区域,然后应该有一个名为“端口转发”的选项卡/菜单,您只需在其中指定计算机的 IP/MAC/主机名(192,168.0.9)和要转发的端口(TCP 25565)
DHCP 设置
您可以选择调整路由器上的 DHCP 设置,以防止您的 minecraft 服务器的私有内部 IP(192.168.0.9)发生变化(假设其设置为 DHCP 而不是静态设置)。但是 minecraft 在此期间应该仍能正常工作。这只是为了防止每次内部 IP 更改时您都必须重新设置端口转发。最好不要手动将您的私有 IP 设置为与路由器的 DHCP 池在同一范围内的地址,因为这可能导致(低风险)IP 冲突(两个设备使用相同的 IP)
因此,最简单的解决方案是检查 DHCP 池的 IP 范围(如下所示),然后设置服务器的 IP位于同一子网但不在同一个地址池中的对象。下图中的 192.168.1.1 - 192.168.1.63:
或者,一些路由器允许您根据设备的 MAC/主机名从 DHCP 池中手动为设备设置静态/保留 IP。