Ubuntu Server 16.04: 端口转发失效

Ubuntu Server 16.04: Port Forwarding broken


问题

我有一台服务器在运行一个Minecraft服务器。它被配置为在25565端口工作。

在我的路由器中,我已经将端口25565转发到服务器,端口25565。简单的转发。

在内部,我可以很好地登录(有端口和无端口,通过指定服务器的本地IP)。CanYouSeeMe.org说端口是开放的,但我不能用外部IP登录(有端口和无端口,没有区别)。

我们通过对我的外部IP进行nmap扫描发现,无论如何端口是关闭的......

ufw是禁用的,我非常确定。启用了防火墙(ufw),又进行了nmap扫描,还是关闭。

我是否要给我的ISP打电话,或者这是我做错了/还没有解决的事情?

EDIT Fine , I'll add this to the question even though it's good enough for an answer for me:

Something to do with NAT loopback.
当我把我的电脑和我的电话的dataplan连接起来时,外部IP就像一个魅力。

所以

  • 当我连接到家庭网络时,我使用内部IP
  • 当我不在家时,我使用外部IP

另一个编辑
人们,我很抱歉在论坛上发帖, 最后 它不属于这里。根据我 掌握的信息(端口转发有效,SSH'ing在两个IP上都有效),我认为问题出在服务器上。

继续,把它标记为离题。也许某个也没听说过NAT反射的人(比如我)会找到这个话题,找出问题所在,并得到帮助。

你暗示Minecraft服务器是通过一个有NAT的路由器连接到互联网的。你是否将路由器配置为将该端口的传入连接转发给服务器?路由器是基于Ubuntu的吗?
没有,实际上我的路由器不支持NAT,这意味着当我连接到家庭网络时,我不能使用外部IP。我确实已经转发了端口和一切,只是NAT给我带来了麻烦。但我从来不知道它的存在,所以这可能是个麻烦的问题:P
如果路由器不使用NAT,并且本地网络上的机器没有从本地网络以外可到达的IP地址,那么服务器是如何连接到互联网的?
答案1

从你的描述来看,你已经正确地配置和测试了端口,而结果是你必须与你的互联网服务提供商沟通来补救的。 一些互联网服务提供商封锁某些端口,以避免他们的客户运行某些类型的服务器。 一些ISP封锁的几个常见端口是端口25和80。

你可以通过在一个特定的端口上配置一个服务器来验证端口转发的操作。 启动服务器,转发端口,然后用这个命令行测试连接情况:

$ telnet [serverip] [portnumber]

命令行中的参数是:

  • ServerIP - 这是你计算机的公共IP地址。
  • Portnumber - 这是该服务器运行的端口号。

如果你的公共IP地址是172.217.7.14,你想测试的端口是8080,那么命令是:

$ telnet 172.217.7.14 8080

现在通过从远程计算机运行该命令,你可以从响应中知道你是否进入了程序。

在这种情况下,如果你配置你的 Minecraft服务器 运行在这个端口,对该命令的响应将是。

  尝试172.217.7.14...。
连接到172.217.7.14。
 

你可以通过点击 Ctrl + ] 退出连接。 然后在提示符下输入 quit 。 这是传统的方法,总是有效的。 在这种情况下,只是 Ctrl + C 将做的伎俩为威廉与服务器。

编辑你的Minecraft s erver.properties 文件以测试一个不同的端口。 改变服务器端口:

改变从:

  
server-port=    25565  

改为。

  
server-port=    8080  

你也可以测试其他随机的端口,如 12345 ,以了解他们在阻断选择方面可能有多具体。

在你验证了该端口被你的ISP封锁后(通过其他端口的工作),然后你就可以通过有教养的对话来表达你的担忧。

你可能必须与他们的一个技术人员交谈,因为大多数时候他们的普通销售人员不了解端口和服务器的概念。

相同问题还可以参考: Ubuntu Server 16.04: Port Forwarding broken