소개
이 실습에서는 iproute2 제품군의 ip 명령어를 사용하여 Linux 시스템에서 가상 LAN(VLAN) 인터페이스를 구성하는 방법을 배웁니다. 단일 물리적 인터페이스에서 논리적으로 분리된 네트워크를 생성하는 실습 경험을 쌓게 되며, 이는 네트워크 관리 및 분할에 필수적인 기술입니다. 이 과정을 통해 추가적인 물리적 하드웨어 없이 네트워크 트래픽을 격리하고 보안 및 성능을 향상시킬 수 있습니다.
먼저 시스템을 준비하는 것으로 시작합니다. 여기에는 필요한 vlan 사용자 공간 유틸리티를 설치하고 VLAN 태깅을 활성화하기 위해 802.1q 커널 모듈을 로드하는 작업이 포함됩니다. 초기 설정 후, 기본 네트워크 인터페이스를 식별하고 VLAN 10 및 VLAN 20 에 대한 두 개의 새 가상 인터페이스를 생성한 다음 각 인터페이스에 고정 IP 주소를 할당합니다. 마지막으로 ip a 명령어를 사용하여 VLAN 인터페이스가 성공적으로 생성되었고 시스템에서 활성화되었는지 확인합니다.
VLAN 유틸리티 설치 및 802.1q 커널 모듈 로드
이 단계에서는 VLAN 구성을 위해 Linux 환경을 준비합니다. 여기에는 필요한 사용자 공간 도구를 설치하고 필요한 커널 모듈을 로드하는 두 가지 주요 작업이 포함됩니다.
**가상 LAN(VLAN)**을 사용하면 동일한 물리적 네트워크 인프라에서 논리적으로 분리된 네트워크를 생성할 수 있습니다. Linux 에서 VLAN 을 관리하려면 명령줄 도구를 제공하는 vlan 패키지가 필요합니다. 또한 커널은 VLAN 을 위한 IEEE 802.1Q 네트워킹 표준의 이름을 딴 8021q 커널 모듈을 통해 활성화되는 VLAN 태그가 지정된 트래픽을 처리해야 합니다.
먼저 패키지 목록을 최신 상태로 업데이트한 다음 vlan 패키지를 설치합니다. 모든 명령은 터미널에서 실행됩니다.
시스템에서 패키지 인덱스를 업데이트합니다.
sudo apt updatevlan패키지를 설치합니다.-y플래그는 설치를 자동으로 확인합니다.sudo apt install -y vlan패키지가 설치되고 있음을 나타내는 출력이 표시되어야 합니다.
Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: vlan 0 upgraded, 1 newly installed, 0 to remove and XX not upgraded. Need to get XX.X kB of archives. After this operation, XXX kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 vlan X.X-X [XX.X kB] Fetched XX.X kB in Xs (XX.X kB/s) Selecting previously unselected package vlan. (Reading database ... XXXXXX files and directories currently installed.) Preparing to unpack .../vlan_X.X-X_amd64.deb ... Unpacking vlan (X.X-X) ... Setting up vlan (X.X-X) ...
이제 도구가 설치되었으므로 8021q 커널 모듈을 로드해야 합니다. 이 모듈은 Linux 커널이 VLAN 태그가 있는 네트워크 패킷을 처리할 수 있도록 합니다.
modprobe명령을 사용하여8021q모듈을 로드합니다.sudo modprobe 8021q이 명령은 성공하면 일반적으로 출력이 없습니다.
모듈이 올바르게 로드되었는지 확인하려면
lsmod로 모든 로드된 모듈을 나열하고grep을 사용하여8021q에 대한 출력을 필터링할 수 있습니다.lsmod | grep 8021q출력에는
8021q모듈이 표시되어야 하며, 이는 커널에서 활성화되었음을 확인합니다.8021q 36864 0 garp 20480 1 8021q mrp 20480 1 8021q
이제 시스템이 VLAN 구성을 위한 준비를 마쳤습니다. 다음 단계에서는 네트워크 인터페이스를 식별하고 VLAN 생성을 시작합니다.
주 네트워크 인터페이스 식별
이 단계에서는 시스템의 기본 네트워크 인터페이스 이름을 식별합니다. VLAN 인터페이스는 물리적 네트워크 인터페이스에 논리적으로 연결된 가상 인터페이스입니다. 따라서 VLAN 을 생성하기 전에 이 물리적 "부모" 인터페이스의 이름을 먼저 알아야 합니다.
Linux 에서 네트워크 구성을 위한 최신 표준인 ip 명령어를 사용합니다. 특히 ip a (또는 ip addr) 명령어는 모든 네트워크 인터페이스에 대한 정보를 표시합니다.
터미널을 엽니다. 현재 작업 디렉토리는
~/project입니다.모든 네트워크 인터페이스와 해당 구성을 나열하려면 다음 명령어를 입력하고 Enter 키를 누릅니다.
ip a
시스템의 모든 네트워크 인터페이스 목록이 표시됩니다. 활성화되어 있고 IP 주소가 할당된 인터페이스를 찾으십시오. 로컬 루프백 장치인 lo 인터페이스는 무시해도 됩니다. 기본 인터페이스 이름은 일반적으로 en(이더넷의 경우) 또는 eth로 시작합니다.
다음은 출력 예시입니다. 이 예시에서 eth0은 기본 물리적 인터페이스입니다.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff
altname enp0s5
altname ens5
inet 172.16.50.186/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159924sec preferred_lft 1892159924sec
inet6 fe80::216:3eff:fe00:406/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:f2:70:14:b5 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
위 출력에서 다음 사항을 관찰하십시오.
eth0: 이것은 인터페이스의 이름입니다. 이 이름을 기록해 두십시오. 다음 단계에서 필요합니다. 인터페이스 이름은 다를 수 있습니다 (예:ens33).state UP: 인터페이스가 활성화되었음을 나타냅니다.inet 172.16.50.186/24: 이것은 인터페이스에 할당된 IPv4 주소입니다.
기본 네트워크 인터페이스를 식별했으므로 이제 해당 인터페이스에 VLAN 인터페이스를 생성할 준비가 되었습니다.
VLAN 10 및 VLAN 20 용 가상 인터페이스 생성
이 단계에서는 ip 명령어를 사용하여 두 개의 새로운 가상 네트워크 인터페이스를 생성합니다. 각 인터페이스는 특정 VLAN ID 와 연결되어, 호스트를 두 개의 다른 논리 네트워크인 VLAN 10 및 VLAN 20 에 효과적으로 연결합니다. 이 새로운 인터페이스들은 이전 단계에서 식별한 기본 물리적 인터페이스에 연결됩니다.
VLAN 인터페이스를 생성하는 명령어는 ip link add입니다. 명령어 구조를 살펴보겠습니다.
sudo ip link add: 새로운 네트워크 링크 (인터페이스) 를 추가하는 기본 명령어입니다.link <physical_interface>: 부모 물리적 인터페이스를 지정합니다.<physical_interface>를 2 단계에서 찾은 이름 (예:eth0) 으로 바꾸십시오.name <vlan_interface_name>: 새로운 가상 인터페이스의 이름을 정의합니다. 일반적인 규칙은<physical_interface>.<vlan_id>이며, 예를 들어eth0.10과 같습니다.type vlan: 새로운 인터페이스가 VLAN 유형임을 지정합니다.id <vlan_id>: 숫자 VLAN ID(또는 태그) 를 할당합니다.
이제 인터페이스를 생성해 보겠습니다. 실제 물리적 인터페이스 이름이 다른 경우 eth0을 해당 이름으로 바꾸는 것을 잊지 마십시오.
먼저 VLAN 10 용 가상 인터페이스를 생성합니다. 이 인터페이스의 이름은
eth0.10입니다.sudo ip link add link eth0 name eth0.10 type vlan id 10다음으로 VLAN 20 용 가상 인터페이스를 생성하고 이름을
eth0.20으로 지정합니다.sudo ip link add link eth0 name eth0.20 type vlan id 20
이 명령어들이 성공적으로 실행되면 아무런 출력이 없습니다. 이제 논리적 인터페이스를 생성했지만 아직 활성화되거나 IP 주소가 구성되지 않았습니다. 다음 단계에서 이를 처리합니다.
IP 주소 할당 및 VLAN 인터페이스 활성화
이 단계에서는 새로 생성된 VLAN 인터페이스를 온라인 상태로 만들고 IP 주소를 할당합니다. 생성 후 네트워크 인터페이스는 기본적으로 DOWN 상태이며, 이는 비활성화되어 트래픽을 송수신할 수 없음을 의미합니다. 네트워크 통신을 위해 인터페이스를 활성화하고 네트워크 계층 주소를 제공해야 합니다.
인터페이스를 활성화하기 위해 ip link set up 명령어를 사용하고, IP 주소를 할당하기 위해 ip addr add를 사용합니다.
먼저 VLAN 인터페이스를 활성화하거나 "up" 상태로 만들어야 합니다. 이렇게 하면 네트워크 통신에 참여할 수 있습니다. 터미널에서 다음 명령어를 실행하십시오. 인터페이스 이름이
eth0이 아닌 경우 해당 이름을 사용하십시오.eth0.10인터페이스 활성화:sudo ip link set dev eth0.10 upeth0.20인터페이스 활성화:sudo ip link set dev eth0.20 up이 명령어들이 성공하면 아무런 출력이 없습니다.
이제 인터페이스가 활성화되었으므로 각 인터페이스에 IP 주소를 할당할 수 있습니다. VLAN 10 에는
192.168.10.0/24네트워크의 주소를, VLAN 20 에는192.168.20.0/24네트워크의 주소를 할당합니다./24는 서브넷 마스크255.255.255.0에 대한 CIDR 표기법입니다.eth0.10인터페이스에192.168.10.10/24할당:sudo ip addr add 192.168.10.10/24 dev eth0.10eth0.20인터페이스에192.168.20.10/24할당:sudo ip addr add 192.168.20.10/24 dev eth0.20
이제 VLAN 인터페이스가 현재 세션에 대해 완전히 구성되고 활성화되었습니다. 마지막 단계에서 전체 구성을 확인합니다.
ip a 명령어로 VLAN 인터페이스 구성 확인
이 마지막 단계에서는 VLAN 인터페이스가 성공적으로 생성, 활성화 및 올바른 IP 주소로 구성되었는지 확인합니다. ip a 명령어를 다시 실행하면 새 가상 인터페이스를 포함한 호스트의 전체 네트워크 구성을 볼 수 있습니다.
터미널에서
ip a명령어를 실행하여 모든 네트워크 인터페이스 정보를 표시합니다.ip a출력을 주의 깊게 검토합니다. 이제 물리적 인터페이스 및 루프백 인터페이스와 함께 새로 생성된 VLAN 인터페이스
eth0.10및eth0.20이 나열된 것을 볼 수 있어야 합니다.출력은 다음과 유사하게 표시됩니다.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff inet 172.16.50.186/24 metric 100 brd 172.16.50.255 scope global dynamic eth0 valid_lft 1892159924sec preferred_lft 1892159924sec 3: eth0.10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff inet 192.168.10.10/24 brd 192.168.10.255 scope global eth0.10 valid_lft forever preferred_lft forever 4: eth0.20@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:00:04:06 brd ff:ff:ff:ff:ff:ff inet 192.168.20.10/24 brd 192.168.20.255 scope global eth0.20 valid_lft forever preferred_lft forever
새 인터페이스에 대한 다음 주요 세부 정보를 관찰하십시오.
eth0.10@eth0및eth0.20@eth0: VLAN 인터페이스의 이름입니다.@eth0부분은eth0물리적 장치에 연결되어 있음을 명시적으로 보여줍니다.state UP: 두 인터페이스 모두 활성화되어 데이터를 전송할 준비가 되었음을 확인합니다.inet 192.168.10.10/24및inet 192.168.20.10/24: 이전 단계에서 할당한 IP 주소가 올바르게 구성되었습니다.
축하합니다! 단일 Linux 호스트를 두 개의 다른 VLAN 에 참여하도록 성공적으로 구성했습니다. 이는 서버가 단일 물리적 연결을 사용하여 여러 논리적 네트워크 세그먼트 간에 통신하는 방법을 보여줍니다.
영구 저장에 대한 참고 사항: 사용한 ip 명령어는 재부팅 시 손실되는 임시 구성을 생성합니다. 프로덕션 환경에서는 Netplan (/etc/netplan/*.yaml) 또는 이전 ifupdown 시스템 (/etc/network/interfaces) 에서 사용하는 파일과 같은 네트워크 구성 파일을 편집하여 이러한 변경 사항을 영구적으로 만들어야 합니다.
요약
이 실습에서는 ip 명령어를 사용하여 Linux 시스템에서 VLAN 인터페이스를 생성하고 구성하는 전체 과정을 배웠습니다. 사용자 공간 유틸리티를 위한 vlan 패키지를 설치하고 VLAN 태그 처리를 활성화하기 위해 8021q 커널 모듈을 로드하는 환경 준비부터 시작했습니다. 이 기초 단계는 시스템이 VLAN 트래픽을 이해하고 관리할 수 있도록 보장합니다.
초기 설정 후, VLAN 의 부모 역할을 할 기본 물리적 네트워크 인터페이스를 식별했습니다. 그런 다음 ip link 명령어를 사용하여 VLAN 10 용 인터페이스와 VLAN 20 용 인터페이스, 총 두 개의 별도 가상 인터페이스를 생성하고 이를 부모 인터페이스에 연결했습니다. 이러한 인터페이스를 기능하게 만들기 위해 각 인터페이스에 고유한 IP 주소를 할당하고 활성화했습니다. 마지막으로 ip a 명령어를 사용하여 새 VLAN 인터페이스가 성공적으로 생성되었고, 올바른 IP 주소로 구성되었으며, 네트워크에서 활성화되었는지 확인했습니다.



