반응형
작성일: 2024년 2월 7일

 


장비는 1대 밖에 없는데, 여러 개의 Network node가 서로 다른 MAC address & IP address를 생성하여 Network packet을 만드는 테스트를 해보고 싶다면, 아래와 같이 따라하면 된다.

 

(Case A) 기본 Network Namespace에 가상 Port를 만들기

아래 예시는 3개의 서로 다른 MAC address를 가지는 가상 network interface를 생성하고, 각 가상 network interface에 IP address를 할당하고 ping test하는 것을 보여준다.

 

$ ip link add macvlan1 link enp7s0 type macvlan mode bridge

$ ip link add macvlan2 link enp7s0 type macvlan mode bridge

$ ip link add macvlan3 link enp7s0 type macvlan mode bridge

$ ifconfig macvlan1 10.1.4.11/24

$ ifconfig macvlan2 10.1.4.12/24

$ ifconfig macvlan3 10.1.4.13/24


##
## 위 명령을 수행한 장비의 외부에서 ping을 보내면서 MAC Address가 서로 다르게 보이는지 확인한다.
##
$ ping 10.1.4.11

$ ping 10.1.4.12

$ ping 10.1.4.13

 

 

(Case B)  새 Network Namespace를 만들고, 새로운 Network Namespace에 가상 Port를 만들기

(Case A)처럼 가상 Port를 구성하여 사용했을 때, IP Address를 여러 개 사용할 수 있기는 하지만

1개의 MAC Address에 여러 개 IP Address를 Binding하게 된다.

(가상 포트에서 출발한 IP packet이 enp7s0 물리 포트를 경유해서 다른 장비로 forward되는 경우, 다른 장비에서는 MAC address가 다 똑같이 보인다)

각 IP Address마다 MAC Address를 다르게 할당하도록 하고 싶다면, 각 가상 포트마다 Network namespace를 연결해주어야 한다.

긴 설명보다는 아래 예시를 보는 것이 이해가 빠를 것이다.

 

##  MACVLAN type의 가상 포트를 생성한다.
$  ip link   add macvlan1  link enp2s0  type macvlan  mode bridge

## Network namespace를 생성한다.
$  ip netns  add net1

## 가상 포트 macvlan1을 network namespace net1에 연결한다. (연결한다 = 포함시킨다)
$  ip link   set macvlan1  netns net1

## 가상 포트에 IP address를 설정한다.
$  ip netns  exec net1  ip address  add 10.10.1.222/24  dev macvlan1

## Network namespace 'net1' 내부에서 ping 테스트한다.
$  ip netns  exec net1  /usr/bin/ping 10.10.1.2

## 
## 위 테스트에서 확인할 사항:
##   - 10.10.1.2 장비에서 'arp table'을 확인했을 때, 10.10.1.222의 mac address가
##     enp2s0 포트의 mac address와 다르게 보인다면, 구성과 테스트는 성공 !!
##


##
## 테스트가 끝났으면 가상 포트(MACVLAN Port)를 삭제한다.
##
$  ip netns  exec net1  ip link del macvlan`

 

 


 

Linux OS에서 virtual networking을 제공하는 방식이 여러 가지가 있는데, 이론적인 내용은 아래 Web docs를 참고.

(RedHat 공식 문서)

https://developers.redhat.com/blog/2018/10/22/introduction-to-linux-interfaces-for-virtual-networking

 


 

+ Recent posts