- A+
网桥:和交换机工作原理一样的一个硬件。
网桥内部有一个缓存,里面放了接口和mac地址的对应关系。
桥接、NAT和仅主机模式:
NAT网卡(vmnet8):相当于一个虚拟的集线器(Vmnet8),两台使用nat模式的虚拟机能够通信,是因为它都连接到了这个集线器(hub)上面。windows里面本省就生成了一个交割vmnet8的网卡,vmnet8上面的地址是第一个ip地址。这个虚拟的网卡和虚拟的hub也是连接在一起的。所以windows和虚拟机、虚拟机和虚拟机之间能通信。
仅主机网卡(vmnet1):配置了仅主机模式的虚拟机都会连接到仅主机这个hub上面。windows里面也有一个虚拟的网卡(vmnet1)(首地址)。
仅主机不能连通外网。(虚拟机之间和物理机之间通信)
桥接网卡(vmnet0):也相当于一个hub,物理机上有一个本地的物理网卡(真正的网卡),上面配了一个地址,这个网卡连接到vmnet0这个hub上面,如果有网卡是桥接模式,那么他就会连接到这个hub上面。
桥接:
把两个网络用网桥把他们连接起来。
环境准备:
图中两个交换机之间没有任何连接的话,是无法保证通信的。
现在连接一个电脑,电脑两端都有网卡,此时A和B之间也无法通信,因为这不是一个hub或交换机。因为计算机收到数据报文后,发现目标地址不是他,就直接丢弃了。
让A和B通信的方法:
方法一:
把这个计算机配置为路由器(但是左右两边的网段一样,所以不行。路由器是连接两个不同网段的)
方法二:
把计算机想象成一个网桥或交换机。所以把这个计算机配置成网桥或者交换机便可实现通信。
这个计算机配地址的原因:是为了方便我们进行管理,并不是为了实现A和B的通信需要配地址。(傻瓜交换机,插电即用)
把某台计算机配置为网桥的方法:
#通过命令配置的网桥是临时生效 #1. 安装对应工具包 yum install bridge-utils (只用centos6、7上面有,8上面已经淘汰了) #2. 添加网桥 brctl addbr br0 #3.把对应的网卡加入到网桥里面去 #3. 添加网桥中网卡 brctl addif br0 eth0(物理网卡) brctl addif br0 eth1(物理网卡) #4. 启动这个网桥 ifconfig br0 up 或 ip link set br0 up #默认br0 是down,必须启用 #删除桥接 brctl a delbr br0
nmcli命令创建软件网桥
#1创建网桥 nmcli con add type bridge con-name br0 ifname br0 #給网桥加地址可以不加,不过为了方便管理加上了地址 nmcli connection modify br0 ipv4.addresses 10.0.0.100/24 ipv4.method manual #启用这个网桥 nmcli con up br0 #2加入物理网卡到网桥里面 nmcli con add type bridge-slave con-name br0-port0 ifname eth0 master br0 nmcli con add type bridge-slave con-name br0-port1 ifname eth1 master br0 nmcli con up br0-port0 #启动物理网卡 nmcli con up br0-port1 #启动物理网卡 #3 会自动在网卡配置文件里面生成若干个配置 cat /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 STP=yes TYPE=Bridge BOOTPROTO=static IPADDR=10.0.0.100 PREFIX=24 cat /etc/sysconfig/network-scripts/ifcfg-br0-port0 TYPE=Ethernet NAME=br0-port0 DEVICE=eth0 ONBOOT=yes BRIDGE=br0 UUID=23f41d3b-b57c-4e26-9b17-d5f02dafd12d #启用STP brctl stp br0 on
网络测试诊断工具
#测试网络连通性 ping #显示正确的路由表 ip route route #跟踪路由 traceroute tracepath mtr #确定名称服务器使用 nslookup host dig #抓包工具 tcpdump wireshark #安全扫描工具 nmap netcat :网络界的瑞士军刀,即nc
fping:测试网络通畅的一个工具。ping命令的增强版。
tcpdump:抓包工具。
支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。
选项:
-
-i<网络接口> 表示对哪个网卡进行抓包
-
-n 以数字方式显示,不把ip地址转换成名字(显示ip而不是主机名)
-
-nn 不把协议和端口号转化成名字(比如22端口,不屑nn显示的就是ssh)
-
-t 不显示每个数据包前面的时间戳
-
-c 指定一共要抓几个数据包
关键字:
-
dst IP:表示要抓取目标地址是xxx的包
-
src IP:抓取源地址是xx的数据包
-
host ip:抓取指定主机发送或者接收的数据包
-
port xx:抓取指定端口的数据包
-
udp:抓取协议类型是udp的包
-
tcp:抓取协议类型是tcp的包
-
icmp:抓取协议类型是icmp的包
tcpdump使用范例
#查看网卡的信息: tcpdump -D #如果不加任何参数,则检测的是第一块网卡上流经的数据包 tcpdump #监听指定的网卡 ecpdump -i 网卡名 #监听指定主机的数据包 #例如:监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听 tcpdump host 10.0.0.100 #特定来源地址的通信 tcpdump src host hostname #特定目标地址的通信 tcpdump dst host hostname #如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听 tcpdump host hostname #监听特定端口 tcpdump port 3000 #监听TCP/UDP的数据包 tcpdump tcp或 tcpdump udp #监听特定主机之间的通信 tcpdump ip host 10.0.0.101 and 10.0.0.102
nmap:探测网络的连通性
#查看主机当前开放的端口 nmap localhost #探测目标主机开放的端口 nmap -PS 10.0.0.1