이전 대화에서 말씀드린 것처럼 IEEE 802.11(Wi-Fi) 프로토콜 규격으로 인해 일반적인 L2 브리지(macvtap 포함)는 무선 공유기(AP)에서 MAC 주소 불일치로 패킷을 폐기합니다. 그럼에도 불구하고 KVM 가상머신이 wlp0s20f3 무선 인터페이스를 통해 외부 공유기의 DHCP로부터 직접 IP를 받아오게 만들려면 'Proxy ARP'와 'DHCP Relay'를 결합한 가짜 브리지(Fake Bridge)를 구성 해야 합니다. 이 방식은 가상머신의 MAC 주소를 호스트의 무선 MAC 주소 뒤로 숨기고, DHCP 요청과 ARP 통신을 호스트가 중계(Relay)하도록 강제하는 유일한 우회 방법입니다. 누락 없이 바로 사용할 수 있는 전체 구성 스크립트와 적용 방법을 제공합니다. 1. 필수 패키지 설치 ARP 패킷을 가로채서 라우팅을 자동 생성하는 parprouted 와 DHCP 요청을 외부로 넘겨주는 dhcrelay 가 필요합니다. Arch Linux 기준으로 설치합니다. Bash # dhcrelay를 포함하는 dhcp 패키지 설치 (공식 저장소) sudo pacman -S dhcp # parprouted 설치 (AUR 저장소) yay -S parprouted 2. 가짜 브리지 구동 쉘 스크립트 ( setup_wifi_bridge.sh ) 아래 코드를 setup_wifi_bridge.sh 파일로 저장하고 실행 권한( chmod +x setup_wifi_bridge.sh )을 부여한 뒤 root 권한으로 실행하십시오. 설정된 wlp0s20f3 환경 변수를 그대로 사용했습니다. Bash #!/bin/bash # 무선 인터페이스 이름 WIFI_IF="wlp0s20f3" # 가상머신이 연결될 내부 브리지 이름 BRIDGE_IF="br-wifi" # 외부 네트워크(201.40.61.x)의 게이트웨이 및 DHCP 서버 IP DHCP_SERVER="201.40.61.1" # 호스트 무선망 대역 중 사용하지 않는 끝자리 임의 IP BRIDGE_IP="201.40.61.254/24" echo "가상 브리지 생성 중..." ip link add name $BRIDGE_IF type bridge ip addr add $BRIDGE_IP dev $BRIDGE_IF ip link set $BRIDGE_IF up echo "IP 포워딩 및 Proxy ARP 커널 파라미터 활성화 중..." echo 1 > /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/conf/$WIFI_IF/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/$BRIDGE_IF/proxy_arp echo "기존 중계 데몬 종료 중..." killall parprouted 2>/dev/null killall dhcrelay 2>/dev/null sleep 1 echo "ARP 라우팅 중계(parprouted) 시작 중..." parprouted $WIFI_IF $BRIDGE_IF echo "DHCP 릴레이(dhcrelay) 시작 중..." dhcrelay -i $WIFI_IF -i $BRIDGE_IF $DHCP_SERVER echo "무선 가짜 브리지 구성이 완료되었습니다." 3. KVM (libvirt) 가상머신 네트워크 설정 스크립트 실행 후 br-wifi 인터페이스가 생성되었습니다. KVM 가상머신 설정(XML)을 열어 네트워크 인터페이스 부분을 아래와 같이 수정하여 방금 만든 br-wifi 에 직접 물리도록 지정합니다. Bash virsh edit 가상머신이름 XML <interface type='bridge'> <source bridge='br-wifi'/> <model type='virtio'/> </interface> 동작 원리 및 주의사항 가상머신이 켜지면서 DHCP DISCOVER 브로드캐스트를 날리면, 호스트의 dhcrelay 가 이를 낚아채어 유니캐스트로 변환한 뒤 wlp0s20f3 를 통해 201.40.61.1 (외부 DHCP 서버)로 넘깁니다. 외부에서 할당된 IP(예: 201.40.61.110 )로 통신을 시도할 때 발생하는 ARP 요청을 parprouted 가 가로채어 호스트의 무선 MAC( 04:ed:33:e1:1f:0e )으로 대신 응답합니다. 공유기 입장에서는 호스트 노트북이 여러 개의 IP를 사용하는 것처럼 보이게 되므로 무선 프로토콜의 MAC 차단 정책을 완벽히 회피할 수 있습니다.