linux-network tools

ifconfig

ifconfig eth0 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255

修改mac地址

# 用root身份登录,在/etc/rc.d/rc.local里加上这三句
ifconfig eth0 down
ifconfig eth0 hw ether 00:0C:18:EF:FF:ED
ifconfig eth0 up

ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
ifconfig eth0 down
ifconfig eth0 up

Bridge(网桥)

Linux Bridge(网桥)是用纯软件实现的虚拟交换机,有着和物理交换机相同的功能
是工作于二层的虚拟网络设备
Bridge可以绑定其他Linux网络设备作为从设备,并将这些设备虚拟化为端口,当一个从设备被绑定到Bridge上时,就相当于真实网络中的交换机端口插入了一个连接有终端的网线。

20211209_092553.png

Bridge设备br0绑定了实际设备eth0与虚拟设备tap0/tap1,此时,对于Hypervisor的网络协议栈上层来说,只看得到br0,并不会关心网桥的细节。当这些从设备接收到数据包时,会将其提交给br0决定数据包的去向,br0会根据MAC地址与端口的映射关系进行转发。因为Bridge工作在第二层,所以绑定在br0上的从设备eth0、tap0、tap1均不需要再设置IP,对上层路由器来说,它们都位于同一子网,因此只需为br0设置IP,比如10.0.1.0/24,此时,eth0、tap0、tap1均通过br0出入10.0.1.0/24网段。
因为具有自己的IP,br0可以被加入到路由表,并利用它来发送数据,而最终实际的发送过程则是由某个从设备来完成。
如果eth0本身具有自己的IP,比如192.168.4.5,在绑定br0之后,它的IP会失效,用户程序不能接收到发送到这个IP的地址,只有目的地址为br0 IP的数据包才会被Linux接收。

brctl 工具

# 网桥的每个物理网卡作为一个端口,运行于混杂模式,而且是在链路层工作,所以就不需要IP了
ifconfig eth0 0.0.0.0 up
ifconfig eth1 0.0.0.0 up

ifconfig br0 192.168.0.11 netmask 255.255.255.0 up

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl stp br0 0
brctl setfd br0 3
brctl sethello br0 2
brctl setageing br0 2
brctl stp br0 1
# 增加网桥
brctl addbr br0
# 停止网桥
ifconfig br0 down
# 删除网桥
brctl delbr br0
删除eth0端口
brctl delif br0 eth0

# 查询网桥信息
brctl show

addbr <bridge> add bridge
delbr <bridge> delete bridge
addif <bridge> <device> add interface to bridge
delif <bridge> <device> delete interface from bridge
setageing <bridge> <time> set ageing time
setbridgeprio <bridge> <prio> set bridge priority
setfd <bridge> <time> set bridge forward delay
sethello <bridge> <time> set hello time
setmaxage <bridge> <time> set max message age
sethashel <bridge> <int> set hash elasticity
sethashmax <bridge> <int> set hash max
setmclmc <bridge> <int> set multicast last member count
setmcrouter <bridge> <int> set multicast router
setmcsnoop <bridge> <int> set multicast snooping
setmcsqc <bridge> <int> set multicast startup query count
setmclmi <bridge> <time> set multicast last member interval
setmcmi <bridge> <time> set multicast membership interval
setmcqpi <bridge> <time> set multicast querier interval
setmcqi <bridge> <time> set multicast query interval
setmcqri <bridge> <time> set multicast query response interval
setmcqri <bridge> <time> set multicast startup query interval
setpathcost <bridge> <port> <cost> set path cost
setportprio <bridge> <port> <prio> set port priority
setportmcrouter <bridge> <port> <int> set port multicast router
show [ <bridge> ] show a list of bridges
showmacs <bridge> show a list of mac addrs
showstp <bridge> show bridge stp info
stp <bridge> {on|off} turn stp on/off

Spanning Tree Protocol (STP)
生成树协议,是一个作用在OSI网络模型中第二层的通信协议。基本应用是防止交换机冗余链路产生的环路,用于确保以太网中无环路的逻辑拓扑结构,从而避免广播风暴大量占用交换机的资源。