참교육
QEMU를 이용한 공유기 펌웨어 환경 구축 본문
이걸 몇년전 까지 삽질만 하다 못한걸 이제 와서 친구랑 다시 하니까 금방 됐다.... 열받아
시작하기 전에
apt-get update |
는 필수입니다.
또 FMK를 다운받아 놔야 하는데
FMK에 대한 에러가 하나 있어서 우선 메모로..
http://lispro06.woweb.net/app/63561
1. QEMU 다운
ARM이나 MIPS 기반의 공유기 펌웨어를 실행시키기 위해서 필요한 가상 머신이다.
https://people.debian.org/~aurel32/qemu/
위 사이트에서 다운이 가능하며 armel 버전을 설치하였으며
debian_squeeze_armel_standard.qcow2
버전을 다운받아 실행하였다.
음.. 사실 squeeze랑 wheeze랑 두가지 버전이 있는데 뭐가 더 나중에 나왔네 뭐네 하는데 큰 차이가 없어보여서 그냥 아무거나 받았다.
묻지말고 따지지말고 wheezy받아야 한다. ㅡㅡ
squeeze받으니까 인터넷이 안됨 apt-get 으로 설치가 아무것도 안되네 어휴 이것 때매 핵고생함
다운받아야 할 파일은 아래와 같이 총 3개.
wget https://people.debian.org/~aurel32/qemu/armel/vmlinuz-3.2.0-4-versatile wget https://people.debian.org/~aurel32/qemu/armel/initrd.img-3.2.0-4-versatile wget https://people.debian.org/~aurel32/qemu/armel/debian_wheezy_armel_standard.qcow2 |
실행 명령어는 아래에 나와있으니 그에 따른 실행파일을 받으면 된다.
2. QEMU 실행
우분투 16.04에서 진행하였고 그냥 파일넣고 명령어 실행 끝! 이런느낌이라 간단하다.
qemu-system-arm -M versatilepb -kernel vmlinuz-3.2.0-4-versatile -initrd initrd.img-3.2.0-4-versatile -hda debian_wheezy_armel_standard.qcow2 -append "root=/dev/sda1" -redir tcp:3080::80 -redir tcp:3022::22 |
위 명령어는 위에 나온 사이트에도 나와있고 마지막에 "-redir tcp:3080::80" 부분만 추가하면 된다. 이건 포트포워딩인데 3022를 22번으로 3080을 80으로 포워딩 해주는 옵션이다.
위 그림처럼 잘 실행되는 것을 볼 수 있다. 근데 가상머신에 가상머신이라 조금 느리다.
계정은 root/root 가 있고 user/user가 있는데 루트로 작업을 하면 된다.
****
아니 근데 짜증나는게 나랑 같이한 친구는 인터넷이 잘되는데 난 안돼서 vim도 다운을 못받는다 ㅡㅡ 아니 이게 무슨일이야
해결! wheezy를 받으세요.
3. CHROOT
이제 루트를 바꿔주는 chroot를 해주면 된다. 여기서 그냥 chroot를 실행하면 /etc/나 /var가 없다는 말이 나온다.
ls -al 명령을 확인 해 보니 /var가 /tmp/var로 링크되어 있고 /tmp에 들어가면 아무것도 없다.
또한 /default 디렉토리를 들어가 보면 var, etc등 여러 필수 디렉토리들이 있다.
해결 : dafault 파일들을 /tmp로 옮겨준다.
mv ./default/* ./tmp/ |
다음으로 펌웨어를 다운(sftp로 파일 전송함)받은 뒤에 그 파일을 실행하기 위해서는 링크파일 경로를 맞춰줘야 하는데 링크파일은 절대경로로 되어 있어서 chroot를 이용해서 루트를 해당 디렉토리로 바꿔줘야 된다.
사용법은 펌웨어의 rootfs로 들어간 뒤에 아래 명령어로 실행.
chroot ./ ./bin/sh |
완료!
4. 펌웨어 실행
공유기 펌웨어를 실행하면 되는데 실행 경로는 아래와 같다!
/sbin/httpd |
***에러 잡기
처음에 그냥 실행하면 아래와 같은 에러가 발생한다.
해결 : dev 디렉토리에 null이라는 파일이 없다는 건데 이 문제의 해결책은 그냥 에디터로 /dev/null을 연 뒤 저장하고 나오면 된다.
vi /dev/null (바로 종료) |
뭐 난 여기서 에러가 더이상 안났지만 다른 에러가 더 난다면 에러 메시지를 보고 맞춰주면 된다.
5. 웹 페이지 접속
분명 얘가 아이피가 있는데 웹 페이지 접속을 아이피로 하면 안되고 localhost로 접속해야 한다. 난 80포트를 3080으로 redirect 해줬으니 localhost:3080으로 해줘야 된다.
404....휴우 이거때문에 몇시간 삽질했다.
해결
cd / mkdir /home/httpd/192.168.0.1/sess-bin cp -r cgibin/* /home/httpd/192.168.0.1/sess-bin/ cp -r cgibin/* /bin/login-cgi |
완료!
6. 외부에서 웹 페이지 접속
공유기 웹 서버가 제대로 올라가고 웹 서버를 원격(아이피)로 접속하려고 했는데 400 bad request가 떴다..
조금만 검색해도 나오는 부분이긴 한데.. 다음 그림과 같이 보안설정 > 기타 보안 설정 > CSRF 를 중단응로 설정해주면 된다.
진짜 끝!
'설정' 카테고리의 다른 글
Docker 명령어 (0) | 2017.07.04 |
---|---|
가상머신(패러렐즈) 듀얼모니터 (3) | 2017.04.02 |