네트웍을 조금 깊이 공부하다 보면 필요한 툴 중에 하나가 패킷 스니핑(packet sniffing) 소프트웨어이다. 패킷 스니핑이란 네트웍 상에 오가는 모든 패킷들의 내용을 보는걸 말한다. (평상시에는 자신에게 오는 패킷만 받아 처리한다) 예전 텍스트 환경에서 많이 사용되던 프로그램으로는 snoop (SunOS에서 사용)과 지금도 거의 표준적으로 사용되고 있는 tcpdump가 있다.

GUI 환경의 툴로는 보통 tcpdump/pcap을 사용하고 거기에 graphic back-end를 붙여준 형태가 많다.


Ethereal 에서 이름이 바뀐 Wireshark이다. 현재 패킷 스니핑 툴에서는 거의 de-facto standard의 지위를 차지하고 있다. 물론 Windows/Linux/Mac OS X 모두 지원한다. 다만 아래 화면에서 볼 수 있는것처럼 Linux/X Windows를 맥에 포팅한 형태이기 때문에 맥 고유의 UI를 사용하지 않아서 맥 어플리케이션의 깔끔한 느낌이 없다.

그에 비해 Cocoa Packet Analyzer는 처음부터 네이티브 맥 OS X와 코코아 환경에서 구현한 패킷 스니핑 툴이라 맥 UI가 깔끔하게 적용되어 있다. 산업표준인 pcap 패킷 캡춰 포맷을 지원하기 때문에 다른 패킷 스니핑 툴과도 트레이스 파일이 호환된다. 또한 libpcap/tcpdump 의 packet filter expression을 사용할 수 있기 때문에 tcpdump에 익숙한 사람은 별도로 공부할 필요가 없다.
그리고 cocoa bundle technology를 지원하기 때문에 애널라이져 플러그인을 만들어 붙일 수도 있다. 현재 SIP 프로토콜은 3rd party의 플러그인으로 구현되어 있다.

* 예전에는 보통 libpcap/tcpdump를 먼저 깔아준 다음 프로그램을 설치하는 형태가 많았는데 Cocoa Packet Analyzer도 최근 다른 프로그램들과 마찮가지로 필요한 모든걸 한꺼번에 설치해주기 때문에 편리하다.








L2TP 패킷의 내용을 보는 화면이다.

IP v6도 당연히 지원한다.

컬럼에 어떤 필드를 보여줄 지 선택할 수 있다.


캡춰된 패킷을 쉽게 검색할 수 있도록 되어있다.


지원하는 프로토콜 타입은 다음과 같다.
  • Ethertype ARP
  • Ethertype IP (v4/ v6)
  • Ethertype PPP
  • Ethertype PPPoED/S
  • Ethertype 802.1Q VLAN
  • Linktype Loopback
  • Linktype PPP
  • IP-Protocol IP
  • IP-Protocol TCP
  • IP-Protocol UDP
  • IP-Protocol ICMP
  • IP-Protocol IGMP
  • IP-Protocol L2TP
  • PPPoE Discovery and Sessionstages
  • PPP-Protocols: IP, LCP, IPCP, CCP, PAP, CHAP
  • L2TP-Protocol (port based detection)
  • RADIUS-Protocol (port based detection)
  • SIP-Protocol (third party analyzer plugin)
현재 버젼은 0.60.1이다.
Posted by nautes

coLinux에서 네트웍을 설정하는 방법은 여러가지 옵션이 있다. 그 중 여기서 목표로 하는 네트웍 설정은 다음 그림과 같다. 인터넷은 D-Link DI-624를 통해 연결되고 D-Link router는 DHCP server를 실행하고 있다. 윈도우와 coLinux를 설치한 노트북은 fast ethernet(VIA Rhine II)로 연결되어 있고 router의 DHCP server에서 192.168.0.100을 할당받았다. (아래 그림에서 빨간색 블럭이 실제 네트웍 인터페이스이고 보라색 블럭은 가상 인터페이스이다. 실선 화살표는 실제 네트웍 케이블이고 점선 화살표는 가상의 네트웍 케이블을 나타낸다. 그리고 당연히 coLinux OS와 Hosting OS인 윈도우는 같은 기계에서 실행되고 있다.)


200807011630.jpg

이 방식으로 네트웍 설정을 하려면 coLinux를 설치한 다음 WinPcap (The Windows Packet Capture Library)도 다운받아 설치해 줘야 한다.

coLinux를 설치하고 나면 디렉토리에 다음의 파일이 설치된다.


cl1.png

이 중에 example.conf 파일을 원하는 이름으로 복사해준다. 여기서는 colinux.conf 로 예를 들기로 하겠다.

c:\coLinux> copy example.conf colinux.conf

파일을 복사 한 다음 colinux.conf를 에디터에서 열어준다.

기본적으로 아래 화면에서 색이 칠해진 부분을 자신에게 맞게 변경해주면 된다.
cl2.png

위의 색이 칠해진 부분을 자신이 다운받아 압축을 풀은 루트파일 시스템, 스왑파일 이름으로 바꿔준다. 여기서는 루트파일 시스템으로 Ubuntu-7.10.ext3.2gb.fs를 사용하고 있다.


cl3.png

위의 화면의 아랫 부분이 네트웍 설정에 필요한 내용이다. 여기서는 (가상) 네트웍 카드를 2개 사용해서 첫번째는 TAP을 사용해서 coLinux-windows와의 통신 전용으로 사용하고 두번째는 WinPcap을 사용해서 coLinux가 인터넷을 억세스하는데 사용할 것이다.

위와 같이 변경해 주었으면 파일을 저장하고 에디터를 종료한다.

그리고 아래와 같은 배치파일을 만들어 준다.


cl4.png

윈도우의 네트웍 커넥션에 보면 coLinux를 설치할 때 이미 설치된 가상 TAP-Win32 adapter가 보인다.

cl5.png

이 TAP-Win32 adapter의 속성(properties)로 가서 'Internet Protocol (TCP/IP)'를 더블클릭해서 아래 그림과 같은 Internet Procotol (TCP/IP) Properties 윈도우에서 아래와 같이 IP, Subnet mask를 설정해 준다. 단 Default gateway는 빈칸으로 놔둬야 한다.

IP address: 192.168.37.10 (여기서 서브넷 37은 임의로 정한 것이다. 이미 사용하고 있다면 사용하지 않는 다른 서브넷으로 변경해도 된다. 단 윈도우의 TAP-Win32 adapter와 coLinux의 eth0는 같은 서브넷 번호를 사용해야 한다.)

IP address: 192.168.37.10

Subnet mask: 255.255.255.0

cl6.png

IP 설정이 끝났다면 Local Area Connection2 Properties 윈도우에서 'Advanced' 탭을 선택해서 Windows Firewall의 'Settings...'를 눌러준다.


cl7.png

파이어월 설정에서 Local Area Connection 2에 대해서는 파이어월을 중단시켜준다.

cl8.png


여기까지 끝났으면 도스 프롬프트에서 아까 만들어 준 배치파일(cl.bat)을 실행해서 coLinux를 실행시켜 준다.


cl9.png

Cooperative Linux Console이라는 윈도우가 열리면서 리눅스 부팅 시퀀스가 표시된다. 로그인 화면이 나오면 root로 로그인 해 준다. login id, password 둘 다 'root'를 사용하면 된다. 로그인 한 다음 에디터에서 '/etc/network/interfaces' 파일을 열어서 아래와 같이 수정해 준다.

eth1은 dhcp를 사용할 것이지만 기본 상태에서는 dhcp resolver가 없기 때문에 일단 static으로 인터넷에 연결해서 dhcp resolver를 설치한 다음에 다시 dhcp를 사용하도록 변경해 줄 것이다.


cla.png

또한 /etc/resolv.conf 파일도 다음과 같이 변경해 준다.

cld.png

변경을 마치고 파일을 저장한 다음 인터페이스를 멈췄다가 다시 활성화 시키거나 coLinux를 reboot시키고 나서 ifconfig를 해 보면 다음과 같이 나타나야 된다.


clb.png

ping 명령을 사용해서 각각의 인터페이스가 제대로 동작하는지 확인해 볼 수 있다.

clc.png

정상적으로 동작하는게 확인 되었으면 apt-get 명령어를 사용해서 dhcp resolver(여기서는 'pump'를 사용)를 다운받아 설치해 준다.


cle.png

dhcp resolver를 설치한 다음 /etc/network/interfaces 파일에서 eth1에 관한 부분을 (dhcp를 사용하도록) 변경해준다.


clf.png

파일 변경이 끝났으면 coLinux를 재부팅 하거나 ifdown eth1, ifup eth1 명령을 순서대로 사용해서 인터페이스를 비활성화 시켰다가 다시 활성화 시켜주면 된다. 아래 화면이 ifconfig의 결과인데 위에 static을 사용할 때는 ip를 강제로 192.168.0.105로 지정해 줬는데 이번에는 dhcp 서버에서 ip를 받아왔기 때문에 192.168.0.101로 할당된 걸 볼 수 있다.

clg.png

Posted by nautes

무선랜을 사용하는데 거리가 멀어지면 수신감도가 급격하게 떨어져 버린다. 그래서 신호강도가 어느 이하로 떨어지면 연결 자체가 유지되지 못하고 붙었다 끊어졌다를 반복하게 된다.

현재 위치에서의 무선 상태는 D-link DWL-G122를 사용하면 공유기가 아예 안보이고 macbook pro의 에어포트를 사용하는 경우 안테나 방향(즉 액정화면이 어느쪽을 보고 있는가), 기온, 외부의 전파 잡음등에 따라 연결이 되다 말다 하는 정도라 안정적으로 인터넷에 연결할수가 없었다.

예전부터 가지고 있던 외부 안테나와 외부안테나 커넥터가 있는 Orinoco PCMCIA 무선랜카드는 맥에는 expresscard 34슬롯밖에 없어서 사용할 방법이 없었다. 2.4GHz 외부안테나를 몇개 가지고 있지만 다들 RP-SMA female 타입의 커넥터를 가지고 있고 RP-SMA male to MMCX male cable로 Orinoco에 연결을 하게 되어 있다.

그래서 일단 USB무선랜(DWL-G122)에 외장 안테나를 붙여보기로 마음을 먹었다. 인터넷을 뒤져본 다음 케이스를 열어보니 안테나 부분은 다음과 같았다.

사용자 삽입 이미지

사진의 가운데가 외부 안테나를 연결할 수 있는 커넥터이고 오른쪽의 가운데에 파란색 선이 그어져 있는 부품이 칩 안테나이다. 다만 문제는 U.FL female타입의 커넥터라 현재 가지고 있는 MMCX 커넥터를 사용할 수 없었다. 다른 방법으로는 패턴의 녹색부분을 긁어내고 직접 케이블을 납땜하면 되는데 그것 보다는 그냥 ebay에서 U.FL male to RP-SMA male cable을 주문하기로 했다. 이 케이블이 배달되면 위의 회로에서 칩 안테나만 뗘 내고 케이블을 커넥터에 꼽아주기만 하면 된다.

사용자 삽입 이미지

일단 주문한 케이블이 오려면 약 2주정도 기다려야 할 거 같아 집에서 구할 수 있는 재료만으로 간단하게 무선신호 감도를 높일 수 있는 반사판을 만들었다.



재료는 적당한 크기의 골판지 박스, USB확장 케이블, 테입, 알미늄 호일만 있으면 된다.
먼저 골판지를 적당히 자르고 가운데 USB 확장케이블을 꼽아 줄 수 있는 구멍을 내고 그 구멍 뒤쪽을 타원형으로 잘라준다. 그 타원형 부분에 종이를 둘러주고 종이의 뒷면에 알미늄 호일을 붙여주면 된다.
말로 설명하는 것 보다 만들어 놓은 사진을 보면 쉽게 이해가 될 것이다.

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

순전히 집에 있는 재료만으로 만들어서 별도의 재료비는 하나도 들지 않았다.
컴퓨터에 연결해서 확인해 본 결과는 놀랄만큼 좋았다. 무선 신호 계측기가 없어서 수치적으로 비교할수는 없었지만 Macbook pro에서 잡히지 않던 무선랜이 안정적으로 연결되었고 연결이 끊어지는 현상도 나타나지 않고 있다.
원래 omni-directional(특별히 방향성 없는) antenna의 뒤쪽에 일종의 반사판을 붙여 directionl antenna로 바꿔준 것이기 때문에 상자의 방향을 돌려가며 가장 신호 감도가 좋게 나오는쪽으로 놓고 사용하면 된다.

지금 현재만으로도 꽤 만족할만한 결과가 나와서 주문한 커넥터 케이블이 도착한 다음 외부 신호증폭 안테나를 사용하고 뒤쪽에 반사판을 붙였을 경우의 성능향상이 크게 기대된다.
추후 그 결과에 대해서도 여기에 업데이트 할 예정이다.

* Mac 사용자의 경우 D-link는 DWL-G122용 맥 디바이스 드라이버를 지원하지 않는다. 대신 Ralink에서 2500시리즈용 mac os x 드라이버를 설치하면 된다. 다운 받아보면 10.3/10.4용 드라이버만 있는데 10.4를 설치해도 10.5에서도 잘 동작한다. 현재 os x 10.5.3을 사용하고 있는데 별다른 문제는 없었다.
Posted by nautes

이전버튼 1 이전버튼