桥接和NATnetworking之间的差异

我不完全了解通过虚拟机的NAT接连接之间的区别。 据我所知,与我们的主机在同一networking上的机器可以访问我们的虚拟机,如果我们build立桥接连接。

那么,在互联网上,人们写道,NAT和桥接虚拟机都可以拥有像主机一样的IP地址,但是如果是NAT,同一networking上的机器不能访问我们的虚拟机,但是如果它被桥接, 。

如果NAT和桥接连接都可以具有不同的IP地址,那么为什么我不能访问NAT地址,而我可以访问桥接地址?

注意:说明NAT连接受到保护是不够的; 我想知道那是怎么回事

简而言之,NAT是如何工作的

通常可路由的外部地址是NAT的“外部”。 NAT后面的机器有一个“内部”地址,通常是不可路由的 。 当内部地址与外部地址build立连接时,中间的NAT系统创build一个由(outside_ip,outside_port,nat_host_ip,nat_host_port,inside_ip,inside_port)组成的转发表项。 任何匹配前四个部分的数据包都会将其目的地重新写入最后两个部分。

如果收到的数据包与NAT表中的条目不匹配,那么除非手动定义了转发规则,否则NAT框无法知道将其转发到哪里。 这就是为什么默认情况下,NAT设备后面的机器是“受保护”的原因。

桥接

桥接模式的作用就像您连接的接口现在是一个交换机,虚拟机被插入到一个端口上。 一切行为,就像是连接到该networking的另一台普通机器一样。

桥接连接就是这样,本质上虚拟交换机连接在虚拟机和物理networking连接之间。

NAT连接也就是这样,而不是交换机之间的虚拟机和物理networking连接之间的NAT路由器 。

使用NAT时,虚拟机的IP和主机所连接的networking是分开的。 这意味着您的虚拟机位于不同的子网上。 您可以访问networking,因为您的主机正在进行networking地址转换(如果您不知道什么是严格,适度和开放的NAT? )。 IP由主机上运行的DHCP分配

使用桥接接口,虚拟机将直接连接到正在使用的networking接口的networking。 这意味着在你的情况下,他们将直接连接到你的主机连接到的networking,从networking上运行的DHCP服务器获取IP地址(这也可能使主机的IP)。

现在为什么你不能访问这些机器:

因为您需要在NAT网段上启用portforwarding。 NAT将您的虚拟机IP转换为单个IP。 由于主机无法知道连接是指什么虚拟机,因此必须使用端口转发来接收连接。

虽然NAT可以提供一些保护,但它不是一个防火墙,出于上述相同的原因(使用NAT时,入站主机无法连接,除非启用了portforwarding)。 但是NAT不是安全的( http://blog.ioshints.info/2011/12/is-nat-security-feature.html )。

NAT有一些副作用,类似于networking边缘常用的安全机制。 这不会使它成为一个安全function,更有如此多的NAT变种。

通过NAT连接,主机(主要的物理机)就像路由器/防火墙一样。 虚拟机搭载主机的networking接口,所有进出虚拟机的数据包都通过它路由。 由于主机实际上可以看到IP数据包和TCP数据报,因此可以过滤或以其他方式影响stream量。

当VM使用桥接模式时,它通过较低级别的主机(OSI模型的第2层)连接到networking。 主机仍然看到stream量,但仅在以太网帧级别。 因此,无法看到stream量来自何处或stream量包含哪种数据。