虚拟机或docker容器上网有2种方式:桥接和NAT

(1)桥接的基本原理

配置成桥接网络连接模式的虚拟机可以当作主机所在以太网的一台独立主机,虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑,可以像主机一样访问以太网中的所有共享资源和网络连接,可以直接共享主机网络的互联网接入线路访问互联网,互联网也可以独立的访问该虚拟机。各虚拟机通过默认的VMnet0虚拟网卡与主机以太网连接,虚拟机间的虚拟网络为VMnet0。虚拟主机只需要配置与实体机同网段ip,相同的子网掩码,DNS和网关。需要做的事(设置虚拟机VMnet0网桥桥接到物理网卡->设置虚拟机网卡桥接到网桥->配置虚拟机ip地址,DNS和网关->可能需要开启本地主机的本地连接的VMware Bridge Protocal)

NAT与网桥,单网卡多网段ip设置_第1张图片

设置一个虚拟机可以配置多个虚拟网卡从而获得多个ip地址,只需要需改/etc/network/interfaces文件添加eth0的虚拟子网即可:

auto eth0

iface eth0 inet static

address 10.66.47.8

netmask 255.255.0.0

gateway 10.66.255.254

dns-nameservers 192.168.1.1

auto eth0:1

iface eth0:1 inet static

address 10.66.47.7

netmask 255.255.0.0

gateway 10.66.255.254

dns-nameservers 192.168.1.1

auto eth0:2

iface eth0:2 inet static

address 10.66.47.6

netmask 255.255.0.0

gateway 10.66.255.254

dns-nameservers 192.168.1.1

(2)NAT方式

使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网,但是互联网不能访问虚拟机。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。



同一个网卡,如何配置多个不同网段的ip地址?

这主要通过本机的路由表实现:配置不同ip的默认网关即可

1.首先在本地连接中为网卡添加多个不同网段的ip,此时还没有指定网关(只指定了默认网络的网关,而默认网关是当主机的某个ip找不到网关时使用的网关,网络为0.0.0.0的网关)

2.使用route print查看本机的路由表

IPv4 路由表

===========================================================================

活动路由:

网络目标        网络掩码          网关       接口   跃点数

          0.0.0.0          0.0.0.0    10.66.255.254       10.66.47.1    291

          0.0.0.0          0.0.0.0    10.66.255.254       10.66.47.8    291

        10.66.0.0      255.255.0.0            在链路上        10.66.47.8    291

        10.66.0.0      255.255.0.0            在链路上        10.66.47.1    291

       10.66.47.1  255.255.255.255            在链路上        10.66.47.1    291

       10.66.47.3  255.255.255.255            在链路上        10.66.47.1    291

       10.66.47.8  255.255.255.255            在链路上        10.66.47.8    291

        127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331

        127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331

  127.255.255.255  255.255.255.255            在链路上         127.0.0.1    331

    192.168.153.0    255.255.255.0            在链路上     192.168.153.1    291

    192.168.153.1  255.255.255.255            在链路上     192.168.153.1    291

  192.168.153.255  255.255.255.255            在链路上     192.168.153.1    291

        224.0.0.0        240.0.0.0            在链路上         127.0.0.1    331

        224.0.0.0        240.0.0.0            在链路上        10.66.47.1    291


===========================================================================

永久路由:

  网络地址          网络掩码  网关地址  跃点数

          0.0.0.0          0.0.0.0    10.66.255.254     默认

          0.0.0.0          0.0.0.0    10.66.255.254     默认

         10.73.14.6     255.0.0.0       10.73.14.1      1

===========================================================================

从本机路由信息表中可以看到现在电脑上存在的路由,如图:在网络目标下对应的地址如果0.0.0.0的,说明是到所有网络的,也就是说这是默认的路由,如果没有其它明细路由存在的话,就都走这个路由了;这里可以看到存在另一条10.0.0.0为目的地址的路由,这条路由的意思就是如果要访问10.0.0.0段地址的,走这条路由;如果不是,就全部走默认路由;


3.使用route add添加路由

一个主机不能同时存在两个默认网关;其它的网关通过命令加在路由上就可以了如图:用这个命令:route -p add 10.0.0.0 mask 255.255.255.0 10.73.14.1;其中route add 命令是加路由的意思,后面跟上目的地址,mask后面加匹配的掩码,最后是网关地址,-p的意思是永久有效,因为不加-p的话,一旦主机重新启动之后,加的那条路由会消失的,所以一般都会加-p,当然如果是临时用用的,可以不加-p;

当主机存在多个网卡时,需要添加主机访问某个ip或网络的静态路由

route add -net 30.1.0.0 netmask 255.255.0.0 gw 20.1.1.1 dev eth0    指定访问30.1.0.0网络时必须通过eth0网卡,使用20.1.1.1网关


4.关于跃点数

同一个子网可以有多个跃点数,优先选择跃点数小的路由规则。