One significant advantage of dual NICs is the ability to implement NIC bonding (aka link aggregation) for increased bandwidth. In Linux, this can be configured via ifenslave
:
# Install required package sudo apt install ifenslave # Configure bonding interface sudo nano /etc/network/interfaces auto bond0 iface bond0 inet static address 192.168.1.10 netmask 255.255.255.0 gateway 192.168.1.1 slaves eth0 eth1 bond_mode balance-rr bond_miimon 100 bond_downdelay 200 bond_updelay 200
Dual NICs enable separation of different traffic types:
- Cluster/heartbeat traffic on NIC1 (10.0.0.0/24)
- Client-facing traffic on NIC2 (192.168.1.0/24)
Example iptables rules for traffic routing:
iptables -A INPUT -i eth0 -s 10.0.0.0/24 -j ACCEPT iptables -A INPUT -i eth1 -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT
When running hypervisors like KVM or VMware, dedicate NICs for:
# KVM bridge configuration example auto br0 iface br0 inet static bridge_ports eth0 address 172.16.0.2 netmask 255.255.255.0 auto br1 iface br1 inet static bridge_ports eth1 address 10.10.10.2 netmask 255.255.255.0
Dual NICs allow implementing physically separated networks:
# SSH daemon binding example # /etc/ssh/sshd_config ListenAddress 192.168.1.10:22 # Management interface # No ListenAddress for eth1 (10.0.0.10) - inaccessible via SSH
In financial systems, dual NICs provide:
- Market data feed on NIC1 (multicast)
- Order execution on NIC2 (unicast)
# Multicast route for market data route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
Cloud platforms often use:
# OpenStack neutron configuration snippet [ovs] bridge_mappings = physnet1:br-ex,physnet2:br-tenants
Dual NICs enable sophisticated network traffic separation for performance-critical applications:
# Linux policy routing example for dual NICs
ip route add default via 192.168.1.1 dev eth0 table 100
ip route add default via 10.0.0.1 dev eth1 table 101
ip rule add from 192.168.1.100 table 100
ip rule add from 10.0.0.100 table 101
Combine NICs for increased throughput using link aggregation:
# Ubuntu LACP bonding configuration
auto bond0
iface bond0 inet static
address 172.16.1.10
netmask 255.255.255.0
slaves eth0 eth1
bond-mode 4 (802.3ad)
bond-miimon 100
bond-lacp-rate 1
Virtualization hosts benefit from dedicated NICs for management vs VM traffic:
// VMware ESXi vSwitch configuration example
esxcli network vswitch standard add -v vSwitch1
esxcli network vswitch standard policy failover set -v vSwitch1 -a vmnic1,vmnic2
esxcli network vswitch standard portgroup add -v vSwitch1 -p "VM Network"
Physical separation of sensitive traffic flows:
# Windows firewall rules for dual NIC security
New-NetFirewallRule -DisplayName "DB NIC Only" -Direction Inbound -LocalAddress 10.50.0.10 -Protocol TCP -LocalPort 1433 -Action Allow
One NIC for market data feed, another for order execution:
// Financial application network priority setup
setsockopt(socket_fd, SOL_SOCKET, SO_PRIORITY, &priority, sizeof(priority));
ioctl(socket_fd, SIOCGIFINDEX, &ifr);
setsockopt(socket_fd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr));
Dedicated NIC for container host management:
# Docker network create with specific interface
docker network create -o com.docker.network.bridge.host_binding_ipv4=192.168.99.100 \
--opt com.docker.network.bridge.name=docker1 isolated_net