How to Create A Network Bridge on CentOS 7 / RHEL 7

3

Sometimes you may need to setup network bridge adapter in Linux; particularly during the configuration of KVM (Kernel-based Virtual Machine), and, also while setting up Linux containers.

This network bridge allows virtual machines to have access to the external network and vice-versa, follow this guide to setup network bridge on CentOS 7 / RHEL 7.

Install Module

CentOS 7 comes with bridging module loaded on system boot by default. Use the following command to verify whether the module is loaded or not.

# modinfo bridge
 filename:       /lib/modules/3.10.0-327.el7.x86_64/kernel/net/bridge/bridge.ko
 alias:          rtnl-link-bridge
 version:        2.3
 license:        GPL
 rhelversion:    7.2
 srcversion:     905847C53FF43DEFAA0EB3C
 depends:        stp,llc
 intree:         Y
 vermagic:       3.10.0-327.el7.x86_64 SMP mod_unload modversions
 signer:         CentOS Linux kernel signing key
 sig_key:        79:AD:88:6A:11:3C:A0:22:35:26:33:6C:0F:82:5B:8A:94:29:6A:B3
 sig_hashalgo:   sha256

If the module is not loaded, you can load it using the following command.

# modprobe --first-time bridge

Install bridge-utils for controlling the network adaptors.

# yum install bridge-utils -y

Create a Network Bridge on CentOS 7

To create a network bridge, create a file called “ifcfg-virbrN” replacing “N” with a number, such as “0” in the “/etc/sysconfig/network-scripts/“.

# vi /etc/sysconfig/network-scripts/ifcfg-virbr0

If you would like to use the different name for network bridge, then create a file like ifcfg-<bridgename>. Also, update the DEVICE=”<bridgename>” line in the configuration file.

Place the following content into that file, modify it according to your environment.

DEVICE="virbr0"
BOOTPROTO="static"
IPADDR="192.168.12.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.12.2"
DNS1=192.168.12.2
ONBOOT="yes"
TYPE="Bridge"
NM_CONTROLLED="no"

Now, it’s the time to modify the network configuration of the existing adaptor in such a way that it points to a bridge interface.

In this guide, I will use my existing adaptor “eno16777736” for bridging.

# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736

Place the content like below.

DEVICE=eno16777736
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=virbr0

Restart the network using the following command.

# systemctl restart network

Use ifconfig command to see interface details.

# ifconfig
eno16777736: flags=4163  mtu 1500
        inet6 fe80::20c:29ff:fe6a:692  prefixlen 64  scopeid 0x20
        ether 00:0c:29:6a:06:92  txqueuelen 1000  (Ethernet)
        RX packets 3822  bytes 302382 (295.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 192  bytes 42924 (41.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4163  mtu 1500
        inet 192.168.12.10  netmask 255.255.255.0  broadcast 192.168.12.255
        inet6 fe80::20c:29ff:fe6a:692  prefixlen 64  scopeid 0x20
        ether 00:0c:29:6a:06:92  txqueuelen 0  (Ethernet)
        RX packets 1454  bytes 109258 (106.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 179  bytes 34372 (33.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Reference:

Redhat Documentation

Thanks for reading. Do let us know your thoughts in comments section.

You might also like