当前位置 : 主页 > 编程语言 > 其它开发 >

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

来源:互联网 收集:自由互联 发布时间:2022-07-12
网桥:和交换机工作原理一样的一个硬件。 网桥内部有一个缓存,里面放了接口和mac地址的对应关系。 桥接、NAT和仅主机模式: NAT网卡(vmnet8):相当于一个虚拟的集线器(Vmnet8),

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

桥接、NAT和仅主机模式:

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

仅主机网卡(vmnet1):配置了仅主机模式的虚拟机都会连接到仅主机这个hub上面。windows里面也有一个虚拟的网卡(vmnet1)(首地址)。
image

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

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

桥接:

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

环境准备:

image

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