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

网桥:工作方式与交换机相同的硬件。

[En]

Bridge: hardware that works the same as a switch.

网桥内部有一个缓存,里面放了接口和mac地址的对应关系。

桥接、NAT和仅主机模式:

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

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

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

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

只有主机不能连接到外部网络。(虚拟机和物理机之间的通信)

[En]

Only the host computer cannot be connected to the external network. (communication between virtual machines and physical machines)

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

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

桥接:

用网桥连接这两个网络。

[En]

Connect the two networks with a bridge.

环境准备:

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

如果图中的两台交换机之间没有任何连接,则无法保证通信。

[En]

Communication cannot be guaranteed without any connection between the two switches in the figure.

现在连接一个电脑,电脑两端都有网卡,此时A和B之间也无法通信,因为这不是一个hub或交换机。因为计算机收到数据报文后,发现目标地址不是他,就直接丢弃了。

让A和B通信的方法:

方法一:

将此计算机配置为路由器(但左侧和右侧的网段相同,因此不是。路由器连接两个不同的网段)

[En]

Configure this computer as a router (but the network segments on the left and right sides are the same, so no. The router connects two different network segments)

方法二:

把计算机想象成一座桥或一台交换机。因此,可以通过将计算机配置为网桥或交换机来实现通信。

[En]

Think of the computer as a bridge or switch. Therefore, the communication can be realized by configuring the computer as a bridge or switch.

这个计算机配地址的原因:是为了方便我们进行管理,并不是为了实现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

Original: https://www.cnblogs.com/heyongshen/p/16461801.html
Author: 背对背依靠
Title: Linux 网桥实现和网络诊断工具

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523151/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球