본문 바로가기
쿤즈 Server/Linux

[Linux] CentOS 8 네트워크 본딩(bonding) 방법

by :)Koon 2021. 7. 13.

학생 시절에는 본딩에 대해서는 한 번도 생각해 본 적이 없습니다. 현재 내 Vmware 또는 Virtural Box의 Linux에서 로컬과 통신만 되면 됐었으니 말이죠. 하지만 실무에서 장비를 납품하게 되면 본딩이라는 작업을 해주게 됩니다.

이번 포스팅에서는 본딩에 대한 내용과 설정 방법에 대해서 알아보도록 하겠습니다.


본딩(bonding)이란 무엇인가

본딩은 간단히 이해하면 네트워크를 묶어서 하나의 네트워크로 연결하는 방법을 의미합니다. 보통 네트워크를 연결하기 위해서 랜카드 1개가 필요하고 여기에 랜선을 연결하여 네티워크 통신을 하도록 합니다.

 

만약 랜카드가 2개라면 두 개의 랜카드를 묶어서 하나의 랜카드처럼 사용할 수 있다는 말입니다. 그래서 둘 중 하나를 Active로 두고 나머지를 Stand by로 설정됩니다. 만약 하나의 랜카드가 문제가 생겨서 죽는 경우에 다른 랜카드가 자동으로 Active가 되어 동작하게 되는 것이죠.

 

참고로 랜카드는 NIC라 하여 Network Interface Card의 줄임말입니다.


본딩(bonding) 설정 방법

그럼 실제로 본딩 작업을 진행해 봐야겠죠? 작업은 Virtual Box든 Vmware든 상관없지만 저는 Vmware Workstation Player 16이 설치가 되어 있고 여기에 CentOS 8 Stream이 설치가 되어 있습니다.

우선 NIC를 연결하기 위해서 부팅된 Linux를 모두 종료시켜줘야 합니다. 그러고 나서 오른쪽 하단에 보시면 [Edit virtual machine settings]라는 버튼이 있습니다. 이를 클릭합니다.

Settings 화면에서 하단에 Add를 클릭해서 Network Adapter를 선택해주시면 하나의 NIC가 추가된 것을 확인하실 수 있습니다. 이 설정까지 완료되면 현재 Vmware 가상 pc에는 네트워크를 사용할 수 있는 랜카드가 2개 세팅이 된 것입니다. 이제 다시 컴퓨터를 켜보도록 하겠습니다.


Linux가 켜지면 네트워크 카드 세팅을 해야 합니다. 새로 입력된 랜카드 이름을 알기 위해서 아래 명령어를 입력합니다.

# ifconfig -a

기존에 설정되어 있는 NIC는 ens33번으로 설정되어 있으며 새롭게 추가된 NIC는 ens37로 설정되어 있습니다. 새로 추가한 NIC 카드는 IP를 부여할 필요 없이 본딩 작업을 할 예정입니다.


설정 파일 생성

우선 새로 추가한 NIC의 설정 파일과 본딩(bonding)할 설정 파일을 만들어 줍니다. 먼저 ens37의 설정 파일부터 만들어 줍니다. ens37은 ens33을 복사하셔서 사용해도 됩니다. 그리고 두 파일 모두 아래 내용을 추가해줍니다.

MASTER=bond0
SLAVE=yes
USERCTL=no

MASTER를 bond0로 둔 이유는 ens33, ens37에 IP를 설정하지 않고 bond0에 설정된 IP를 따르겠다는 것입니다. 즉 본딩을 구성할 장치의 이름입니다.

SLAVE는 본딩에 포함될 구성요소라는 의미입니다.

USERCTL은 사용자(일반) 계정으로 해당 장치를 컨트롤하지 못하도록 하기 위해서 no로 설정합니다.

기본적인 부분은 아무것도 건드리지 않았습니다. 가장 하단에 위 내용을 추가해준 것뿐입니다.

 

다음은 bonding 설정 파일을 만들어 줍니다. 파일 이름은 ifcfg-bond0입니다.

DEVICE=bond0
TYPE=Ethernet
NAME=bond0
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.150.100
PREFIX=24
GATEWAY=192.168.150.2
DNS1=168.126.63.1
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100 primary="

본딩 설정 파일이 완료되었다면 다음으로 진행합니다.


본딩인 bond0를 커널에 적용

설정 파일로 만든 bond0는 사실 실제 물리적인 네트워크 카드에 설정되는 파일이 아닙니다. 따라서 추가적으로 아래와 같은 내용을 설정해 줍니다.

# vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 mode=1 miimon=100

여기까지 설정이 되었다면 본딩 모듈을 사용하겠다는 의미로 아래 명령어를 실행합니다.

# modprobe bond0

설정파일 적용 후 서비스 재시작

모든 설정 파일을 재시작하기 위해서 Network 데몬을 재시작하도록 합니다.

# systemctl restart NetworkManager.service

재시작하고 난 이후에 ifconfig -a를 통해서 확인해보면 다음과 같습니다.

bond0에 ip가 새롭게 세팅되어 있고 ens33, ens37에는 ip가 세팅되어 있지 않습니다. 현재 본딩 구성을 확인하기 위해서 아래 명령어로 들여다볼 수 있습니다. 실시간 상태를 확인하기 위해서 watch와 함께 사용해 봅니다.

# watch -d -n 1 "cat /proc/net/bonding/bond0"

현재는 ens37번이 Active 되어 있는 상태입니다. 여기서 네트워크 카드가 ens37번이 빠지게 되면 ens33으로 자동으로 변경되게 됩니다. 이로써 본딩 작업이 끝나게 됩니다.

 

본딩 작업이 완료되면 하나의 IP에 두개의 네트워크 랜이 물려서 하나처럼 이용하게 되는 것입니다.


이번 포스팅에서는 리눅스에서 본딩이라는 것에 대해서 알아보고 실제 설정 파일을 통해서 본딩 작업을 진행해 보았습니다. 명령어와 설정 파일들을 가지고 작업을 하다 보니 vi편집기와 명령어들에 대해서 익숙하신 분들이라면 쉽게 작업이 가능하지면 그렇지 않다면 조금 어려운 작업이었을지도 모릅니다.

 

리눅스는 명령어로 모든 작업을 진행하기 때문에 사용하는 기본 명령어들은 알아두시면 엔지니어뿐만 아니라 개발자도 한 걸음 더 나아갈 수 있지 않을까 생각됩니다. 도움이 되셨으면 합니다. 이상입니다.

댓글