如何配置仅供内部使用的服务器

如何配置仅供内部使用的服务器

我正在尝试使用不同的 Ubuntu 服务器构建 VM-Home Lab。我想让每个服务器都无法从外部/互联网访问,我认为我可以通过配置 iptables 来实现这一点。

我尝试了几个教程,建议我丢弃所有流量并将其设置为仅接受来自我的内部网络的流量(例如 10.10.0.0/24)。

然而,当我按照这些教程操作时,我总是会遇到几个错误:

  • 首先,如果我从该命令开始,iptables -P INPUT DROP我就无法继续执行其余命令,因为服务器不知何故无法解析自己的主机名
  • 当我添加本地 IP 范围时,iptables -A INPUT -i eth0 -s 192.168.100.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT我无法通过 ssh 从主机访问我的服务器,甚至无法加载托管在其上的网页

我的主要目标是使服务器可从家庭网络中的每台计算机、笔记本电脑等访问,但不能从外部访问。这样,当朋友们带着笔记本电脑时,我和他们就可以一起进行编码项目。

也许我做得过头了,也许还有更简单的方法(使用 VirtualBox 虚拟机管理程序)。

机器上运行的服务是gitlab-ce,另一台是jira。

任何帮助都将不胜感激,因为这是我第一次处理这样的事情(我实际上只是一名软件开发人员:P)

干杯

答案1

您可以通过多种方式配置虚拟机管理程序来实现您的目标:

  1. 每个虚拟机都有其网络适配器附于 bridged adapter然后,您必须为每个网络适配器配置一个公共 IP(例如 10.10.0.0/24)。

    最后,您可以在主机上执行以下 iptables 命令:

    • iptables -P INPUT DROP将默认策略设置为 DROP
    • iptables -A INPUT -i eth0 -s 10.10.0.0/24 -j ACCEPT:允许来自内部网络的数据包。
  2. 每个虚拟机都有其网络适配器附于 NAT。然后,您必须为每个 VM 的每个服务配置端口重定向(VM 设置 > 网络 > 高级 > 底部的端口转发按钮)。有关端口转发配置的更多详细信息,请参阅文章末尾的注释。

    然后你必须在你的主机上执行以下 iptables 命令:

    • iptables -P INPUT DROP
    • iptables -A INPUT -i eth0 -s 10.10.0.0/24 -j ACCEPT
    • 与最后一个命令相比,您可以更精确地进行授权:iptables -A INPUT -i eth0 -s 10.10.0.0/24 --dport ssh -j ACCEPT但如果您向虚拟机添加更多服务,有时可能必须重新配置 iptables。

在这种情况下,假设您的整个内部网络是 10.0.0.0/8,那么您的虚拟机将无法从互联网和其余内部网络访问。 笔记 您将获得有关桥接/NAT转发端口 这里

编辑

考虑到请求下方的评论,我没有意识到您的本地网络“仅”是 10.10.0.0/24(而不是 10.0.0.0/8)。最重要的是,10.10.0.0/24 属于更广泛的私有网络10.0.0.0/8 (https://en.wikipedia.org/wiki/Private_network),无法在互联网上路由(我的意思是没有 VPN,但从技术上讲它不是路由)。因此来自互联网的客户端将无法访问内部虚拟机。

相关内容