DNS-323 wake on lan을 통한 다른 컴퓨터 사용
최광용 Lv. 15 llllllllll 
6011 hit since 2008/04/07 10:57

DNS-323 장비에서 mldonkey등 p2p 클라이언트를 실행하기에는 좀 버거운 감이 있다. 따라서 쉬고있는 다른 컴퓨터를 DNS-323에서 콘트롤 할 수 있게 하여 모자란 리소스를 채워보기로 했다. 즉, wake on lan을 통해 쉬고있는 컴퓨터를 깨우고, 깨운 컴퓨터가 다운로드 하게 한다. 다운로드가 완료되면 다시 잠자기에 들어가고... 이런 시나리오다.

일단 환경은 DNS-323과 MAC이다. 간단하게 dns, mac을 ip 주소 대신 쓰도록 하겠다. 참고로, /etc/hosts를 편집해두면 ip 대신 간단하게 이름으로 장치들에 접근할 수 있다.

  1. cky@DNS-323:~$ cat /etc/hosts
  2. 127.0.0.1 localhost.localdomain localhost
  3. 192.168.0.200 dns dns
  4. 192.168.0.1 dir dir
  5. 192.168.0.20 mac mac

먼저 필요한 프로그램을 dns에 설치한다. 다음 경로에서 wakeonlan 패키지를 다운로드 받아서 wakeonlan 스크립트를 dns장비의 /usr/bin에 복사해둔다. 그리고 이 스크립트를 실행하기 위해 perl을 설치한다. 이 과정은 ssh로 접속하여 chroot된 루트에 설치하는 것이 좋겠다. 외부에서 사용할 것이기 때문에...

http://gsd.di.uminho.pt/jpo/software/wakeonlan/

  1. # apt-get install perl

이제 wakeonlan 커맨드를 사용할 수 있는 상태가 되었다.

mac에는 mldonkey를 설치한다. mldonkey 다운로드 페이지에 보면, mac용 바이너리를 다운로드 할 수 있다. 적당한 디렉토리에 풀어두고 설정을 한다.

http://sourceforge.net/project/showfiles.php?group_id=156414

필요한 것은 다운로드가 완료되었을 때 처리하는 부분이다. mlnet의 설정파일인 downloads.ini파일에서 file_completed_cmd에 실행해 줄 스크립트를 넣어준다. 스크립트는 파일이 완료되었을 경우 실행이 되는것인데, ~/.mldonkey/incoming 디렉토리의 다운받아진 파일을 다른 곳으로 이동하는 정도면 된다. share 하는 것이 없으면 일정 시간 후 잠자기에 들어가게 된다.

  1. [cky@MBP mldonkey-distrib-2.9.4]$ cat move_complete.sh
  2. #!/bin/sh
  3.  
  4. # move completed files
  5. mv ~/.mldonkey/incoming/directories/* ~/Downloads/
  6. mv ~/.mldonkey/incoming/files/* ~/Downloads/

이제 필요한 프로그램들은 다 설치가 되었다. 다음과 같은 준비 상태에서 접속을 시작한다고 가정한다.

  1. dns: ssh 연결대기중
  2. mac: sleep

외부에서 ssh로 dns에 접속한 뒤 wake on lan을 통해 mac을 깨우고, ssh로 mac에 접속, mlnet을 실행해주고 콘트롤을 위해 tunnel을 뚫어준다.

  1. $ ssh -L 4001:mac:4001 dns-ip-address
  2. $ wakeonlan 00:1b:63:b0:79:23   ;; mac address of en0
  3. wakeonlan 00:1b:63:b0:79:23
  4. Sending magic packet to 255.255.255.255:9 with 00:1b:63:b0:79:23
  5. $ ssh mac
  6. Password:
  7. $ cd mldonkey-directory/
  8. $ ./start_mlnet.sh

이제 sancho를 통해 mac의 mldonkey를 콘트롤할 수 있다. localhost:4001로 접속하면 접속이 될 것이다. 웹 인터페이스를 열려면 mlnet의 설정에서 web 접속으로 사용하는 포트를 터널링 하면 된다.

참고로 start_mlnet.sh은 다음과 같이 작성하면 된다. ssh 쉘을 닫아도 계속 실행되도록...

  1. [cky@MBP mldonkey-distrib-2.9.4]$ cat start_mlnet.sh
  2. ./mlnet > /dev/null 2> /dev/null < /dev/null &

그리고, mac은 유선으로 en0에 연결되어 있어야 하며, LCD가 열려있는 상태여야 한다. LCD가 닫혀있는 상태에선 깨자마자 바로 다시 잠들어버려서 ssh를 통해 접속할 수가 없었다. 무선으로 wake on lan 하는건.. 해보진 않았지만 안 될 것 같아 패스.