概述
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
的网络命名空间功能非常有用,可以轻松配置容器的网络。