Networking

NetworkManager, firewalld, bonding, bridging, DNS, and network troubleshooting on RHEL 10.

NetworkManager

RHEL 10 uses NetworkManager for all network configuration. nmcli is the CLI tool; nmtui provides a text-based interface.

# Show all connections
nmcli connection show

# Show device status
nmcli device status

# Create a static IP connection
sudo nmcli connection add type ethernet con-name eth0 ifname eth0 \
  ipv4.addresses 192.168.1.10/24 ipv4.gateway 192.168.1.1 \
  ipv4.dns '8.8.8.8 8.8.4.4' ipv4.method manual

# Modify an existing connection
sudo nmcli connection modify eth0 ipv4.addresses 10.0.0.5/24

# Bring up/down
sudo nmcli connection up eth0
sudo nmcli connection down eth0

Firewalld

# Check status
sudo firewall-cmd --state

# List open ports in public zone
sudo firewall-cmd --zone=public --list-all

# Open a port (runtime)
sudo firewall-cmd --add-port=8080/tcp

# Open a port (permanent)
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

# Forward port
sudo firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
sudo firewall-cmd --reload

# Rich rule (allow from specific IP)
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/8 port port=22 protocol=tcp accept'
sudo firewall-cmd --reload

Bonding

# Create a bond (active-backup mode)
sudo nmcli connection add type bond con-name bond0 ifname bond0 \
  bond.options 'mode=active-backup,miimon=100' \ 
  ipv4.method manual ipv4.addresses 10.0.0.1/24

# Add slave interfaces
sudo nmcli connection add type bond-slave ifname eth0 master bond0
sudo nmcli connection add type bond-slave ifname eth1 master bond0

# Check bond status
cat /proc/net/bonding/bond0

Bridging

# Create a bridge
sudo nmcli connection add type bridge con-name br0 ifname br0 \
  ipv4.method manual ipv4.addresses 10.0.0.1/24

# Add physical interface to bridge
sudo nmcli connection add type bridge-slave ifname eth0 master br0

# Verify
nmcli device show br0

DNS Configuration

# Set DNS via NetworkManager (per-connection)
sudo nmcli connection modify eth0 ipv4.dns '8.8.8.8 1.1.1.1'

# Global DNS override (resolv.conf management)
sudo nmcli dev show | grep DNS

# Install and configure BIND (DNS server)
sudo dnf install -y bind bind-utils
sudo systemctl enable --now named

# Quick DNS query
dig @8.8.8.8 example.com
nslookup example.com

Troubleshooting

# Check routing table
ip route show

# Check ARP table
ip neigh show

# Trace route
tracepath example.com

# Packet capture
sudo tcpdump -i eth0 port 80

# Network statistics
ss -tulnp
ethtool eth0