네트워크 인터페이스는 서버나 컴퓨터가 네트워크에 연결되기 위해 사용하는 하드웨어 및 소프트웨어 구성 요소.

- 물리적 네트워크 인터페이스 (예:
enp3s0f0,enp4s0f0)
생성: 이들은 서버의 물리적 네트워크 카드에 해당합니다. 서버에 네트워크 카드가 장착되면, 운영 체제는 이를 인식하고 네트워크 인터페이스로 구성합니다.
역할: 물리적 네트워크 인터페이스는 외부 네트워크, 인터넷 또는 로컬 네트워크와의 연결을 담당합니다. 이를 통해 서버는 외부로 데이터를 송수신할 수 있습니다.- 가상 네트워크 인터페이스 (예:
docker0)
생성: 가상 네트워크 인터페이스는 특정 소프트웨어에 의해 생성됩니다. 예를 들어, Docker와 같은 컨테이너화 도구는 가상 네트워크 인터페이스를 만들어 컨테이너 간 통신을 가능하게 합니다.
역할: 이 인터페이스는 주로 가상화 환경 내부 또는 서버의 다른 프로세스 간 통신을 위해 사용됩니다. 예를 들어, docker0는 Docker 컨테이너들이 서로 통신하고 호스트 시스템과 통신하는 데 사용됩니다.- 로컬 루프백 인터페이스 (예:
lo)
생성: 이 인터페이스는 운영 체제에 의해 자동으로 생성됩니다. 모든 유닉스 및 유닉스 계열 시스템에는 기본적으로 존재합니다.
역할: 로컬 루프백 인터페이스는 시스템 내부 통신을 위한 가상 인터페이스입니다. 127.0.0.1 (IPv4) 및 ::1 (IPv6) 주소를 사용해, 시스템 내에서 자신에게 데이터를 보내고 받는 데 사용됩니다. 이는 네트워크 통신 테스트, 서버 프로세스 간 통신 등에 사용됩니다.
네트워크 인터페이스 enp3s0f0의 구성
- inet (Internet Protocol Address):
192.168.10.210은 이 네트워크 인터페이스에 할당된 IPv4 주소입니다.
이 주소는 로컬 네트워크 내에서 해당 서버를 식별하는 데 사용됩니다.- Subnet Mask:
255.255.255.0은 서브넷 마스크로, IP 주소를 네트워크 부분과 호스트 부분으로 구분하는 데 사용됩니다.
이 서브넷 마스크는 C 클래스 주소를 나타냅니다. 여기서 네트워크는 192.168.10이고, 호스트 부분은 마지막 숫자인 210입니다.- Broadcast:
192.168.10.255는 브로드캐스트 주소입니다.
브로드캐스트 주소는 해당 서브넷 내의 모든 호스트에 데이터를 전송하는 데 사용되는 특별한 주소입니다.
이 주소로 전송된 패킷은 동일한 서브넷 내의 모든 호스트에게 도달합니다.
예를 들어, 192.168.10.255 주소로 전송된 패킷은 192.168.10.x 서브넷 내의 모든 호스트가 수신합니다.
네트워크 본딩은 여러개의 네트워크 인터페이스를 하나의 인터페이스로 묶는 기술이다.
두 개 이상의 네트워크 인터페이스를 하나로 묶어 대역폭(BandWidth)을 확장하거나 하나의 주소에 대해 'Active-Standby' 구성을 하기 위해 사용한다.
CentOS (Rocky 포함) 의 경우 /etc/sysconfig/network-scripts 디렉토리 밑에 있는 설정 파일들을 수정해주어야 한다. (없을 경우 생성)
기존 2개의 인터페이스를 bond0 인터페이스로 본딩해주기 위해 다음과 같이 파일 생성.
-rw-r--r--. 1 root root 166 11월 11 21:45 ifcfg-bond0
-rw-r--r--. 1 root root 66 11월 11 21:45 ifcfg-enp3s0f0
-rw-r--r--. 1 root root 66 11월 11 21:46 ifcfg-enp4s0f0
ifcfg-enp3s0f0내용 :
DEVICE=enp3s0f0
ONBOOT=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
enp4s0f0 도 마찬가지.
bond0내용 :
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=none
BONDING_OPTS="mode=1 miimon=100"
IPADDR=192.168.10.210
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
route 명령어 입력 후 게이트웨이 확인. _gateway 는 192.168.10.1을 의미.

BONDING_OPTS 의 본딩 모드로 설정할 수 있는 숫자는 다음과 같다.

그리고 다음 경로에 파일을 생성 후 내용 작성:
vi /etc/modprobe.d/boding.conf
alias bond0 bonding
options bond0 mode=1 miimon=100
그 다음 본딩 모듈을 사용
sudo modprobe bond0
네트워크 서비스 재시작
sudo service network restart
입력하니 다음 에러 발생
Redirecting to /bin/systemctl restart network.service
Failed to restart network.service: Unit network.service not found.
network.service가 CentOS 또는 RHEL의 최신 버전(7 이상)에서는 사용되지 않을 수 있다고 한다. 최신 버전의 CentOS나 RHEL에서는 NetworkManager 서비스가 네트워크 설정을 관리.
sudo systemctl restart NetworkManager 입력
이제 본딩 상태를 확인하기 위해
/proc/net/bonding/bond0 파일 조회.
해당 파일이 아래와 같이 생성됨.

/proc/net/bonding/bond0 파일의 내용에 따르면 본딩은 성공적으로 설정되었지만, 현재 활성 슬레이브가 없고 MII 상태가 'down'으로 나타남. 이는 본딩된 네트워크 인터페이스가 현재 활성화되지 않았거나 연결이 되어 있지 않음을 의미한다.
- 슬레이브 인터페이스 확인
본딩에 사용되는 슬레이브 인터페이스(enp3s0f0 및 enp4s0f0)의 구성 파일을 다시 확인하세요. 이 파일들이 본딩 인터페이스를 올바르게 참조하고 있는지 확인하고, 네트워크 설정이 올바르게 적용되었는지 확인합니다.- 네트워크 인터페이스 상태 확인
각 슬레이브 인터페이스의 상태를 확인합니다. ip link show 또는 ifconfig 명령을 사용하여 각 인터페이스가 활성화되어 있는지 확인합니다.
여러 시도를 해봤지만 bond0이 활성화되지 않음.
nmcli device status입력
nmcli connection add type bond con-name bond0 ifname bond0 bond.options mode=active-backup,miimon=1000입력하여 bond0 인터페이스 생성
enp3s0f0, enp4s0f0 인터페이스를 slave 종류로 설정하고 이름을 설정
nmcli connection add type ethernet slave-type bond con-name bond0-enp3s0f0 ifname enp3s0f0 master bond0nmcli connection add type ethernet slave-type bond con-name bond0-enp4s0f0 ifname enp4s0f0 master bond0
생성한 bond0 인터페이스에 IP 설정을 진행
nmcli connection modify bond0 ipv4.addresses 192.168.10.210/24nmcli connection modify bond0 ipv4.gateway 192.168.10.1nmcli connection modify bond0 ipv4.method manual
기존에 인터페이스는 Down 생성한 인터페이스는 Up을 적용
nmcli connection down enp3s0f0nmcli connection down enp4s0f0nmcli connection up bond0
cat /proc/net/bonding/bond0파일에서 확인
active-standby 모드로 활성화 확인
테스트 :
ifconfig enp3s0f0 down다운 후 업하고 아래 파일 확인해보면 활성화 인터페이스가 변경되어있음.

ifconfig 결과

작업 내용 설명 :
본딩 구성이 성공적으로 적용되었음을 확인할 수 있습니다. nmcli를 사용하여 본딩 인터페이스 bond0를 만들고, enp3s0f0와 enp4s0f0를 이 인터페이스의 슬레이브(slave)로 추가한 후, 본딩 인터페이스에 IP 설정을 적용했습니다. 이 과정에서 nmcli 명령어를 사용하여 네트워크 설정을 변경하고 네트워크 연결을 관리했습니다.
/proc/net/bonding/bond0 파일의 내용을 보면, 본딩 모드가 "fault-tolerance (active-backup)"로 설정되어 있으며, 현재 활성 슬레이브가 enp3s0f0로 되어 있음을 확인할 수 있습니다. 또한 두 슬레이브 인터페이스 모두 연결 상태가 "up"이며, 속도와 듀플렉스 설정이 모두 적절하게 적용되었습니다.
이 설정은 서버의 네트워크 연결에 대한 장애 허용(fault tolerance)을 제공하며, 하나의 인터페이스에 문제가 발생할 경우 다른 인터페이스가 네트워크 트래픽을 처리하게 됩니다. 이를 통해 네트워크의 신뢰성과 가용성이 향상됩니다.
기대 효과 :
- 고가용성 및 장애 허용성(Fault Tolerance):
두 개의 네트워크 인터페이스를 하나의 본딩 인터페이스로 묶음으로써, 한 인터페이스에 문제가 발생했을 때 다른 인터페이스가 네트워크 트래픽을 인계 받아 서비스의 중단 없이 네트워크 연결을 유지할 수 있습니다. 이는 서버의 신뢰성을 높여주며, 중요한 서비스를 운영하는 서버에 특히 유용합니다.- 트래픽 분산(Load Balancing):
특정 본딩 모드를 사용할 경우(예: round-robin), 본딩 인터페이스에 연결된 여러 네트워크 인터페이스 간에 트래픽을 분산시켜 네트워크의 부하를 줄일 수 있습니다. 이를 통해 네트워크 성능을 최적화하고 대역폭을 효율적으로 사용할 수 있습니다.- 관리의 단순화:
여러 네트워크 인터페이스를 하나의 논리적 인터페이스로 관리함으로써 네트워크 설정과 관리가 단순화됩니다. 이는 네트워크 관리자가 네트워크 설정을 좀 더 쉽게 관리할 수 있게 해줍니다.- 네트워크 구성의 유연성:
다양한 본딩 모드를 지원함으로써, 네트워크의 요구사항과 환경에 맞게 본딩 구성을 최적화할 수 있습니다. 예를 들어, 일부 본딩 모드는 네트워크의 성능을 극대화하는 반면, 다른 모드는 고가용성을 제공합니다.
--> 이러한 효과들은 서버의 네트워크 인프라를 보다 견고하고 안정적으로 만들어, 트래픽 부하가 많거나 지속적인 네트워크 연결이 필요한 비즈니스 환경에 매우 유리합니다.