무선 설정. MadWifi를 이용한 AR5212 802.11abg NIC (rev 01) - Thinkpad r51e..  -  2008.01.22 02:44

리눅스에서 notes 를 사용해보자 (2)

아래의 내용을 개인 블로그에 적어놓는 이유는 차후 이 블로그 주인이 자주 잊어먹기때문에 개인적으로 보려는
이유가 제일 큽니다. 하지만 혹시 필요하신 분들이 있다면 참고하시길 바라는 마음에서 겸사겸사 적어놓습니다.
사실 처음에는 리눅스에서 MTS를 연결하여 IBM 내부 네트웍으로 연결하는 것은 특별히 제공하는
특정 배포판을(lifeboat등) 사용해야만 하는것으로 생각했다. 그도 이유인즉, 사실 처음 IBM network 으로
접근하는 줄 알게된지 얼마 안되었기 때문에 어찌 해야할지 참 난감했다.

아마 대략 1년뒤에는 또다른 방법을 내어놓게 될 듯하다. 일단 오늘 제시할 방법은 지난 1편과는 좀 다르다.
지난 1편에서는 로컬네트웍을 통하여 단지 커널과 notes 프로그램을 통하여 리눅스 x-windows 에서 직접
notes를 사용하였다. 하지만 본인이 일하고 있는 곳에서의 IBM internal network 연결은 그리 쉽지가 않았다.
윈도우에서는 att&t 라는 이름으로 불리우고 리눅스에서는 mts 라는 이름으로 불리운다.
물론 리눅스에서도 이제 mts를 조금 기능화(사실 원리는 바뀌지 않았고 udp에 패킷을 실어나른다(?)는 윈도우
의 방법은 여전히 적용되지 않고 있다.) 된것은 사실이지만 오히려 나같은 삐딱한 사용자에겐 더 불편한
기능중의 하나였다.


즉, 내가 일하는 곳의 제약 및 현재 1편에서 소개한 notes under linux(1)의 한계를 몇가지 같이 소개하면.



* 제약사항들
1. 방화벽때문에 현재 IPSec 의 패킷 및 protocol이 정상적으로 GW를 통하여 입출이 불가능하다.
2. 결국 Wireless를(다행이 방화벽으로 막혀있지 않았다) 사용하여 MTS 접속을 해야한다.
3. Wine의 한글 입출력이 지난 1편 때 처럼 잘 되지않아 read 만 가능한 상태였다.


머 크게는 위의 3가지 정도로 정리해 볼 수 있다. 물론 시작한지 약 3개월 만에 틈틈히 업무이외의 일들을
(사실 업무를 제대로 하기위한 일 이므로..^^;) 했다는 것에 대해 약간의 찔림도 있지만..
IBM ineternal network의 제약조건을 뽀개기(?) 위하여 노력한것에 대해 은근히 기분좋은...(?)..

여튼 그렇다.



먼저 위의 3가지 제약사항들에 대해 약간 부연설명을 하면.

1. 번은 현재 tcpdump를 떠서 비교를 하며 해결을 보려하지만 network admin이 별도로 존재하고 이쪽에서
먼저 문제점을 분석해서 주기전에는 유선으로 리눅스 mts를 연결할 수 없다. 즉, 시간이 더 걸려야 한다는
것이다.


2. 번은 1번이 해결이 되지 않기 때문에 급조한 방법이었다. 다행히도 누군가 사용하고 있는 Wireless AP를 찾
을 수 있었고 1번을 해결할때 까지 임시방편(?)으로 사용하기로 맘먹었음. ㅡ,.ㅡ(그러나 임시방편이 죽~
갈 수도 있지 않을까... ㅋㅋ)


3. 지난 10월 4일경에 쓴 내용은 리눅스에서 모든것을 해결하는 것이었다. 즉, mts 연결부터 notes, office 까지
전부 리눅스 안에서 해결함으로써 좀더 빠르게 그리고 자원사용률을 효율적으로 사용하기 위함이었지만.
약 1개월 반 동안 mts + wireless 를 해결하는동안 이미 wine의 버전은 업그레이드 되어 있었고 한글 출력은
되지만 입력에 오류. 또한 ami, nabi, scim 등의 입력기를 테스트 해보아도 여전히 문제가 발견되었다.

더 큰 문제는 한글 입출력이 이쁘지가 않았다는 것 이다. 앞서 1편에서 보면 알 수 있듯이 백묵 폰트를 사용
해도 여전히 폰트 깨짐현상이 있었고 100%전부 호환되지는 않았다는 점에서 아직 리눅스용 notes에서의 한글
사용은 불완전(?) 하다는 생각이 들었다.



위의 제약사항들을 기반으로 생각해본 나의 리눅스 환경은 아래와 같다.







머 특별한 내용은 없다. 단지 구성이 약간 달라졌을 뿐이다. 간단히 아래와 같은 내용을 설명을 하려 한다.
또한 커널 과 mts 그리고 갖가지 패키지들은 별도로 저장하여 다운로드를 쉽게 하려한다.





1. 준비해야할 사항
1. 커널
2. wireless 패치
3. wireless 연결
4. mts 연결

2. vmware 설치 및 notes 설치

3. 결과

--------------------------------------------------------------------------------------------

1. 준비해야할 사항
1. 커널
1편과 마찬가지로 커널은 같은 커널을 사용한다. 물론 mts패치가 되어있어야 하기때문에 1편에서
알려준 링크로 가서 최신 mts패치커널을 다운 받는다. mts패치만 별도로 존재하는지 찾아보았지만
그 어디에서건 다운받는 위치를 찾지 못했다. 혹시 찾는분은 저에게도... ^^;;


2. wireless 패치
지금 본인이 사용하고 있는 IBM (lenovo) thinkpad는 T60이다. 이 T60의 무선랜 카드는 atheros
라는 명칭으로 리눅스에서 기본으로 제공하는 인텔 무선랜을 사용하지는 않았다. 오히려 인텔칩을
사용했다면 좀더 쉬웠지 않았을까 하는 생각도 이제와서 해본다.

http://www.madwifi.org/

위의 사이트에 가면 최신버전부터 madwifi(atheros만을 전문으로 지원하는 사이트) 커널 모듈을 구할
수 있다. 사실 ndiswrapper 등 몇가지 테스트 해봤지만 가장 잘 지원되는 madwifi가 가장 좋았다.
만약 사용중인 무선랜 카드가 atheros 계열이라면 위의 사이트에서 거의 모든것을 해결할 수 있다.

현재 0.92 버전까지 오픈 한 것으로 알고 있는데 이는 너무 최신것인지 AP와의 연결이 그리 원활하지
않았다. 즉, 원하는 AP와의 연결후에 정해진 시간마다 주변 AP들을 scan하는 과정에서 현재 연결된
AP와의 연결 상태를 잃어버린다는 버그가 있었다.

그러므로 0.90 버전을 다운받아서 사용하면 위의 문제가 없이 scan 과 connection 이 별개로 동작하게
된다.


+ Kernel download : Click to DownLoad

+ Madwifi download : Click to Download



1편에서 이미 mts 연결을 위한 커널을 설치했다면 위의 커널은 다운로드 할 필요가 없다. 유선으로 가능하다면
다음 단계로 넘어가면 된다. 만약 무선으로 연결을 해야한다면 일단 유선과의 연결혼돈을 피하기 위하여 무선
디바이스를 down 시킨 상태에서 무선으로만 외부네트웍 연결을 하여 mts 연결을 하고난 후 유선 device인
eth0 에 IP를 심어 routing 을 잡아주도록 한다.

이유는 mts가 처음 구동이 될때 기본 Gateway를 검색하므로 가급적이면 연결하려고 하는 device만 남겨두기로
한다.


# ifconfig eth0 down


위에서 madwifi를 다운로드 했다면 아무 디렉토리에 압축을 풀고 그 디렉토리로 이동을 한다. 그런 후 INSTALL
파일을 열어 읽어보면 어찌어찌 하라는 메세지가 나온다. 하지만 문제는 현재 IBM에서 mts 기능이 패치되어 있
는 커널은 gcc 3.3 으로 컴파일이 되어있다. 그렇다면 현재 데비안 이나 기타 다른 배포판에서 gcc 버전을
몇까지 설치할지는 모르지만 최소한 4.0 이상 일 것이라 생각하고 3.3버전이 없다면 설치해야 한다.
그리고 INSTALL파일에 있는 것 처럼 현재 환경변수를 지정하던가 아니면 gcc의 링크를 3.3으로 변경해야한다.


물론 만약 커널 소스를 gcc 4.x 대로 컴파일한다면 위의 과정은 할 필요없다. 본인의 경우는 그냥 새로 컨파일
해서 사용하고 있다. 그런후 madwifi 디렉토리로 옮긴후 make ; make install 한다면 현재 커널의 버전을 읽어
들여 모듈설치된 /lib/modules/kernel-xxxx/ 링크를 따라 컴파일 및 설치를 한다.

약간의 에러가 난다면 not found 계열일 것이다. 적절히 조치(?) 할 수 있을듯하다.


물론 위에서 다운로드 받은 커널로 동작중인 OS상에서 madwifi 모듈을 컴파일 하여야 한다.


기본적으로 커널에 들어있는 madwifi의 모듈은 무시하도록 한다.

윈도우는 아니지만 reboot을 한번 하여 깨끗한 상태로 다시 OS 를 booting 시켜도 좋다.


3. wireless 연결

- mts 패치가 적용된 kernel 로 부팅(안되면 다시 컴파일해서 사용해야함)
- madwifi 모듈 컴파일


위의 두가지를 하였다면 무선으로 연결해 보자. 연결 도구로는 wpa_supplicant 를 사용한다. 이는 무선랜을 연결
시켜주는 하나의 연결 도구로써 우리가 일반적으로 사용하는 WEB40 암호화(사실 암호화라고 보기엔 좀 그렇다.)를
지원한다. 64bit 10자리 암호화를 해주기 때문에 왠만한 무선랜(윈도우기본 혹은 IBM 에서 제공하는) 유틸로도
연결이 가능하다. 여튼. wpa_supplicant 패키지를 설치하자.

물론 기본 무선랜의 지식은 있다는 판단하에 간단히 직접적인 설명만 들어가도록 하겠다.

wpa_supplicant 라는 binary 가 존재 하며 man 페이지를 보면 기본 사용법을 알수 있다.


다 아는 내용이겠지만 무선랜 연결은 두가지 단계로 볼수있다. 먼저 AP(Access Point)로의 연결을 맺고
그 다음 AP의 DHCP Server로 부터 IP 를 할당 받는다.

- AP 와의 연결
- IP 할당받기


- AP 와의 연결
wpa_supplicant.conf 파일을 편집을 한다. 없으면 새로 만들어서 실행할때 환경 파일로 지정하여도 된다.



# wpa_supplicant.conf 내용
====================================================================================================

#ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0

eapol_version=1
#ap_scan=3
fast_reauth=1

# Single key 128bit WEP
# network={
# ssid="My-Home"
# key_mgmt=NONE
# wep_key0=ABCDEF01234567890123456789
# wep_tx_keyidx=0
# priority=5
# }
#
#
#network={
# ssid="MyPlace"
# scan_ssid=0
# key_mgmt=WPA-EAP WPA-PSK
# pairwise=CCMP TKIP
# group=CCMP TKIP WEP104 WEP40
# #psk="very secret passphrase"
# eap=TTLS PEAP TLS
# identity="isempty-AT-gmail-DOT-com"
# psk="8638000056"
# #psk="8638000825"
# #psk="6f74dea53777053ae7cf858fa53bb86024967ee74da9831c2a4f15f6c2027723"
#}
#network={
# ssid="000740624C00"
# scan_ssid=1
# key_mgmt=WPA-EAP WPA-PSK
# pairwise=CCMP TKIP
# group=CCMP TKIP WEP104 WEP40
# psk="very secret passphrase"
# eap=TTLS PEAP TLS
# identity="isempty-AT-gmail-DOT-com"
# #psk="aaabbbbccc"
# psk=cbf5483bc10599e17215db3d05ab032e7168c723f86345241d58ccf100f1f7fa
#}

network={
#ssid="000740624C00"
ssid="crazystuff"
#scan_ssid=1
#ap_scan=1
key_mgmt=NONE
group=WEP40
wep_key0=aaabbbbccc
#auth_alg=OPEN
wep_tx_keyidx=0
#priority=1
}

====================================================================================================

위의 내용이 많지만 테스트 하느라 그런것이니 입력해 놓아 손해볼것은 없을듯.^^; 사실 가장 취약한 보안
방법인 WEP40을 사용하기때문에 마지막 uncomment 처리된 내용밖에 쓸 내용은없다. 그 위의 내용들은
WPA인증방식등을 사용하여 좀더 안정화된 네트웍을 연결할 수 있지만 ...

그리고 나서 wpa_supplicant 명령어를 이용하여 연결하여야 한다. 하지만 그전에 앞서 madwifi 모듈, 새로
컴파일된 모듈을 올려주어야 한다.
그렇게 하기 위하여 아래의 간단한 shell 을 실행하여 주도록 한다.



# recharge.sh
====================================================================================================
function rmod (){
rmmod wlan_ccmp
rmmod wlan_acl
rmmod wlan_tkip
rmmod wlan_scan_ap
rmmod wlan_xauth
rmmod wlan_wep
rmmod wlan_scan_sta
rmmod ath_rate_sample
rmmod ath_pci
rmmod ath_rate_sample
rmmod wlan_scan_sta
rmmod wlan
}

function inmod (){
modprobe ath_pci rfkill=0
insmod /lib/modules/2.6.16.18-2-dc4eb/net/wlan_wep.ko
insmod /lib/modules/2.6.16.18-2-dc4eb/net/wlan_xauth.ko

#insmod /lib/modules/2.6.16.18-2-dc4eb/net/wlan_scan_ap.ko
#insmod /lib/modules/2.6.16.18-2-dc4eb/net/wlan_scan_sta.ko

insmod /lib/modules/2.6.16.18-2-dc4eb/net/wlan_tkip.ko
insmod /lib/modules/2.6.16.18-2-dc4eb/net/wlan_acl.ko
insmod /lib/modules/2.6.16.18-2-dc4eb/net/wlan_ccmp.ko

#insmod /lib/modules/2.6.16.18-2-dc4eb/net/wlan.ko
#insmod /lib/modules/2.6.16.18-2-dc4eb/net/ath_hal.ko
#insmod /lib/modules/2.6.16.18-2-dc4eb/net/ath_pci.ko
#insmod /lib/modules/2.6.16.18-2-dc4eb/net/ath_rate_sample.ko
}


rmod
inmod
ifconfig ath0 down

wlanconfig ath0 destroy
wlanconfig ath0 create wlandev wifi0 wlanmode sta

sysctl -w dev.wifi0.ledpin=1
sysctl -w dev.wifi0.softled=1

athctrl -i wifi0 -d 22531
ifconfig ath0 up


wpa_supplicant -i ath0 -D madwifi -c /etc/wpa_supplicant/wpa_supplicant.conf -dd
#wpa_supplicant -iath0 -Dwext -c/etc/wpa_supplicant/wpa_supplicant.conf -dd

#dhclient3 -cf /etc/dhcp3/dhclient.conf ath0
#iwconfig ath0 key aaabbbbccc open
# athctrl -i wifi0 -d 22531
====================================================================================================



위의 내용은 기존에 올라가 있는 madwifi 관련 모듈들을 내리고 새로 컴파일된 모듈을 올리는 것이다.

wlanconfig ath0 destroy
wlanconfig ath0 create wlandev wifi0 wlanmode sta

위의 두줄은 madwifi 는 무선랜 device를 ath0으로 잡는다. ndiswrapper는 wlan0으로 잡기도 한다.
위의 wlanconfig 실행하고 나면 아래와 비슷한 내용의 device 상태가 보인다.


ath0 IEEE 802.11g ESSID:"crazystuff"
Mode:Managed Frequency:2.412 GHz Access Point: 00:18:84:10:C6:42
Bit Rate:24 Mb/s Tx-Power:15 dBm Sensitivity=0/3
Retry:off RTS thr:off Fragment thr:off
Encryption key:AAAB-BBBC-CC Security mode:restricted
Power Management:off
Link Quality=37/94 Signal level=-58 dBm Noise level=-95 dBm
Rx invalid nwid:101608 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0




sysctl -w dev.wifi0.ledpin=1
sysctl -w dev.wifi0.softled=1

위의 내용은 노트북의 wireless 무선랜 LED를 점등 시키는 것이다.

athctrl -i wifi0 -d 22531
ifconfig ath0 up

위의 내용은 장거리 무선랜의 경우인데 별로 효용이 있는지는 아직 테스트를 못해봤다.

그런후 ath0 device를 up한후 AP와의 연결을 하기위하여 아래의 명령을 실행한 것이다.


#wpa_supplicant -i ath0 -D madwifi -c /etc/wpa_supplicant/wpa_supplicant.conf -dd

device는 ath0으로 Driver 이름은 madwifi 로 환경파일은 자신이 만든 이름 아무거나. 그리고 -dd 는
debugging 옵션으로 2개이니 많은 디버깅이 이루어 진다.


위의 명령으로 연결되는 상태를 보면 아래와 같다.




위의 그림처럼 여러 SSID를 검색한 후 에 현재 wpa_supplicant.conf 내용에 설정된 crazystuff 라는
SSID를 찾아 연결을 한다. 맨 하단의

State: ASSOCIATED -> COMPLETED
CTRL-EVENT-CONNECTED - Connection to 00:18:84:10:c6:42 completed (auth) [id=0 id_str=]

내용을 보면 연결되었음을 알 수가있다.



- IP 할당받기
위의 내용까지 AP와의 연결이 끝났다. 다음으로 IP를 할당 받아 오는것이다. 이미 연결이 잘된 AP에 IP를
할당 받는 것은 어렵지않다. 아래의 그림처럼 dhcp client 를 사용하여 받으면 된다.





이제 mts 커널을 사용하여 atheros 를 사용하는 무선랜 칩으로 리눅스에서 인터넷을 사용하게 하는 설정은
마무리 되었다. 이제 남은것은 mts를 연결하는 것이다.

4. mts 연결
1편에서의 연결처럼 mts.conf 를 잘 편집(?) 하여 준다면 아래의 그림처럼 별 일없이 잘 연결될 것이다.





mts 설정 및 연결은 1편 참조.



2. vmware 설치 및 notes 설치

이제 IBM internal network 으로의 연결은 사실적으로 모두 끝났다. 이제 vmware를 설치하고 windows를 설치 하고
notes를 설치하여 사용하는 일만 남은 것이다.


vmware의 버전은 vmware.org 에 접속하여 최신버전을 등록하고 다운받도록 하고 license는 각자 개인적으로 구하여
야 한다. 또한 그위에 설치되어야할 windows 도 마찬가지로 license 를 직접 구하도록 한다.

vmware,windows 설치까지 개입하게되면 내용이 너무 장황하므로 생략을 한다. 설치된 화면만을 보면서 하나씩 단계
적으로 넘어가자.








위의 그림은 vmware를 설치하고 실행한 화면이다.








위의 그림은 vmware안에서 windows xp를 실행한 화면이다. 바탕화면에 이미 notes7 을 설치하였기 때문에 아이콘이
있는것을 확인할 수 있다.



위의 그림은 notes 를 처음 실행한 화면이다. 또한 아직 복제본등의 내용을 설정하지 않았고 개인 id 파일만
복사해놓은 상태이기 때문에 위의 그림과같은 내용만 나와있다.







위의 그림은 notes를 실행한 후 이메일을 받아온 그림이다. vmware 하에서의 윈도우즈 및 notes라서 엄청 느릴줄
알았는데 사실 생각보다 빨랐고 사용하는데에 별 그리 문제가없었다.


3. 마치며..

사실 이것말고도 더 재미있는 여러 구성을 테스트 해보고 싶지만 너무 많은 시간들을 할애 하는것 같아 조금씩
하려합니다. 혹시 위의 내용을 기반으로 그 다음 재미있는 구성 및 환경을 테스트 해보신 분들은 저에게도 조금
나누어 주시길 바라며 간간이 내용상에 문제가 있는 부분들은 차후 이 다음 버전을 통해 수정 보완 하도록 하겠
습니다.


미비한 내용이지만 아무쪼록 호기심으로 뭉친이들의 자그마한 길잡이라도 되길 바라는 조그만 마음입니다.

출처 : http://www.ibm.com/developerworks/blogs/comments  조윤석 님의 글에서..

그외 : http://gentoo-wiki.com/HOWTO_MadWifi_Install

       : http://gentoo-wiki.com/HOWTO_Building_a_Wireless_Access_Point#Atheros_.28Madwifi.29
이곳에도 참고할만한 자료가 있다.

NetworkManager 설치에 대한 사항은 이곳에서 볼수 있다.

Name   Password   Homepage   Secret