概述
bridge-utils 是一个用于管理和配置 Linux 桥接设备的工具集。它提供了一组命令行工具(如 brctl),用于创建、管理和监控 Linux 桥接设备。
iproute2 是一个功能强大的 Linux 网络配置工具集,用于管理和配置现代 Linux 内核中的网络功能。它取代了传统的 net-tools 工具集(如 ifconfig、route、arp 等),提供了更强大、更灵活的网络管理功能。
iproute2 的核心命令是 ip,它能够管理网络接口、路由、策略路由、邻居(ARP)、隧道、VLAN、桥接、流量控制等。
安装
sudo apt install bridge-utils sudo apt install iproute2
   | 
 
功能
- 网桥创建、删除
 
- 网桥上添加删除接口(物理或者虚拟)
 
常用操作
查看所有网桥
sudo brctl show
  sudo ip link show type bridge
   | 
 
添加网桥
 sudo brctl addbr br0
  sudo ip link add name br0 type bridge
 
  | 
 
删除网桥
sudo brctl delbr br0
  sudo ip link delete br0 type bridge
   | 
 
配置网桥IP
 sudo ifconfig br0 192.168.1.1 netmask 255.255.255.0 up
  sudo ip address add 192.168.1.1/24 dev br0
 
  | 
 
创建虚拟网络接口对
sudo ip link add veth0 type veth peer name veth1
   | 
 
以上命令创建一对接口,veth和veth1
在容器场景,一般是要把其中一个端口放入到特定的网络命名空间
开启虚拟网络接口对
sudo ifconfig veth0 up
  sudo ip link set veth0 up
   | 
 
网桥中添加接口
 sudo brctl addif br0 veth0
  sudo ip link set veth0 master br0
 
  | 
 
除了可以将虚拟网络接口对添加到网桥,也可以将物理接口添加进来,改一下设备名字为物理网卡即可
将物理设备添加进来,当需要外部流量访问,这种方式性能比NAT更好
网桥中删除接口
sudo brctl delif br0 eth0
  sudo ip link set eth0 nomaster
   | 
 
配置虚拟网络接口的网络命名空间
sudo ip link set veth1 netns /proc/$CONTAINER_PID/ns/net
   | 
 
配置虚拟网络接口的IP和路由
 sudo nsenter -t $CONTAINER_PID -n ip link set veth1 up
  sudo nsenter -t $CONTAINER_PID -n ip addr add 192.168.1.2/24 dev veth1
  sudo nsenter -t $CONTAINER_PID -n ip route add default via 192.168.1.1
 
  | 
 
使用iproute2操作会如下
 sudo ip netns exec $CONTAINER_PID ip address add 192.168.1.2/24 dev veth1
 
  sudo ip netns exec $CONTAINER_PID ip link set veth1 up
 
  sudo ip netns exec $CONTAINER_PID ip route add default via 192.168.1.1
 
  | 
 
直接查看网络命名空间中的配置
 sudo ip netns exec $CONTAINER_PID ip link show
 
  sudo ip netns exec $CONTAINER_PID ip address show
 
  sudo ip netns exec $CONTAINER_PID ip route show
 
  | 
 
总结
iproute2 提供了更现代、更强大的网络管理功能,推荐使用它替代 bridge-utils。 
- 通过 
ip 命令,可以统一管理网络接口、路由、桥接、命名空间等。 
- 在容器化环境中,
iproute2 的网络命名空间功能非常有用,可以轻松配置容器的网络。