让盒子只在局域网上通信?

让盒子只在局域网上通信?

我正在运行一个以 Debian 作为来宾操作系统的虚拟机(我可以选择另一个发行版)。它有 nginx 和其他一些软件一起运行。

某些软件尝试建立传出连接(例如检查更新或发送使用信息)。我想阻止它。我也愿意阻止传入连接,以便只有 LAN 或我自己的计算机(主机)可以与其通信。

如何设置 Linux 或虚拟机管理程序(我正在使用 VMWare 播放器)以不允许使用 Internet,仅允许我的计算机和 LAN?主机操作系统是Windows 7。

答案1

最简单的方法可能就是不设置默认路由。如果您设置了静态 IP 地址,请编辑/etc/network/interfaces并注释掉“网关”行。

如果您使用的是 DHCP,您可能可以不请求网关(编辑/etc/dhcp3/dhclient.conf并更改“请求”以不请求“路由器”,但我还没有测试过这一点。或者,您可以在之后将其删除。 ..

最后,您可以使用 iptables 来实现此目的:

iptables -P OUTPUT DROP
iptables -A OUTPUT -d 127.0.0.0/8 -j ACCEPT    # let it talk to localhost
iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT # use LAN range here
iptables -A OUTPUT -d 10.0.0.2 -j ACCEPT       # your machine here

请记住对您的 DNS 服务器的访问。如果它们不在您的 LAN 上,则名称解析将不起作用。 (使用 iptables 方法,添加规则以允许访问它们很简单)。

另外,请记住您不允许访问(例如)http.us.debian.org,因此 apt-get update/upgrade 将不起作用。您可以使用 iptables 修复此问题:

iptables -I OUTPUT -m owner --uid-owner 0 -j ACCEPT # allow root to do anything

假设您的服务不以 root 身份运行。

大多数自动检查更新/报告使用情况等的服务。可以配置为不。你也可以这样做。

另外,如果需要,您可以使用 iptables 允许回复来自非 LAN 计算机的传入流量(通过使用状态跟踪)。打字man iptables会给出详细信息。

相关内容