MAC 주소 변경의 필요성

MAC 주소(Media Access Control address)는 네트워크 장치를 식별하는 물리적 주소다. 네트워크 인터페이스 카드(NIC)가 제조될 때 하드웨어에 할당되며, 일반적으로는 변경하지 않는다.

하지만 보안, 프라이버시 보호, 테스트 환경 구성 등의 이유로 MAC 주소를 일시적으로 바꿔야 할 때가 있다. 특히 공용 와이파이를 사용하거나 네트워크 추적을 줄이고 싶을 때 유용하다. Ubuntu를 포함한 대부분의 리눅스 배포판에서는 소프트웨어적으로 MAC 주소를 변경할 수 있으며, 이 글에서는 Ubuntu에서 MAC 주소를 확인하고 macchanger로 변경하는 방법을 정리한다.

MAC 주소의 구조와 역할

MAC 주소는 네트워크 인터페이스 카드(NIC)에 할당된 고유 식별자다. OSI 모델의 데이터 링크 계층(Layer 2)에서 작동하며, 같은 네트워크 세그먼트 안에서 장치를 구분할 때 사용된다. 길이는 48비트(6바이트)이며 보통 XX:XX:XX:XX:XX:XX 형식의 16진수로 표시한다. 이 주소 체계는 IEEE(Institute of Electrical and Electronics Engineers)가 관리한다.

MAC 주소는 두 부분으로 나뉜다. 처음 3바이트(24비트)는 제조업체를 나타내는 OUI(Organizationally Unique Identifier)이며, IEEE가 각 제조업체에 고유하게 할당한다. 나머지 3바이트(24비트)는 제조업체가 각 장치에 부여하는 고유 번호다. 이론상 하나의 OUI로 약 1,677만 개의 고유한 MAC 주소를 만들 수 있다. 예를 들어 00:1A:2B:3C:4D:5E에서 00:1A:2B는 제조업체를, 3C:4D:5E는 해당 제조업체 내 장치의 고유 번호를 뜻한다.

MAC 주소 확인하기

MAC 주소를 변경하기 전에 현재 주소를 확인하는 것이 중요하며, Ubuntu에서는 ip 명령어를 사용하여 네트워크 인터페이스의 MAC 주소를 조회할 수 있다. 이 명령어는 과거에 사용되던 ifconfig 명령어를 대체하는 현대적인 네트워크 관리 도구로, 더 많은 기능과 정확한 정보를 제공한다.

시스템의 모든 네트워크 인터페이스 정보를 확인하려면 다음 명령어를 사용한다.

ip link show

특정 인터페이스의 정보만 확인하려면 dev 옵션과 함께 인터페이스명을 지정한다.

ip link show dev <인터페이스명>

명령어 실행 결과는 다음과 같이 표시되며, 네트워크 인터페이스의 상태, MTU, 큐 길이 등의 정보와 함께 MAC 주소가 나타난다.

2: wlp0s20f3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

여기서 link/ether 다음에 나오는 00:11:22:33:44:55가 현재 MAC 주소이며, brd ff:ff:ff:ff:ff:ff는 브로드캐스트 주소를 나타낸다. 인터페이스명 wlp0s20f3는 Ubuntu의 예측 가능한 네트워크 인터페이스 명명 규칙에 따라 생성된 것으로, wl은 무선(wireless), p0s20f3는 PCI 버스 위치를 나타낸다.

MAC 주소 변경 방법: macchanger 사용하기

macchanger는 리눅스에서 MAC 주소를 변경할 때 많이 사용하는 명령줄 도구다. 무작위 주소를 생성하거나 특정 주소를 지정할 수 있고, 현재 MAC 주소와 제조업체 정보도 확인할 수 있다.

1. macchanger 설치하기

Ubuntu의 공식 저장소에서 macchanger를 설치할 수 있다.

sudo apt update
sudo apt install macchanger

설치 중 Automatically change MAC address at boot?라는 debconf 설정 화면이 나타난다. 이 옵션을 활성화하면 시스템이 부팅될 때마다 MAC 주소가 무작위 값으로 바뀐다. 보안과 프라이버시가 중요한 환경이라면 Yes, 일반적인 사용 환경이라면 No를 선택하는 편이 보통 적절하다. 설치 후에는 /etc/network/if-pre-up.d/ 디렉토리의 스크립트를 수정해 이 설정을 바꿀 수 있다.

2. MAC 주소 변경하기

MAC 주소를 변경할 때는 보통 세 단계를 거친다. 먼저 네트워크 인터페이스를 비활성화하고, 주소를 변경한 뒤, 다시 활성화한다. 인터페이스가 활성화된 상태에서 MAC 주소를 바꾸면 연결이 불안정해지거나 오류가 발생할 수 있으므로 이 순서를 지키는 것이 안전하다.

2.1 네트워크 인터페이스 비활성화

MAC 주소를 변경하기 전에 먼저 해당 네트워크 인터페이스를 비활성화한다. 이 과정에서 인터페이스가 내려가며 네트워크 통신이 중단된다.

sudo ip link set <인터페이스명> down

예를 들어 무선 인터페이스 wlp0s20f3를 비활성화하려면 다음과 같이 실행한다.

sudo ip link set wlp0s20f3 down

이 명령어를 실행하면 해당 인터페이스를 통한 모든 네트워크 연결이 즉시 끊어지므로, 원격 SSH 세션을 통해 작업하는 경우 변경하려는 인터페이스가 SSH 연결에 사용 중인지 반드시 확인해야 한다.

2.2 MAC 주소 변경

인터페이스가 비활성화된 상태에서 macchanger로 MAC 주소를 변경한다. 완전히 무작위 주소를 생성할 수도 있고, 특정 주소를 직접 지정할 수도 있다.

완전히 무작위 MAC 주소로 변경:

sudo macchanger -r <인터페이스명>

이 옵션은 OUI를 포함한 전체 48비트를 무작위로 생성하므로 실제로 존재하지 않는 제조업체의 주소가 생성될 수 있으며, 일부 네트워크에서는 이를 의심스러운 활동으로 간주할 수 있다.

특정 MAC 주소로 변경:

sudo macchanger -m XX:XX:XX:XX:XX:XX <인터페이스명>

예를 들어 00:11:22:33:44:55로 변경하려면 다음과 같이 실행한다.

sudo macchanger -m 00:11:22:33:44:55 wlp0s20f3

명령어를 실행하면 macchanger가 원래 MAC 주소와 새 MAC 주소를 함께 표시하므로 변경 여부를 바로 확인할 수 있다.

2.3 네트워크 인터페이스 활성화

MAC 주소 변경이 끝나면 네트워크 인터페이스를 다시 활성화한다.

sudo ip link set <인터페이스명> up

인터페이스가 활성화되면 DHCP 클라이언트가 자동으로 실행되어 IP 주소를 요청하고, 새로운 MAC 주소로 네트워크에 접속하게 된다. 무선 네트워크의 경우 NetworkManager나 wpa_supplicant가 자동으로 재연결을 시도하므로 별도의 설정 없이도 네트워크 연결이 복구된다.

3. macchanger 추가 옵션

macchanger는 다양한 사용 사례를 지원하기 위해 여러 옵션을 제공하며, 각 옵션은 특정 목적과 보안 수준에 맞게 MAC 주소를 변경하거나 조회할 수 있다.

옵션설명예시
-r완전히 무작위 MAC 주소sudo macchanger -r wlp0s20f3
-a같은 제조사의 무작위 MACsudo macchanger -a wlp0s20f3
-A같은 유형의 무작위 MACsudo macchanger -A wlp0s20f3
-p원래 MAC 주소로 복원sudo macchanger -p wlp0s20f3
-m특정 MAC 주소로 설정sudo macchanger -m 00:11:22:33:44:55 wlp0s20f3
-sMAC 주소 정보 조회sudo macchanger -s wlp0s20f3

옵션 상세 설명:

  • -r (완전히 무작위): OUI를 포함한 전체 48비트를 무작위로 생성하여 실제 제조업체와 관계없는 주소를 만들며, 가장 높은 익명성을 제공하지만 일부 네트워크에서 비정상 장치로 인식될 수 있다.
  • -a (같은 제조사의 무작위): 현재 MAC 주소의 OUI를 유지하면서 나머지 24비트만 무작위로 변경하므로, 같은 제조업체의 다른 장치처럼 보이게 하여 네트워크 관리자의 의심을 덜 받을 수 있다.
  • -A (같은 유형의 무작위): 네트워크 인터페이스 유형(유선, 무선 등)에 적합한 OUI를 선택하여 무작위 MAC 주소를 생성하므로, 유선 인터페이스는 유선 장치의 OUI를, 무선 인터페이스는 무선 장치의 OUI를 사용한다.
  • -p (원래 주소로 복원): 하드웨어에 설정된 원래 MAC 주소(Permanent MAC address)로 되돌리며, macchanger가 변경 전 주소를 자동으로 기록하므로 쉽게 복원할 수 있다.
  • -m (특정 주소로 설정): 사용자가 지정한 특정 MAC 주소로 변경하며, 테스트 환경이나 특정 장치를 모방해야 하는 경우에 유용하다.
  • -s (정보 조회): 현재 MAC 주소, 원래 MAC 주소, 제조업체 정보를 표시하며 실제로 주소를 변경하지 않고 정보만 확인할 수 있다.

주의사항

MAC 주소 변경은 합법적인 보안 및 프라이버시 목적으로 사용되어야 하며, 몇 가지 중요한 주의사항을 숙지해야 한다.

법적 고려사항: MAC 주소 변경 자체는 대부분의 국가에서 합법이다. 하지만 네트워크 접근 제어를 우회하거나 다른 사람의 장치로 위장해 무단으로 네트워크에 접속하는 행위는 불법이며, 컴퓨터 범죄로 간주될 수 있다. 공용 와이파이의 시간 제한이나 MAC 필터링을 무단으로 우회하는 행위도 서비스 약관 위반 또는 불법일 수 있으므로 주의해야 한다.

네트워크 충돌: 같은 네트워크에 이미 존재하는 MAC 주소로 변경하면 IP 주소 충돌이 발생할 수 있다. 이 경우 두 장치 모두 정상적으로 연결되지 않을 수 있고, 네트워크 관리자가 이를 감지해 보안 경고를 발생시킬 수도 있다. 완전히 무작위 MAC 주소를 생성하거나 실제로 사용되지 않는 주소를 선택하는 것이 안전하다.

재부팅 시 초기화: macchanger로 변경한 MAC 주소는 소프트웨어 수준의 변경이다. 따라서 시스템을 재부팅하면 하드웨어의 원래 MAC 주소로 돌아간다. 영구적으로 적용하려면 NetworkManager 설정이나 systemd 서비스를 이용해 부팅 시 자동으로 변경되도록 구성해야 한다.

원격 연결 주의: SSH나 원격 데스크톱을 통해 원격으로 시스템에 접속한 상태에서 MAC 주소를 변경하면 네트워크 연결이 끊어질 수 있으므로, 물리적으로 접근 가능한 상태에서 작업하거나 다른 네트워크 인터페이스를 통해 백업 연결을 유지하는 것이 안전하다.

결론

MAC 주소 변경은 공용 와이파이에서 추적을 줄이거나 네트워크 테스트 환경을 만들 때 유용하다. Ubuntu에서는 macchanger를 사용해 몇 가지 명령어만으로 MAC 주소를 바꿀 수 있다. 다만 법적 문제와 네트워크 충돌 가능성을 항상 고려해야 하며, 네트워크 정책과 서비스 약관을 확인한 뒤 합법적인 목적에서만 사용해야 한다.