Linux 网桥实现和网络诊断工具

  • Linux 网桥实现和网络诊断工具已关闭评论
  • 202 次浏览
  • A+
所属分类:linux技术
摘要

网桥:和交换机工作原理一样的一个硬件。
网桥内部有一个缓存,里面放了接口和mac地址的对应关系。

网桥:和交换机工作原理一样的一个硬件。
网桥内部有一个缓存,里面放了接口和mac地址的对应关系。

桥接、NAT和仅主机模式:

NAT网卡(vmnet8):相当于一个虚拟的集线器(Vmnet8),两台使用nat模式的虚拟机能够通信,是因为它都连接到了这个集线器(hub)上面。windows里面本省就生成了一个交割vmnet8的网卡,vmnet8上面的地址是第一个ip地址。这个虚拟的网卡和虚拟的hub也是连接在一起的。所以windows和虚拟机、虚拟机和虚拟机之间能通信。
Linux 网桥实现和网络诊断工具

仅主机网卡(vmnet1):配置了仅主机模式的虚拟机都会连接到仅主机这个hub上面。windows里面也有一个虚拟的网卡(vmnet1)(首地址)。
Linux 网桥实现和网络诊断工具

仅主机不能连通外网。(虚拟机之间和物理机之间通信)

桥接网卡(vmnet0):也相当于一个hub,物理机上有一个本地的物理网卡(真正的网卡),上面配了一个地址,这个网卡连接到vmnet0这个hub上面,如果有网卡是桥接模式,那么他就会连接到这个hub上面。
Linux 网桥实现和网络诊断工具

桥接:

把两个网络用网桥把他们连接起来。

环境准备:

Linux 网桥实现和网络诊断工具

图中两个交换机之间没有任何连接的话,是无法保证通信的。
现在连接一个电脑,电脑两端都有网卡,此时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