BLFS Networking Programs

bridge-utils

bridge-utils 是创建和管理bridge设备的工具

  • 可选依赖:

    • net-tools (也就是 ifconfig 这样的工具,我目前继续使用 iproute2 也就是 ip 命令)

内核设置

内核需要编译支持 802.1d Ethernet Bridging :

内核支持 802.1d Ethernet Bridging
[*] Networking support --->                                                [NET]
  Networking options --->
    <*/M> 802.1d Ethernet Bridging                                      [BRIDGE]

安装

安装 bridge-utils
cd /sources

bridge_utils_VERSION=1.7.1
tar xf bridge-utils-${bridge_utils_VERSION}.tar.xz
cd bridge-utils-${bridge_utils_VERSION}

autoconf                  &&
./configure --prefix=/usr &&
make

make install

bridge配置 br0

为了实现bridge的自动创建和配置,安装 blfs-bootscripts-20240416 中的 /usr/lib/services/bridge 服务,然后配置一个初始化 br0 虚拟交换机:

构建 br0 虚拟交换机
cd /sources/blfs-bootscripts-20240416

# 安装 /usr/lib/services/bridge 服务
make install-service-bridge

# 以下执行命令在 eno1 网络设备上创建一个连接网桥,实际执行时按照具体情况调整接口和IP配置
# 如果要对多个设备,则在 INTERFACE_COMPONENTS 使用空格分隔列表
# 使用多个SERVICE也是可行的,例如 SERVICE="bridge dhcp"

cat > /etc/sysconfig/ifconfig.br0 << "EOF"
ONBOOT=yes
IFACE=br0
VIRTINT=yes
SERVICE="bridge ipv4-static"  # Space separated
IP=192.168.7.200              # 这个IP地址是eno1原先分配给网卡的静态IP
GATEWAY=192.168.7.101
PREFIX=24
BROADCAST=192.168.7.255
CHECK_LINK=no                 # Don't check before bridge is created
STP=no                        # Spanning tree protocol, default no
INTERFACE_COMPONENTS="eno1"   # Add to IFACE, space separated devices
IP_FORWARD=true
EOF

# 由于 br0 替代了 eno1 的IP通讯,所以这里还要执行一步移除 eno1 配置(备份在自己的HOME目录)
mkdir ~/backup
mv /etc/sysconfig/ifconfig.eno1 ~/backup/
# 重启系统

重启系统以后检查 ifconfig 输出,可以看到新增了一个 br0 虚拟机交换机,并且和 eno1 连接:

重启系统后检查
# ifconfig
br0       Link encap:Ethernet  HWaddr 94:57:A5:5A:D9:C0
          inet addr:192.168.7.200  Bcast:192.168.7.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:130 errors:0 dropped:0 overruns:0 frame:0
          TX packets:139 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:15594  TX bytes:18023

eno1      Link encap:Ethernet  HWaddr 94:57:A5:5A:D9:C0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:114 errors:0 dropped:0 overruns:0 frame:0
          TX packets:132 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:16202  TX bytes:17547
          Interrupt:16

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0  TX bytes:0

# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.9457a55ad9c0	no		eno1

备注

手工配置也可以参考 QEMU简单bridge网络设置

使用

wget

安装 wget
cd /sources

wget_VERSION=1.24.5
tar xf wget-${wget_VERSION}.tar.gz
cd wget-${wget_VERSION}

./configure --prefix=/usr      \
            --sysconfdir=/etc  \
            --with-ssl=openssl &&
make

make install