我有一个服务器,我想让我大学的学生能够访问它。但是由于某种原因,大学网络断线了,而且由于这是一项娱乐服务,虽然没有被禁止,但管理员不会花时间去解决。
我已经让它与 hamachi 和 openvpn 一起工作(以安全的方式使用 iptables,因此只有 minecraft 端口可访问,并且只有服务器 ip 通过 vpn 路由),然而两者都要求用户安装额外的软件,并在我的服务器上加密所有内容时施加额外的负载......
因此,我正在寻找一种不需要额外软件并且理想情况下对服务器造成最小额外负载的选项。
我可以为我的 Linux 服务器转发 nat 路由器上的端口,并且可以在服务器上安装软件。我想确保用户无法访问我的局域网,并且只能连接到服务器上的单个端口。我还想阻止从服务器到客户端的任何连接。
我绝对不希望我的服务器成为其他任何东西的代理,例如其他 minecraft 服务器、minecraft 更新等。
我见过有关 socks/ssh 代理的东西,但它们似乎试图对用户所做的一切进行隧道传输,而且我看不到在我的服务器上对其进行防火墙的方法(例如,它没有创建像 ham0 或 tun0 这样的接口)
答案1
用户无法避免必须在其电脑上安装应用程序作为客户端来连接到隧道。
我知道自由SSHd(在 Windows 上)您可以控制服务器上几乎所有您希望用户访问的内容,也许您可以添加一个 Windows 服务器作为网络基础设施上的中间人,但我不确定这会对您的性能产生多大的影响。
我还不知道有什么工具可以让你在 Linux 上做到这一点,但我也只是一个偶尔使用 Linux 的用户。
答案2
假设您的服务位于大学网络之外,那么问题就是 Minecraft 端口未通过大学防火墙打开。
因此,您不需要使用 VPN,只要大学网络不会通过检查实际数据包和阻止游戏数据包来阻止人们。
您需要做的就是将路由器设置为 NAT(严格来说,是 PAT,即端口地址转换)。从 Internet 方面,您需要允许一个众所周知的端口。8080 可能有效,但在非常严格的网络上,您可能只允许使用 80 和 443。在本地网络方面,您需要配置 PC 的 IP 地址和 Minecraft 端口。现在,您的公共 IP 地址和所选端口与私有 IP 地址和不同端口之间建立了链接。路由器会处理所有事情。
大学网络上的用户需要配置 Minecraft 以使用公共端口连接到您的公共 IP 地址,例如,
publicaddress:8080
在这里我直接传递标准端口,但您可能想将第一个端口号“外部端口”更改为 8080 或您需要的任何端口号。
更新:
从您的评论中,您已经澄清大学用户可以连接到您的服务器,但随后他们的会话会在一段时间后中断。通过 VPN 连接时不会发生这种情况。这表明大学的过滤服务正在标记流量并对连接进行处理。
因此,VPN 是最佳选择。查看路由器文档,了解它是否可充当 VPN 端点。如果它支持 PPTP 之类的协议,那么您可以进行设置,并向人们提供从其机器设置 PPTP VPN 的说明。
如果您的路由器无法做到这一点,那么您没有太多选择。要么使用外部(可能付费)VPN 服务,要么使用本地网络上充当 VPN 服务器的机器。@safjrz 提到了 FreeSSHd,还有 WinSSHd,我过去经常使用它来实现类似的目的。用户可以运行 WinSSHd 来制作基于 SSH 的传出 VPN,它们连接到您网络上的 SSH 服务器,如果您使用 Windows PC,该服务器也可能来自 WinSSHd;如果使用 Linux,则直接通过 SSH。