반응형

Tested OS: Raspbian, Ubuntu 14.04.2 LTS (amd64), Ubuntu 11.04 (i386)

Wireless LAN card: TP-LINK TL-WN722N (chipset: Atheros ath9k_htc)


실험을 위한 애드혹 네트워크 구성을 하는 과정에서, /etc/network/interfaces 파일을 가이드라인에 맞게 고쳤는데도 애드혹 네트워크가 생성되지 않아서 원인을 찾던 중 하나를 발견했다. 사실 이것이 데비안 계열 리눅스에서 발생하는 문제인지, 아니면 ath9k_htc 칩셋에서 지원하지 못하는 것인지는 모르겠다.


일단 가이드라인대로 /etc/network/interfaces 파일을 설정하는 방법은 아래와 같다:


# 무선랜 인터페이스 이름이 "wlan0"일 경우로 가정

auto wlan0

iface wlan0 inet static

address 192.168.3.100  # 연결할 기기마다 1~254 사이의 아무 숫자나 겹치지 않게 정한다.

netmask 255.255.255.0

wireless-channel 11 주변 다른 무선랜 채널 상황을 고려해서 1,6,11 중에서 정한다. 

wireless-essid testAdhocNet # 가급적이면 하이픈(-) 없이, 영문과 숫자조합으로만...

wireless-mode ad-hoc


위와 같이 파일을 저장하고 나서,

만약 Ubuntu desktop을 쓰면서 network-manager 서비스가 실행중이라면 종료한다.

$ sudo service network-manager stop


그리고 네트워크 재시작을 한다.

$ sudo /etc/init.d/networking restart


이후 iwconfig 명령으로 무선랜 인터페이스에 대해서 아래와 같이 "Ad-Hoc" 모드로 나타나는지 확인한다.

$ iwconfig

lo        no wireless extensions.


eth0      no wireless extensions.


wlan0     IEEE 802.11bgn  ESSID:"testAdhocNet"  

          Mode:Ad-Hoc  Frequency:2.462 GHz  Cell: 8A:E1:09:41:AD:43   

          Tx-Power=16 dBm   

          Retry  long limit:7   RTS thr:off   Fragment thr:off

          Power Management:off


내 경우는 ESSID에 하이픈(-)을 2개 이상 넣고서 맨 처음 애드혹 네트워크 설정을 했더니 계속 Mode: Managed로 표시되는 문제가 있었다. 아직 정확한 원인은 모르겠다.

더 황당한 것은, 하이픈을 다 뺀 이름으로 애드혹 네트워크 생성을 성공하고 나서, 다시 하이픈이 2개 이상 들어간 ESSID로 바꿨더니, 그 후로는 하이픈이 들어간 이름으로도 애드혹 네트워크가 문제없이 생성되는 것이었다.


일단은 가장 안정적인 설정(하이픈이 없이 순수 영문과 숫자 조합으로만 ESSID 설정)으로 하는 것이 좋을 것 같다.



반응형
블로그 이미지

Bryan_

,
반응형

<테스트한 환경>

OS: Ubuntu 11.04 Desktop (32bit, kernel 2.6.38-8-generic)

네트워크 인터페이스: TP-LINK TL-WN722N (802.11b/g/n)



연구실험 목적으로 와이파이 무선 애드혹 네트워크를 구성해서 쓰면서 유난히 연결이 안되는 경우가 자주 있었는데, 경험을 바탕으로 몇 가지 원인을 나열해 보고자 한다.



(1) Ubuntu desktop의 Network Manager 서비스와 /etc/network/interfaces 파일 간의 설정 불일치


고정IP와 채널 설정 등 가장 확실하게 설정할 수 있는 방법은 우분투(Ubuntu)를 기준으로 /etc/network/interfaces 파일을 수정하는 것이다. 그런데 Ubuntu desktop에서 쓰는 서비스인 network-manager는 /etc/network/interfaces 파일을 참고하지 않고 별도로 설정을 보관한다. 즉, network manager에서 그래픽 유저 인터페이스(GUI)를 이용해서 설정을 변경하더라도 /etc/network/interfaces 파일에 반영되지는 않는다.

반대로 /etc/network/interfaces 파일을 수정하면 network-manager의 상태 메세지가 그 변경 내역을 반영하는 것 같지만, 별로 신뢰가 가지 않는다. 가끔 network-manager가 오작동을 하면서 시스템 전체가 다운되는(커널 패닉; kernel panic) 현상도 겪었다.


개인적으로는 network-manger 서비스를 삭제해 버리고, 오직 /etc/network/interfaces 파일을 통해서만 모든 네트워크 설정을 하는 것을 추천한다. 그래픽 인터페이스가 아니라서 직관적이지는 않겠지만, 이것이 오작동 없이 설정하는 가장 확실한 방법이다. 우분투에서 network-manger 서비스 삭제는 아래와 같이 할 수 있다.

$ sudo apt-get remove network-manager


만약 network-manager를 삭제하는 대신 일시적으로 서비스를 중단하고 싶다면 service disable 명령어를 이용한다.

$ sudo service network-manager disable




(2) 다른 유선/무선 네트워크 설정과 같은 IP주소 대역을 쓰는 경우


별 생각 없이 애드혹 네트워크를 구성하면서 고정IP 주소를 192.168.0.X 또는 192.168.1.X를 쓰는 경우가 많이 있다. 하지만 대부분의 경우 공유기를 통해 연결하는 유선랜 연결에서 할당받는 유동 IP 주소가 대부분 192.168.0.X 또는 192.168.1.X라는 사실을 염두에 둬야 한다.

필자의 경우 무선 와이파이는 애드혹 네트워크로 설정하고 유선랜은 원격 ssh 접속 및 디버그 용도로 쓰려고 했는데, 공교롭게도 유선과 무선이 같은 대역의 IP 주소를 쓰는 바람에 기대하던 대로 연결되지 않는 현상을 겪었다.

애드혹 네트워크를 고정IP로 쓰는 경우, (게다가 애드혹 모드에서 고정 IP를 쓰지 않으면 제대로 연결되지도 않음) 다른 네트워크과 서브넷(subnet) 주소가 겹치지 않도록 주의하자. (예를 들어, 192.168.3.X 대역을 쓰는 식으로 주소를 확실하게 구분할 것)




(3) Cell 정보가 잘못되어서 생기는 문제


애드혹 네트워크의 경우 고정된 게이트웨이(공유기의 역할)가 따로 있지 않지만, 설정상으로는 가상의 게이트웨이처럼 Cell 정보를 갖고 있다. 콘솔에서 iwconfig를 입력하면 맥 주소 형태로 된 cell 정보를 확인할 수 있다. 같은 애드혹 네트워크에 있는 모든 노드가 같은 cell 정보를 공유한다.


(iwconfig 명령을 통해서 확인할 수 있는 애드혹 네트워크의 각종 정보. 밑출 친 부분이 Cell 정보이다.
Cell 값은 특정 노드의 맥주소는 아니고, 재구성할 때마다 임의의 값을 할당받는 것으로 보인다.)


아직 정확한 원인은 모르지만, 설정상 전혀 이상이 없는데도 갑자기 애드혹 네트워크 상의 노드들끼리 전혀 통신을 못하는 경우가 있다. 그래서 각 노드를 하나씩 네트워크 재설정도 해 보고,  (sudo /etc/init.d/networking restart) 각 노드를 재부팅도 해 봤으며, USB 무선랜 카드를 뽑았다가 다시 연결하기도 했지만 여전히 되지 않았다.


확인해본 결과 노드를 하나씩 재설정/재부팅해서는 안 된다. 아마 Cell 정보에 문제가 있었던 것 같은데, 장비를 하나씩 재시작하면 네트워크가 켜져 있는 다른 노드가 계속 기존의 설정을 유지하고 있기 때문에, 그 노드로부터 잘못된 정보를 받아 와서 다시 공유하게 된다. 그러므로 확실하게 하려면, 모든 노드가 다같이 전원을 껐다가 켜야 한다. (애드혹 네트워크를 완전히 없앴다가 다시 만들자는 얘기) 이렇게 하면 iwconfig를 통해서 Cell 정보가 변경된 것을 확인할 수 있으며, 다시 노드들끼리 정상적으로 통신이 된다.




(4) 신호 세기와 물리적인 공간 특성으로 인한 문제


필자의 경우 넓은 지역에 먼 거리를 두고 노드를 배치할 필요가 없어서 이 문제가 치명적이지 않았다. 하지만 건물 안에서 멀티홉(multi-hop) 네트워크를 구성하기 위해 복도와 방을 이용해서 배치해본 결과, 벽과 코너의 구조로 인해서 신호를 받지 못하거나 신호가 미약한 상황을 만들어낼 수는 있었다. (사족: 하지만 결국은 실내 공간에서 물리적인 배치만 가지고 멀티홉 네트워크 만들기는 실패했다. 왜냐하면 어떻게든 미약한 신호가 닿을 경우 한번에 연결하려고 하지 중간 노드를 통해서 가려는 시도를 안하기 때문이다. ㅠㅠ 결국 라우팅 프로토콜에 약간의 예외처리를 해서 소프트웨어적으로 멀티홉을 구성해야 했다.)


필요에 따라 신호 세기를 조정해서 전송 범위(transmission range)를 바꿀 수 있다. 신호 세기가 세면 당연히 전송 범위가 늘어난다. 신호 세기는 아래와 같이 조정할 수 있다.

$ sudo iwconfig [네트워크_인터페이스_번호] txpower [신호세기]


신호 세기의 단위는 dBm이며, 0~20 사이의 값만 허용된다.


(iwconfig를 이용해서 신호 세기를 4dBm으로 설정한 경우)


또한 무선랜에서는 data rate가 낮을 수록 또한 전송 거리가 늘어나기도 한다. 그러나 아쉽게도 애드혹 모드에서는 data rate 설정을 변경할 수 없으니 참고하자.







반응형
블로그 이미지

Bryan_

,