네트워크 인터페이스에 대해 (ifconfig) + 본딩 작업

최동민·2023년 11월 11일
1

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

  1. 물리적 네트워크 인터페이스 (예: enp3s0f0, enp4s0f0)
    생성: 이들은 서버의 물리적 네트워크 카드에 해당합니다. 서버에 네트워크 카드가 장착되면, 운영 체제는 이를 인식하고 네트워크 인터페이스로 구성합니다.
    역할: 물리적 네트워크 인터페이스는 외부 네트워크, 인터넷 또는 로컬 네트워크와의 연결을 담당합니다. 이를 통해 서버는 외부로 데이터를 송수신할 수 있습니다.
  2. 가상 네트워크 인터페이스 (예: docker0)
    생성: 가상 네트워크 인터페이스는 특정 소프트웨어에 의해 생성됩니다. 예를 들어, Docker와 같은 컨테이너화 도구는 가상 네트워크 인터페이스를 만들어 컨테이너 간 통신을 가능하게 합니다.
    역할: 이 인터페이스는 주로 가상화 환경 내부 또는 서버의 다른 프로세스 간 통신을 위해 사용됩니다. 예를 들어, docker0는 Docker 컨테이너들이 서로 통신하고 호스트 시스템과 통신하는 데 사용됩니다.
  3. 로컬 루프백 인터페이스 (예: 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 서브넷 내의 모든 호스트가 수신합니다.

네트워크 본딩 (Network Bonding)

네트워크 본딩은 여러개의 네트워크 인터페이스를 하나의 인터페이스로 묶는 기술이다.
두 개 이상의 네트워크 인터페이스를 하나로 묶어 대역폭(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'으로 나타남. 이는 본딩된 네트워크 인터페이스가 현재 활성화되지 않았거나 연결이 되어 있지 않음을 의미한다.

  1. 슬레이브 인터페이스 확인
    본딩에 사용되는 슬레이브 인터페이스(enp3s0f0 및 enp4s0f0)의 구성 파일을 다시 확인하세요. 이 파일들이 본딩 인터페이스를 올바르게 참조하고 있는지 확인하고, 네트워크 설정이 올바르게 적용되었는지 확인합니다.
  2. 네트워크 인터페이스 상태 확인
    각 슬레이브 인터페이스의 상태를 확인합니다. ip link show 또는 ifconfig 명령을 사용하여 각 인터페이스가 활성화되어 있는지 확인합니다.

여러 시도를 해봤지만 bond0이 활성화되지 않음.

nmcli 방식으로 변환

출처
영상

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 bond0
  • nmcli 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/24
  • nmcli connection modify bond0 ipv4.gateway 192.168.10.1
  • nmcli connection modify bond0 ipv4.method manual

기존에 인터페이스는 Down 생성한 인터페이스는 Up을 적용

  • nmcli connection down enp3s0f0
  • nmcli connection down enp4s0f0
  • nmcli 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), 본딩 인터페이스에 연결된 여러 네트워크 인터페이스 간에 트래픽을 분산시켜 네트워크의 부하를 줄일 수 있습니다. 이를 통해 네트워크 성능을 최적화하고 대역폭을 효율적으로 사용할 수 있습니다.
  • 관리의 단순화:
    여러 네트워크 인터페이스를 하나의 논리적 인터페이스로 관리함으로써 네트워크 설정과 관리가 단순화됩니다. 이는 네트워크 관리자가 네트워크 설정을 좀 더 쉽게 관리할 수 있게 해줍니다.
  • 네트워크 구성의 유연성:
    다양한 본딩 모드를 지원함으로써, 네트워크의 요구사항과 환경에 맞게 본딩 구성을 최적화할 수 있습니다. 예를 들어, 일부 본딩 모드는 네트워크의 성능을 극대화하는 반면, 다른 모드는 고가용성을 제공합니다.
    --> 이러한 효과들은 서버의 네트워크 인프라를 보다 견고하고 안정적으로 만들어, 트래픽 부하가 많거나 지속적인 네트워크 연결이 필요한 비즈니스 환경에 매우 유리합니다.
profile
코드를 두드리면 문이 열린다

0개의 댓글