반응형

크로스 컴파일 환경: Ubuntu 12.04 (64-bit)

OpenWRT version: 14.07 (Barrier Breaker)

Tested device: Buffalo WZR-600DHP



<문제 발생 직전까지의 상황>

OpenWRT 액세스 포인트(AP)를 맨 처음 설치하고 나서 유선랜(ethernet)을 연결하면 DHCP를 통해서 자동으로 IP 주소(IPv4)를 받는다. 웹 인터페이스(LuCI)에 들어가서 무선랜(wlan0)을 활성화시키면, 기기들이 와이파이를 통해서도 DHCP 주소를 자동으로 할당받아서 연결할 수 있다.


여기서 나는 몇몇 기기들에 대해서 항상 같은 IP주소가 할당되도록 예약(static DHCP lease)을 하고 싶었고, 동시에 향후 연결될 수많은 다른 기기들을 위해서 dynamic DHCP 주소 할당 또한 여전히 작동되도록 하고 싶었다.

이것은 웬만한 AP에서는 모두 지원하는 기능이다. LuCI 웹 인터페이스에서는 Network > DHCP and DNS 메뉴를 누르면 하단에 "Static Leases" 섹션이 있고, 여기에 이름과 맥주소, 원하는 IP주소를 써서 설정할 수 있다.




<문제가 발생하기 시작했던 상황>

LuCI 웹 인터페이스 상의 Static Leases에 입력한 정보는 /etc/config/dhcp 파일에 기록된다. 나는 실험공간에 있는 약 20개의 기기들에게 모두 static DHCP lease를 통해서 IP주소를 고정하고 싶었고, 일일이 입력하기 귀찮아서 AP에 SSH로 접속해서 텍스트 파일로 설정을 붙여넣기 했다. (그리고 향후 실험을 위해 수시로 AP를 포맷하고 재설치해야 하기 때문에 가능하면 재설치 후 빠르게 설정할 수 있는 방법이 필요했다.)


그런데 /etc/config/dhcp 파일에 텍스트 파일로 설정을 붙여넣고 나면, 그 직후에는 잘 작동하지만, 이상하게 재부팅을 하고 나면 DHCP 서버가 작동을 하지 않는 것이었다. 즉, AP를 재부팅하고 나서 노트북에서 랜선을 꽂거나 와이파이 연결 시도를 해도 연결 시도만 하고, IP 주소를 할당받는 과정에서 더이상 진행을 못하는 것이었다. 이 증상은 스마트폰에서도 똑같이 일어났다.




<삽질과 예상밖의 현상>

*혹시 IPv6 설정 때문에 오류를 일으키는 건가 싶어서 액세스 포인트의 모든 IPv6 설정을 비활성화시켜 보았다. 여전히 DHCP 주소 할당이 되지 않았다.


*접속하는 클라이언트 머신(e.g. 노트북, 스마트폰 등)에서도 IPv6 기능이 있어서 그런 것 아닐까 하는 생각에 클라이언트 기기의 모든 IPv6 설정도 비활성화시켰지만, 여전히 문제가 해결되지 않았다.


*OpenWRT 크로스 컴파일 환경에 내가 코드를 약간 수정한 것이 생각나서, 내 코드가 전혀 들어가지 않은 깨끗한 최신 크로스컴파일 환경을 새로 다운로드받고 빌드해서 설치해 보았다. 여전히 되지 않았다. ㅠㅠ


*일단 액세스 포인트에 접속은 해야 돼서, 클라이언트 머신(노트북)에서 아예 고정IP를 설정하고 랜선을 꽂았더니 놀랍게도 액세스 포인트에 접근도 잘 되고 인터넷도 잘 되었다. 

  원래 DHCP 서버에 관계 없이 클라이언트에서 고정IP 주소를 스스로 설정(단, 액세스 포인트에서 현재 다른 기기에 할당하지 않은 빈 주소여야 함)해서 접속하는 방법은 다른 모든 액세스 포인트에서도 통하는 방법이다. 하지만 20개가 넘는 클라이언트 기기들을 모두 고정IP로 설정할 수는 없는 일이다.




<결국 발견한 문제의 원인 -_- >

/etc/config/dhcp에 붙여넣었던 텍스트 파일을 자세히 살펴본 결과, 같은 "이름-MAC주소-IP주소" 정보가 두 번씩 중복으로 적혀 있었다중복으로 적혀 있던 항목을 지우고 AP를 재부팅했더니 정상적으로 작동했다! ㅠ_ㅠ

다시 말해서, /etc/config/dhcp 파일에 static DHCP lease 정보를 하나라도 중복되게 입력하면 DHCP 서버가 정상적으로 작동하지 않는 것이다.



*결론: 텍스트 파일로 설정을 저장할 때에는 오타 또는 중복으로 복사된 내용이 없는지 꼼꼼히 확인해야 예상밖의 문제 발생을 방지할 수 있다. ㅠㅠ



반응형
블로그 이미지

Bryan_

,