我不完全理解 NAT 和虚拟机上的桥接连接之间的区别。据我所知,如果我们建立桥接连接,与主机位于同一网络上的机器可以访问我们的虚拟机。
嗯,在互联网上,人们写道,NAT 和桥接虚拟机都可以像主机一样拥有 IP 地址,但如果是 NAT,则同一网络上的机器无法访问我们的虚拟机,但如果是桥接的,那么它们就可以。
如果 NAT 和桥接连接都可以有不同的 IP 地址,那么为什么我不能访问 NAT 地址,而可以访问桥接地址?
注意:声明 NAT 连接受到保护是不够的;我想知道那是如何做到的。
答案1
NAT 工作原理简介
外部地址通常是可路由的,是 NAT 的“外部”。NAT 后面的机器有一个“内部”地址,通常是不可路由当内部地址和外部地址之间建立连接时,中间的 NAT 系统会创建一个由 (outside_ip、outside_port、nat_host_ip、nat_host_port、inside_ip、inside_port) 组成的转发表条目。任何与前四个部分匹配的数据包都会将其目的地重写为后两个部分。
如果收到的数据包与 NAT 表中的条目不匹配,则 NAT 设备无法知道将其转发到何处,除非手动定义转发规则。这就是为什么默认情况下,NAT 设备后面的机器是“受保护的”。
桥接
桥接模式的作用就像您桥接的接口现在是一个交换机,而虚拟机插入了交换机上的一个端口。一切就像是另一台连接到该网络的普通机器一样。
答案2
使用 NAT,虚拟机的 IP 和主机连接的网络是分开的。这意味着您的虚拟机位于不同的子网上。您可以访问网络,因为您的主机正在进行网络地址转换(如果您不知道这是什么什么是严格、中等和开放 NAT?)。 IP 由主机上运行的 DHCP 分配
使用桥接接口,您的虚拟机将直接连接到它们所使用的网络接口所连接的网络。这意味着,在您的情况下,它们将直接连接到您的主机所连接的网络,从网络上运行的 DHCP 服务器获取 IP 地址(该服务器可能还会为您的主机提供其 IP)。
现在为什么你不能访问这些机器:
因为您需要在 NAT 段上启用端口转发。NAT 会将您的虚拟机 IP 转换为单个 IP。传入连接必须通过端口转发进行路由,因为主机无法知道该连接是用于哪个虚拟机的。
虽然 NAT 可以提供一些保护,但它不是防火墙,原因与上述相同(使用 NAT 时,除非启用端口转发,否则入站主机无法连接)。然而 NAT 并不安全(http://blog.ioshints.info/2011/12/is-nat-security-feature.html)。
NAT 有一些副作用,类似于网络边缘常用的安全机制。但这并不意味着它是一种安全功能,因为 NAT 有很多变体。
答案3
答案4
使用 NAT 连接时,主机(您的主要物理机器)充当路由器/防火墙。VM 搭载主机的网络接口,所有往返于 VM 的数据包都通过它路由。由于主机实际上可以看到 IP 数据包和 TCP 数据报,因此它可以过滤或以其他方式影响流量。
当虚拟机使用桥接模式时,它会通过较低层(OSI 模型的第 2 层)的主机连接到网络。主机仍能看到流量,但仅限于以太网帧层。因此,它无法看到流量来自哪里/去往哪里,也无法看到流量中包含哪种数据。