강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

라우터 만들기(리눅스)

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle17.gif

김현수
중앙대학교 정치외교학과
redhat@mail.com
 

 

1. 소개
2. 개요 및 시스템 준비
3. 리눅스 라우터 설치
4. 고용량 부팅 디스켓 만들기
5. cron을 이용한 접속 관리
6. 자동으로 세계표준시에 맞추기
7. 무소음 리눅스 라우터 박스와 NFS
8. 주어진 커널은 싫다.
9. 완성

1. 소개

 

리눅스 라우터 프로젝트(Linux Router Project)에서는 리눅스를 이용한 라우터 머신을 만드는 작업을 진행하고 있습니다. 일반적으로 리눅스의 IP Masquerade 등의 기능을 이용하면 보통의 시스템에서 강력한 라우트 기능을 구현하는 것이 전혀 어려운 일이 아니라는 것쯤 누구나 알고 계실 것입 니다.

그 정도 수준이라면 굳이 여기서 LRP를 소개할 필요가 없지요. LRP 에서는 리눅스가 가지는 강력한 네트워킹기능을 3.5인치 플로피디스켓 한장에 담아내었습니다. 즉, 1.44mb 디스켓 한장에 쏙~ 들어가는 리눅스가 강력한 라우터 기능을 해 낸다는 것입니다.

- 리눅스 라우터의 원리

리눅스 라우터가 디스켓 한장에 다 들어가 있지만, 실제 작업이 플로피 디스크드라이브에서 이루어지는 것은 아닙니다. 일단 플로피디스켓으로 부팅을 하게 되면, 램드라이브를 만들고, 루트디렉토리( / )로 마운트시킵니다. 그 다음 램드라이브에 디스켓에 압축, 저장되어있는 기본적인 리눅스 파일을 설치합니다. 즉, 리눅스 라우터는 램드라이브 상에서 운영되는 리눅스입니다.

따라서 리눅스 라우터는 하드디스크가 필요없습니다. 그리고 일반적으로 리눅스가 386, 486 정도의 컴퓨터에서도 잘 작동되는 것처럼 리눅스 라우터 또한 저사양의 시스템에서도 잘 작동됩니다.

- 리눅스 라우터 시스템을 사용하기 위한 최소사양 및 환경

· 386sx 이상의 인텔 혹은 인텔호환 cpu
· 8 메가 이상의 램
· 네트웍 환경
· 리눅스에서 인식하는 랜카드
· 3.5 인치 플로피 디스크 드라이브 ( a: )
· 포맷된 3.5인치 플로피 디스켓
· 작업할 수 있는 리눅스 시스템
(LRP에서 다양한 설정을 하기 위해서 필요합니다. 일단 설치가 끝나면 더 이상 필요없음.)

최소사양은 위와 같지만 LRP 에서 권장하는 CPU는 486DX2-66 이상이고 램은 12메가, 그리고 FDD 말고 추가로 ZIP 드라이브나 LS-120 등의 고용량 저장매체를 사용하는 것을 권하고 있습니다. 하지만 저는 486dx2-50에 램 8MB, 1.44MB FDD 1개의 시스템을 사용하고 있지만 부족하다고 느껴 본 적은 없습니다.

이상의 사양을 보시면 느끼는 점이 있을 것입니다. 바로 버리지도 사용하지도 못하고 있던 방 한구석의 먼지 쌓인 386, 486을 훌륭한 라우터머신으로 만들 수 있다는 것입니다. 혹시 386, 486 컴퓨터가 없다고 너무 실망하지는 마십시오. 컴퓨터 통신의 중고시장을 이용하시면 매우 저렴하게 구입할 수 있습니다. 또는 길거리를 다니다가 버려진 컴퓨터를 만나게 되는 경우가 종종 있는데.. 이 기회를 이용해 보도록 하십시오.

- 리눅스 라우터의 용도

한대의 컴퓨터만이 외부 네트워크에 접속이 가능하고, 랜환경의 나머지 컴퓨터들(clients)은 이 컴퓨터를 통해서만 외부 네트워크에 접속할 수 있는 경우에 리눅스 라우터가 사용됩니다.
(쉽게 예를 들면 한 대의 컴퓨터에만 모뎀, 케이블 모뎀, isdn 등등이 접속 되어있고 다른 컴퓨터가 이를 공유하여 인터넷이나 기타 통신을 하고자 할 때 사용되는 것입니다.)

- 리눅스 라우터의 장단점

다른 주변기기 없이 플로피디스크드라이브만 있으면 됩니다.. 물론 랜환경은 필수입니다!
(바이오스에서 지원이 된다면, 비디오카드와 키보드도 필요하지 않습니다.)
또한 386, 486 등도 훌륭하게 활용할 수 있습니다.
대신 라우터 박스가 될 386, 486 컴퓨터를 한대 더 필요로 합니다.

TOP.gif


2. 개요 및 시스템 준비

 

- 개요

Linux Router Project의 목적은 플로피디스켓을 기반으로 저렴하게 라우터 시스템을 구성하는 것입니다. 집에서 놀고 있는 386, 486 컴퓨터를 이용하여 훌륭한 라우터를 만들수 있는 것이죠. LRP 홈페이지에서 보다 자세한 내용을 확인할 수 있으니 꼭 들러보기 바랍니다.

사용자는 먼저 리눅스에서의 네트워크 설정법에 관해서는 숙지하고 있어야 합니다. IP 마스커레이딩이나 그밖의 랜 네트워크 설정에 관한 내용은 이 글의 범위를 벗어나니 다른 글들을 참고하기 바랍니다. 리눅스 한글문서 프로젝트 (KLDP) 에 가시면 네트워크와 관련된 다양한 HOWTO 문서를 찾아보실 수 있습니다. 대부분의 문서가 번역되어 있으니 부담없이 읽어보십시오.

만일 지금 두대의 컴퓨터를 크로스케이블로 연결해서 sygate 나 wingate (두 프로그램 모두 대표적인 IP공유 프로그램들이죠.)를 쓰시는 분들은 추가비용이 더 들어가게 될 것입니다. 386 이상의 컴퓨터가 추가로 필요하기 때문이지요. 또한 리눅스 라우터 박스가 생김으로서 기본적으로 3대 이상의 랜환경이 되게 되므로, UTP 케이블 사용자는 허브를 마련해야 하고 크로스케이블 대신 그냥 케이블을 다시 설치해야 합니다. 리눅스 라우터 머신을 쓰지 않고 모뎀이나 케이블모뎀을 공유하길 원하시는 분이라면 윈도우 환경에서 sygate 나 wingate 를 쓰시거나 리눅스 환경이라면 그냥 리눅스 머신에서 IP Masquerade 기능을 활용하는 것이 좋을 것입니다

- 무소음 라우터 시스템 준비

저는 원래 윈도우 환경에서 sygate를 사용하여, 하나의 모뎀을 3대의 컴퓨터가 공유하고 있었습니다. (혹자는 이것을 인간승리의 휴먼드라마라고 부르더군요.) 문제는 게이트머신이 되는 컴퓨터가 제 방에 있다는 것입니다. 제 방에 있는 컴퓨터를 항상 켜두고 살아야 했고, 밤이면 시끄러운 컴퓨터 소리에 잠을 제대로 이룰 수가 없었습니다.

그러던 중 어디선가 PC ROUTE 라는 프로그램에 대한 글을 읽게 되었습니다. 이 프로그램은 도스 상태에서 라우트기능을 해 주는 것으로서, 386, 486 의 저사양 컴퓨터에서도 완벽하게 동작한다는 내용이었습니다. 충격적인 사실은 디스켓 한장만 있으면 된다는 것이었죠. 도스에서도 되는데 리눅스에서 못할 이유가 없다고 생각하고 무소음 리눅스 라우터 박스를 만들기로 하였습니다. 그러던 중에 이미 지구의 한 구석에서 저와 비슷한 고민을 하고 있던 무리(?)를 알게 되었고, 고생할 필요없이 쉽게 그들의 결과물을 이용하게 되었습니다.

일단 아무 소리가 나지 않는 시스템을 만들기 위해서는 컴퓨터에 팬(FAN)이 존재해서는 안됩니다. 기본적으로 386이나 486DX2-50 까지는 CPU COOLER가 필요하지 않으므로 무소음 리눅스 라우터 박스를 만드는데는, 이들 컴퓨터가 최선의 선택이라 생각됩니다. 좋은 컴퓨터로 돌릴 것이면, LRP 로 만들지 말고 그냥 리눅스나 윈도우의 sygate를 사용하고 말죠...

무소음을 위해서는 파워 안에 들어있는 팬도 제거해야합니다. 일단 파워의 뚜껑을 열고, 팬을 제거합니다. 파워에 팬이 없으므로 파워에서 나오는 열을 방출하기 위해서 파워의 뚜껑을 덮지 않는 것이 좋습니다. 손이 닿아서 감전될지도 모른다고 생각하시는 분이 계실 지도 모르겠으나, 본체의 케이스를 덮어두는 것으로도 감전사고는 충분히 예방될 수 있습니다.

물론 본체 케이스도 열어두는 것이 더 좋겠지만 어린 조카들이 감전 당하는 것을 막기 위해서 덮어두도록 합니다. 그 대신 통풍을 위해서 본체의 슬롯을 막고 있는 것들을 모두 열어주고, 앞쪽의 베이를 막고 있는 것들도 모두 열어줍니다. 제 경우는 파워의 열이 위로도 빠져나오게 하기 위해서 본체 케이스의 위쪽에 구멍을 몇개 뚫어두었습니다. 집에서 구멍을 뚫는 것은 쉬운 일이 아니므로 근처 철문점에 가서 부탁하는 것도 좋습니다. 대신 케이스의 어디쯤에 구멍을 뚫어야 하는지 잘 살펴보세요. 파워의 열이 곧바로 나갈 수 있는 위치에 작은 구멍 여러개를 만드는 것이 중요합니다. 구멍이 너무 크면 이물질이 파워로 들어가게 되니 조심하십 시오.

아직까지는 LRP 설치를 위해서 비디오카드, 키보드, 모니터 등이 필요합니다. 물론 랜카드도 꼽아두어야죠. 랜카드에 따라서는 도스용 프로그램으로 IRQ 등의 각종 세팅을 해주어야만 인식되는 것들이 있는데, 이때는 랜카드를 구입할 때 제공한 디스켓에 포함되어 있는 프로그램들을 사용하여 설정하도록 합니다. 대부분의 랜카드는 이런 설정이 필요없으며, 있다고 해도 한번만 잡아주면, 그 다음부터는 계속 적용되므로 걱정할 필요가 없습니다.

이런 식으로 하드웨어를 준비하고 파워를 넣고 부팅을 해 보세요. 도스용 부팅 디스켓을 준비해서 제대로 부팅이 된다면 이제 LRP만 설치하면 됩니다. 참고로, 제 486은 한참 동안 부팅이 되지 않아서 고장난 줄 알았지만, 오랫동안 사용하지 않아서 배터리가 모두 방전되어 생긴 일이었습니다. 전원을 넣고 약 30분쯤 기다리니까, 배터리를 모두 충전했는지 갑자기 스스로 부팅을 시작했습니다.

TOP.gif

 


3. 리눅스 라우터 설치

 

- 압축풀기

하이텔, 나우누리 리눅스 동호회에 LRP 2.9.3 버전을 lrp293.tgz 이란 이름으로 자료실에 올려두었습니다. 이것을 받아서 사용하시면 됩니다. LRP 사이트에서 직접 다운 받고자 하신다면 ftp.linuxrouter.org 에서 직접 받도록 하세요. 현재의 stable 버전은 2.9.3 입니다. 본 페이지도 2.9.3을 기준으로 설명합니다.

먼저 다운로드 받은 lrp293.tgz을 적당한 디렉토리를 만든 다음 거기서 압축을 풀도록 합니다.

ex) tar xvfz lrp293.tgz
그러면 아래와 같은 구성으로 이루어진 디렉토리들을 볼 수 있을 것입니다.

- 파일의 구성
- LRP 디스켓 이미지 풀기

일단 기본적으로 포함되어 있는 이미지 파일을 디스켓에 담도록 합니다. 이 파일(idiot.image-2.9.3-1.44MB)은 2.9.3 디렉토리 아래에 있습니다.

ex) dd if=idiot.image-2.9.3-1.44MB of=/dev/fd0
혹은 cat idiot.image-2.9.3-1.44MB >/dev/fd0

이미 만들어진 이미지를 사용하는 이유는 디스켓을 포맷하고 리눅스로 부팅이 가능하도록 만드는 과정을 생략할 수 있기 때문입니다. 리눅스로 부팅가능한 디스켓을 만드는 방법은 뒤에서 고용량 포맷을 이용한 LRP 만들기라는 절에서 따로 다루기로 하겠습니다.

이미지파일을 풀고 디스켓의 내용을 살펴보면 다음과 같습니다.

linux : 커널 - FPU가 있는 CPU를 위한 커널
ldlinux.sys : syslinux boot loader
syslinux.cfg : 부팅과 관련된 다양한 옵션을 주는 설정파일
syslinux.dpy : syslinux display file. 부팅할 때 보여주는 텍스트 형식의 파일. 별 필요없음.
root.lrp
log.lrp?
modules.lrp
etc.lrp

- 모듈 삽입

이제 디스켓에 들어 있는 modules.lrp 파일을 여러분의 리눅스 시스템에 적당한 디렉토리를 만들고 그 곳에 복사하고 압축을 풀어줍니다.

ex) tar xvfz modules.lrp

압축을 풀면 ./lib/modules 라는 디렉토리를 볼 수 있는데 여기에 각자의 시스템에 필요한 모듈을 넣어주어야 합니다.

다운로드 받은 원래의 패키지에서 ./2.9.3/kernel/kernel-36pre2-1.tar.gz 을 압축을 풀면 modules 라는 디렉토리가 보이고, 그 아래에 fs, ipv4, misc, net 라는 디렉토리가 나오게 됩니다. 여기서 여러분의 시스템에 필요한 모듈을 선택해서 아까의 디렉토리(./lib/modules)에 집어 넣어야하는 것입니다.

모듈들은 서로 연관성을 가지기 때문에 modules.dep을 꼭 읽어보고 관련있는 모듈이 있으면 함께 복사해 주어야 합니다. 이 파일을 읽어보면 각 모듈이 어디에 사용되는 것인지 대강 감을 잡을 수 있습니다.

예를 들면 자신의 랜카드가 ne2000 호환 pci 랜카드라면 ne2k-pci.o 모듈 외에도 8390.o 모듈을 같이 포함시켜야 하는 것입니다. 또 ppp 를 쓰겠다면 ppp.o 모듈과 더불어 slhc.o 모듈도 포함시켜야만 합니다.

fs 디렉토리 아래에 있는 것들은 네트워크파일에 관련된 것들입니다. nfs와 samba 모듈이 있는데 필요하신 것을 선택해서 옮기면 됩니다. 참고로 LRP는 별도의 프로토콜을 가지고 있지 않기 때문에 여러분의 리눅스 라우터 박스를 원격관리하기 위해서는 nfs 정도는 필수적이라고 할 수 있습니다. 예를 들어서 모니터도, 키보드도, 비디오카드도 없는 리눅스 라우터 박스를 관리한다고 생각해 보세요. telnet 으로 log in 한다고 해도, 파일을 복사해서 넣거나 가져올 수 없습니다. 적당한 프로토콜이 없기 때문이지요. nfs를 통해서 연결한다면 파일의 이동이 자유롭게 되므로 별다른 이유가 없다면 꼭 설치하도록 합니다.
net은 랜카드와 관련된 것들 입니다. 여기서 중요한 것은 ipv4 디렉토리 아래있는 모듈들인데, 이것들이 없으면 IP 매스커래이딩이 이루어지지 않게 되므로 필요해 보이는 것들은 모두 ./lib/modules 에 넣어주어야 합니다.

misc에는 더 다양한 모듈들이 있습니다. ISDN과 관련 된 것, 시리얼포트 관련 등등.. 수도 없이 많습니다. 자신에게 필요한 것은 모두 복사하도록 합니다.

모듈들이 각각 종류별로 나뉘어 별도의 디렉토리에 들어있다고해서 이 디렉토리까지 만들어 가면서 복사할 필요는 없습니다. 필요한 것은 xxxxx.o 라는 화일들을 ./lib/modules 디렉토리에 복사하면 되는 것입니다.

별도의 설명이 없기 때문에, 파일명만 달랑(?) 보고서는 자신에게 필요한 모듈이 어떤 것인지 알기 힘들 수도 있습니다. 그런 분들은 LRP를 위한 커널소스를 받으셔서 자신의 시스템에 맞도록 다시 컴파일 하시기 바랍니다. 컴파일과 관련해서는 뒤절에서 다시 다루도록 하겠습니다.

이제 modules.lrp를 압축 풀었던 곳으로 가서 먼저 있던 modules.lrp를 삭제하고 다시 압축하도록 합니다.

ex) rm modules.lrp
tar cvfz modules.lrp etc var lib sbin

참고로 조금더 확실하게 압축하고자 하시는 분들은 tar에서 z 옵션을 주지 말고 파일들을 뭉친다음에 다시 gzip -9 옵션을 주고 압축하도록 하십시오. tar 에서 z 옵션을 주게 되면, gzip -6 을 default로 사용하게 됩니다. 이것은 최상의 압축률로 압축하지 않고 적당한 수준의 압축을 한다는 것을 의미합니다. 디스켓 한장에 리눅스를 담아야하기 때문에 약간의 크기도 매우 중요합니다.

ex) tar cvf modules.tar etc var lib sbin
gzip -9 modules.tar
mv modules.tar.gz modules.lrp

이렇게 새로 생긴 modules.lrp를 디스켓에 복사합니다.

설명이 무척 장황하고 복잡해 보이지만 지금까지의 작업은 자신이 필요한 모듈들을 modules.lrp에 포함시킨 후에 다시 압축하고 원래의 디스켓에 다시 넣는 작업이었습니다.
- 커널의 교체

위의 작업을 하면서 ./2.9.3/kernel/kernel-36pre2-1.tar.gz 을 압축 풀었을 때 2.0.36pre2-1-LRP.FPU-zImage 와 2.0.36pre2-1-LRP-zImage 라는 두개의 커널 파일을 볼 수 있었을 것입니다. 2.0.36pre2-1-LRP.FPU-zImage는 386sx와 같은 FPU가 없는 CPU를 위한 커널로서, FPU 에뮬레이터를 포함하고 있다. 2.0.36pre2-1-LRP-zImage 커널은 지금 디스켓에 있는 커널과 같은 것으로 FPU 가 있는 CPU를 위한 커널입니다. 만약 자신의 CPU에 FPU가 없다면 아래와 같이 FPU 에뮬레이터 기능이 있는 커널로 교체해 주어야 합니다. 대신 FPU 에뮬레이터 기능이 있는 커널이 다른 것보다 30KB 정도 더 큽니다.

ex) cp 2.0.36pre2-1-LRP.FPU-zImage /플로피마운트포인트/linux

TOP.gif

 

- 패키지(package) 설치

./2.9.3/packages/ 아래에는 6개의 패키지가 있습니다. 여기서 자신에게 필요한 패키지는 디스켓으로 복사하도록 합니다. 복사만 한다고 해서 되는 것이 아니라 디스켓에 있는 syslinux.cfg 파일을 편집해 주어야 한다.

syslinux.cfg 파일을 편집창으로 보면 맨 아래줄이 다음과 같을 것입니다.

append=load_ramdisk=1 initrd=root.lrp initrd_archive=minix ramdisk_size=4096 root=/dev/ram0 boot=/dev/fd0,msdos LRP=etc,log,modules

여기서 ppp 패키지와 gated 패키지를 디스켓에 복사했다면 .........LRP=etc, log, modules, ppp, gated 라고 고쳐주어야 합 니다.

패키지 이름만 가지고는 어떤 역할을 하는 것인지 모르시는 분이 많으실 것입니다. 그런 분들은 가지고 계신 유닉스, 혹은 리눅스 책 맨 뒤의 색인을 찾아보시면 찾으실 수 있을 것입니다. 혹은 인터넷 상에서 찾아보셔도 금방 어디에 쓰이는 것인지를 알 수 있습니다.

- 부팅

자, 이제 LRP 부팅 디스켓을 리눅스라우터박스가 될 386, 486으로 가져가서 부팅을 해 보도록 합시다. 지금까지 사용하던 시스템과는 차원이 다른(?) 엄청난 시간을 기다려야 할 것입니다. 제 경우에는 정확하게 2분 49초가 걸렸습니다. 느린 컴퓨터가 느린 드라이브로 느리게 압축을 풀고 램디스크에 설치를 하고 있으니 어쩔 수 없는 일입니다. 녀석은 최선을 다 하는 것이니 참고 기다리도록 합니다.

이때 나오는 메시지를 잘 보아야 합니다. 랜카드는 잘 잡혀가고 있는지 등등 마지막 쯤에 etc, module, ... 하고 나오면서 lrp 화일들을 설치하는 메시지가 나오는데 만약 etc(!), modules(!) 등등 마침표가 찍힌 메시지가 나타나면 이는 lrp 화일들을 설치하는데 실패했다는 뜻이니 다시 점검하기 바랍니다.

login: 프롬프트가 뜨면 root 라고 입력합니다.

갑자기 메뉴화면이 나왔을 것입니다. 이 메뉴들을 이용해서 필요한 파일들을 자신의 시스템에 맞도록 수정해 주어야 합니다. 어떤 부분은 주석처리를 해 주어야하고 어떤부분은 새로 고쳐주어야하는 등, 제법 설정이 난해해서 리눅스 네트웍 설정에 관한 기본지식이 있어야만 될 것입니다. 자신의 리눅스박스에서 라우터기능을 사용하고 계셨던 분들은 별 어려움 없이 설정을 마칠 수 있을 것입니다.

모르시는 분들은 통신상의 리눅스 동호회의 게시물들과 하우투(HOWTO) 문서들을 참조하시기 바랍니다. 꽤 복잡한 일이지만 피해갈 수 없는 일이죠. 한가지 요령을 말씀드린다면 잘 모르는 부분의 설정은 한번에 하나씩 설정해 나가라는 것이다. 괜히 세개 네개 설정을 한꺼번에 바꾸게되면 어느 부분이 문제인지 찾을 수 없기 때문입니다. 말이 쉽지 리눅스 초보인 저는 여기서 이틀의 시간을 보내야 했습니다. 흑흑..

예를 들어서 ppp 를 쓸 것이라면 우선 ppp 부터 설정해서 전화를 거는 것까지 완성을 시키고 그다음 랜환경을 설정하여 랜을 완벽히 동작시킨 다음 마지막으로 ip 매스커레이딩을 설정하는 순서가 좋을 것입니다. 처음부터 한번에 성공하기는 힘드니 관련 게시물을 찾아서 필독하시기 바랍니다.

메뉴화면에서 q를 누르면 쉘 화면으로 나가게 되는데, 여타 리눅스를 사용하는 느낌이 들 것입니다. 디스켓 한장 짜리든 500mb 짜리든 간에 둘다 엄연히 리눅스임에는 틀림없기 때문입니다. 다시 아까의 메뉴화면으로 돌아가고 싶다면 lrcfg (linux router configurator) 라고 입력하거나, exit를 입력하고 다시 로그인을 하면 메뉴화면으로 갈 수 있습니다.

쉘화면으로 나간 김에 암호를 정하도록 합니다. passwd 라고 입력하면 root 의 새로운 암호를 정할 수 있습니다. 물론 한번 정한 것도 바꿀 수 있죠. 일단 암호를 정하면, 앞으로 로그인할 때는 암호를 묻게 됩니다. 여기서 하나 주의 할 점... LRP는 컴퓨터의 램에 램드라이브를 만들고, 그 램드라이브에 리눅스를 설치, 동작합니다. 다 아시는 것 처럼 RAM은 일단 전원을 끄면 모두 사라집니다. 방금 정한 root의 암호도 디스켓에 backup을 해두지 않으면 모두 사라져 버린 다는 것을 명심해 두십시오. backup에 관해서는 뒤에서 설명하도록 하겠습니다.

ppp 설정은 /etc/ppp/ 에 관련 파일이 모두 있습니다. 모뎀은 /dev/ttySx로 잡히게 되는데, 제 경우는 COM2를 사용하고 있으며, /dev/ttyS1이 모뎀이 되었습니다. 여기서 주의할 점은 별다른 옵션 없이 ppp-on 스크립트를 만들게 되면 문제가 생깁니다. 저는 pppd에서 사용하는 options 라는 파일을 options.ttyS1로 파일명을 고쳐주었더니 제대로 동작했습니다. 또한 persist 옵션을 주면 접속이 끊어지더라도 자동으로 재접속을 시도하게 됩니다. 여기에 관해서는 네트워크 관련 HOWTO 중에서 PPP관련 문서를 잘 읽어보시기 바랍니다. 또한 제가 사용하는 LRP 이미지 파일도 한번 들여다 보시기 바랍니다.

그 다음 ppp 접속 스크립트를 만들어주고, PAP 인증을 사용하는 사람은 따로 편집해 주어야 합니다. 여기에 관한 것도 다른 게시물을 참조하거나, 네트워크 관련 HOWTO를 읽어보시고, 저 또한 PAP 인증을 사용하고 있으므로 필자의 LRP를 보아도 될 것입니다.

LRP에서 사용되는 파일 편집기는 edit 라고 입력하면 실행 됩니다. 저장은 CTRL-S , 편집기에서 빠져나오는 명령은 CTRL-C 입니다. 도스용 편집기와 비슷하기 때문에 사용에 어려움은 없을 것입니다.

ex) edit 파일명

TOP.gif

- 자동실행 스크립트

ppp 사용자들은 컴퓨터를 켜는 것과 동시에 접속스크립트를 실행시키고 싶을 것입니다. 이때는 /etc/rc.boot/0setserial 파일을 수정하면 됩니다. 원래는 시리얼을 설정하는 스크립트지만 부팅과 동시에 작동되므로 그 파일을 편집하는 것이 여러모로 편리하기 때문에 이 파일을 수정하도록 합니다. 그냥 마지막 줄에 접속스크립트명을 써 주면 됩니다.

필자의 예) /usr/sbin/ppp-on

이렇게 해 두면, 컴퓨터를 켜면 자동으로 접속되고, 끄면 당연히 끊어지게 됩니다. 참고로 일반 리눅스는 하드디스크로 동작하기 때문에 전원을 그냥 내리는 것은 무척 위험한 일이지만, 램드라이브로 동작하는 LRP는 shutdown 할 필요없이 그냥 전원을 내리면 됩니다.

또 다른 스크립트를 부팅과 동시에 실행 시키고 싶을 때도, 이 파일 안에 위와 같은 형식으로 써 넣어주면 됩니다. 여러분의 응용능력에 따라서 정말 다양한 기능의 리눅스 라우터를 만들 수 있다는 사실을 잊으시면 안됩니다.

- 외부로부터 root 접속

외부로부터 ROOT 접속을 가능하게 하려면 /etc/securetty 파일을 수정해야 합니다.
맨 마지막 줄에

ttyp0
ttyp1

을 삽입하도록 합니다. 보안에 문제가 있으므로 외부로부터의 root 접속은 막아두는 것이 좋겠지만, 모니터, 키보드, 비디오카드도 없이 사용하다가 설정 하나 바꾸기 위해서 모두 다 설치하는 것은 귀찮은 일이 아닐 수 없습니다. 일단 위와 같이 설정해 두면, telnet 접속을 통해서 리눅스 라우터 박스를 마음껏 관리할 수 있습니다.

간단하게는 ppp접속이 필요할 때, 윈도우의 이야기로 리눅스 라우터에 접속해서 로그인, ppp-on을 실행시키고, 다 썼으면 ppp-off 을 실행시켜서 연결을 끊을 수 있습니다. 복잡하게는 시스템 설정과 backup 까지도 할 수 있지요.

좀 더 연구해보면 외부 네트워크로 부터의 접근은 막고 내부 네트워크에서만 접속이 가능하도록 만들 수도 있습니다. 잘 연구해 보십시오. 어려운 일은 아닙니다
- log 파일 관리하기

리눅스라우터도 엄연한 리눅스이기 때문에 log 파일을 생성합니다. 일반적인 시스템이라면 별로 문제가 되지 않지만, 램드라이브를 사용하는 LRP 에서는 문제가 될 수 있습니다. 예를 들어서 log 파일이 자꾸만 커지게되면 나중에는 4메가 크기의 램드라이브가 꽉 차게 되버립니다. 이런 사태를 막기 위해서는 log 파일 생성을 적당히 제한해 주어야합니다.

최초의 메인메뉴화면(lrcfg) 에서 2번 System Settings 를 고르고, 7번 system log config 를 선택해서 적당히 수정해 주면 됩니다. log 파일이 생성되는 것을 원치 않는 작업 앞에 주석처리 (#) 를 해 주는 것으로 간단하게 설정을 마칠 수 있습니다.

- 백업하기

여러분의 LRP는 램디스크 상에서 운용됩니다. 아무리 수정을 잘 해 놓았더라도 일단 전원을 내리면 그것으로 사라지는 것이죠. 어떤 파일을 수정했던지간에 그 설정이 다음번에도 지속되기를 바란다면 반드시 백업을 해야합니다.

백업은 최초의 메인메뉴의 화면에서 backup(b) 메뉴를 선택하면 됩니다. 메뉴에 따라 수정한 것들이 플로피디스켓에 저장하게 되는데, 초심자는 일단 everything except log 정도로 선택하면 될 것이나 경험이 쌓이게 되면 수정된 부분에 관련된 패키지만 저장해 주면 됩니다.

예를 들면, /etc에 있는 어떤 파일만 고쳤을 때는 etc만 백업하면 됩니다. 특히 메뉴화면에서 설정파일을 수정할 때는, 편집기 화면 상단에 어느 디렉토리의 무슨 파일을 수정하고 있는지를 보여주기 때문에 쉽게 백업할 수 있습니다.

다시 한번 말하지만 항상 여러분의 리눅스가 램드라이브에 설치되어 있다는 점을 명심하시기 바랍니다.

- 다른 컴퓨터(client)의 네트워크 설정

이제 다른 컴퓨터의 설정을 환경에 맞게 바꾸어 줍니다. 윈도우를 사용하는 컴퓨터들은 네트워크 설정에서 TCP/IP 부분에 있는 gateway를 리눅스 라우터 박스의 IP주소로 설정해 주어야 합니다. 물론 LINUX를 사용하고 있는 컴퓨터에서도 그렇게 설정해야 합니다.
DNS 는 여러분의 ISP(Internet Service Provider)에서 제공하는 것으로 입력합니다. LRP 에는 네임서버가 설치되어있지 않기 때문에 DNS서버를 LRP 로 지정하면 외부로 접속이 되지 않습니다. 역시 네트웍 설정에 관한 기초지식이 필요할 것이므로 네트워크 관련 HOWTO를 상세히 읽어보세요.

- addons 설치하기.

LRP는 6개의 addons를 제공하고 있는데 설치하는 방법은 다음과 같습니다. 일단 필요한 addon을 아무 디스켓에 복사하고, LRP 디스켓으로 부팅합니다. LRP 가 부팅된 후에 addon이 들어 있는 디스켓을 마운트 시키고, addon을 /tmp로 복사합니다.

거기서 압축을 풀고, ./install 을 실행시킵니다. 이렇게 설치를 마친 후에 꼭~ 백업하는 것을 까먹지 말도록 합니다. 한번 백업해 두면, LRP 패키지에 포함되게 되므로, 위와 같은 작업은 더 이상 할 필요가 없습니다.

각각의 addon 패키지는 readme 파일을 포함하고 있으므로 읽어보면 어디에 쓰이는 것인지 쉽게 알 수 있을 것입니다. 예를 들면 모뎀+모뎀 등 두개의 라인을 사용하는 사람은 eqlnslv_12-1.tar.gz을 설치하는 것이 좋을 것입니다. 이것은 EQL line balancing 을 위해서 필요합니다.

TOP.gif

4. 고용량 플로피 부팅 디스켓 만들기

 

LRP를 설치해 보시면 알겠지만 아슬아슬하게 디스켓 한장에 들어 갑니다. 하지만 더 많은 기능을 위해서는 한장으로는 턱없이 부족한 것이 사실이며, 따라서 1.44MB의 디스켓을 1.72MB, 1.74MB 등으로 포맷해서 사용하는 것도 좋은 방법이다.

흔히 사용되는 방법은 래드햇 리눅스에는 포함되어 있지 않은 fdutils 를 사용하는 것인데 (데비안패키지에는 있음), 여기에는 superformat 등의 유틸이 포함되어 있어서 원하는 크기로 쉽게 포맷할 수 있습니다.

저는 rpm 패키지를 찾지 못해서 직접 설치해서 사용할 수 밖에 없었습니다.

중요한 것은 여러분이 사용하시는 리눅스에 device 파일을 생성시키는 것입니다. 이것을 만들지 않으면 고용량으로 디스켓을 포맷하는데 성공하더라도 제대로 마운트가 되지 않습니다. 마운트가 제대로 되지 않으면, 디스켓에 제대로 파일을 옮길 수 없는 것은 당연하겠죠? 자세한 것은 포함되어있는 설치방법(INSTALL)을 확인하시기 바랍니다.

그 다음 필요한 것은 syslinux-1.41 이라는 것으로 역시 데비안 리눅스에서 흔히 사용되는 것입니다. 도스에서의 sys.com 과 같은 역할을 합니다. superformat 으로 디스켓을 포맷한 후에 syslinux -s /dev/fd0xxxxx 라고 해 주면 디스켓이 부팅가능한 디스켓이 됩니다. syslinux는 도스에서도 실행이 가능한데 (원래 도스용 프로그램입니다.) syslinux -s a: 라고 해주면 됩니다.

이렇게 부팅이 가능하도록 만든 후에 커널 등의 필요한 파일들을 디스켓으로 복사해 줍니다. 어떤 파일이 필요한지는 처음에 이미지(idiot.image-2.9.3-1.44MB)를 풀어서 만든 디스켓을 참조하시면 좋습니다.

이제 가장 중요한 것이 하나 남았습니다. 디스켓에서 syslinux.cfg를 편집해 주어야 합니다. 이 파일의 맨 마지막 줄에 root=/dev/ram0 boot=/dev/fd0,msdos 내용이 포함되어 있는데 이것을 boot=/dev/fd0u포맷한크기,msdos로 고쳐주어야 합니다. 이 작업을 하지 않으면 부팅이 제대로 이루어지지 않기 때문입니다.

ex) superformat /dev/fd0u1722
(도스에서) syslinux -s a:
(syslinux.cfg)..... boot=/dev/fd0u1722,msdos ......

이제 원래보다 용량이 훨씬(?) 늘어났으므로 보다 널널한(?) 환경에서 필요한 패키지를 설치하도록 하십시오.

TOP.gif

 

5. CRON을 이용한 접속관리

 

CRON 을 이용하면 주기적으로 반복해야하는 작업을 자동으로 처리 할 수 있습니다. LRP를 부팅할 때, CRON 데몬이 자동으로 시작 되므로 /etc/crontab 파일을 편집해 주는 것만으로 쉽게 관리할 수 있습니다. 저처럼 통신요금정액제를 쓰는 분들에게는 꼭 필요한 기능일 것입니다.

아래는 저의 CRONTAB 파일의 모습입니다.

50 3 * * * root /usr/sbin/dateconfig
50 23 * * * root /usr/sbin/dateconfig
59 23 * * 7 root /usr/sbin/ppp-off
59 23 * * 1-5 root /usr/sbin/ppp-off
59 3 * * 1-6 root /usr/sbin/ppp-off

세번째 줄은 일요일 밤 11시 59분에 ppp 접속을 끊는 스크립트를 실행시킨다는 것이고, 네번째 줄은 월요일에서 금요일까지 역시 같은 시간에 접속을 끊겠다는 것입니다. 마지막 줄은 월요일에서 토요일까지 오전 3시59분에 접속을 끊겠다는 것이죠.

이상한 점을 느끼지 못 하셨나요? 저의 crontab 설정은 전혀 통신요금 정액제 시간과 무관하게 설정되어 있습니다. 왜냐하면 저는 GMT 시간을 사용하기 때문입니다. 예를 들면, 일요일 밤 11시59분은 한국시각으로 월요일 오전 8시59분 입니다. 제가 GMT를 사용할 수 밖에 없었던 이유는 다음 절에서 설명하기로 합니다.

6. 자동으로 세계표준시에 맞추자.

 

컴퓨터의 시간은 잘 맞춰 놓는다고 해도 며칠이 지나면 조금씩 실제시각과 차이가 나기 시작합니다. 컴퓨터에 따라서는 하루만 지나도 약 1분 이상 차이가 나기도 합니다. 만약 시간 설정이 잘못된다면 앞에 절에서 작성한 crontab은 조금씩 엉뚱한 시간에 작동하게 되겠죠? 예를 들어서 cron 이 잘못 작동하게되어 접속이 끊어지지 않는다면 정액제 시간이 끝난 시간에도 접속이 유지되고, 저는 엄청난 전화요금을 내야 할 것입니다.

또한 제가 사용하는 리눅스 라우터 박스는 키보드도, 비디오카드도, 모니터도 없는데, 바이오스로 들어가서 시간 하나를 다시 맞추기 위해 모두 다시 설치할 수는 없는 일입니다.

자동으로 시간을 맞추기 위해서 필요한 것은 래드햇 리눅스에 기본적으로 포함되어 있는 /usr/bin/rdate 와 /sbin/hwclock 입니다.

ex) rdate -s shinbiro.com && hwclock -w

위와 같이 실행한다면 신비로 서버에서 시간을 받아와서 시간을 고치고 (rdate), 그 시간을 시스템 바이오스에 기록한다는(hwclock) 것입니다. 저는 이것을 dateconfig 라는 스크립트로 만들어서 앞절에서 본 바와 같이 cron으로 매일 특정시간에 (끊어지기 원하는 시간 10분 전에) 시간을 수정하도록 만들었습니다.

위의 스크립트를 사용하게 되면 LRP 리눅스 라우터박스는 시간이 무조건 GMT시간으로 바뀌게 됩니다. 그래서 제가 GMT 시간을 사용할 수 밖에 없었던 것입니다. 참고로 모든 리눅스는 GMT 시간을 지역에 맞게 변환해서 사용하는 것 같은데 어떤 루틴이 그런 역할을 하는지 몰라서 그냥 사용하고 있습니다. LRP 에서도 로컬타임을 사용하고 싶다면 여러분이 직접 연구해 보시기를 바랍니다.

래드햇 리눅스를 설치할 때, xntp를 설치하셨다면, ntpdate 라는 것을 이용하는 것도 가능합니다. 이것을 사용하고 싶다면 ntpdate time-a.nist.gov 라고 하면 됩니다.xntp 에 대한 보다 자세한 정보가 필요하신 분은 여기에 가 보세요.

그런데 LRP 에는 위에서 말한 그런 프로그램들이 포함되어 있지 않습니다. rdate, hwclock, ntpdate 뿐만 아니라 다른 프로그램도 포함해서 사용하고 싶다면, 늘 했던 것처럼(?) root.lrp 파일의 압축을 풀고 필요한 유틸을 첨가한 후에 다시 압축, 디스켓에 옮겨야 합니다. 귀찮은 작업입니다. 좀 더 쉽게 이런 작업을 하기 원하시는 분은 LRP를 설치할 때, NFS 모듈을 삽입해 두셨어야 합니다. NFS에 관련된 것은 다음 절에서 설명하도록 하겠습니다.

TOP.gif

 

7. 무소음 리눅스 라우터 박스와 NFS

 

NFS (Network File System) 는 랜으로 물려있는 다른 컴퓨터의 저장매체를 mount 시켜서 자신의 매체처럼 사용할 수 있도록 해 줍니다. 이것은 LRP 에서 매우 유용하게 사용될 수 있습니다. 기본적으로 LRP는 아무런 프로토콜도 가지고 있지 않기 때문에, 원격관리할 때 파일을 자신의 컴퓨터로 옮겨 오거나, LRP로 집어넣을 수가 없습니다. 즉, 파일의 이동은 디스켓을 통해서만 가능하게 됩니다.

하지만 NFS를 이용, LRP에서 다른 리눅스 컴퓨터의 하드디스크를 마운트시킨다면 파일의 이동은 제한이 없어지게 됩니다. LRP를 설치할 때, NFS 모듈을 넣어두셨다면 간단한 작업을 통해서 NFS를 사용할 수 있습니다.

문제는 지금 LRP에 포함되어 있는 mount, umount 유틸이 NFS를 지원하지 못한다는 것입니다. 따라서 두 파일을 자신의 리눅스 시스템에 들어있는 것과 바꾸어 주어야 합니다. 이 작업은 디스켓을 통해서 할 수 밖에 없겠죠?

일단 두 파일을 바꾸어주고, 자신의 리눅스 시스템에서 NFS를 위한 설정을 해 줍니다. 자신의 리눅스 시스템에서 NFS를 지원하도록 만드는 방법은 리눅스 월드 ’98년 8월호나HOWTO를 참조하도록 하십시오.

모든 준비가 끝났다면 telnet 으로 리눅스 라우터박스에 접속합니다. 그리고 NFS 마운트를 시켜보세요.

ex) mount -t nfs soo:/pub /mnt

soo는 제 리눅스 시스템이고 /pub는 마운트시키고 싶은 상대의 디렉토리를 의미하고 /mnt 는 LRP 에서 마운트 시킬 장소를 의미합니다. 참고로 LRP에는 NFS 데몬이 들어있지 않기 때문에 꼭 telnet 접속을 통해서 NFS 마운트를 시킬 수 밖에 없습니다. LRP 에 NFS 데몬을 삽입하시고 싶은 분은 한번 연구해서 해 보시고요.

이렇게 마운트를 하고서, 필요한 파일을 LRP 로 복사해 옵니다. 그리고 까먹지 말고 꼭 backup 하시고요. NFS를 사용하면 더 이상 디스켓을 가지고 왔다갔다 할 필요가 없습 니다.

모듈을 설치할 때, 눈썰미가 있으신 분은, samba 모듈이 있었다는 것을 기억하고 계실 것입니다. NFS 사용을 꺼리시는 분은 삼바를 이용해서 파일을 공유하셔도 됩니다.

diskless booting 도 NFS 를 통해서 이루어집니다. 이것을 구현한다면 플로피디스크드라이브도 필요없는 리눅스 라우터 박스를 만들 수 있습니다. 자세한 것은 HOWTO 중에서 Diskless mini HOWTO를 참조하시기 바랍니다.

TOP.gif

 

8. 주어진 커널은 싫다!

 

기본적으로 주어진 커널을 사용하기 싫으신 분들도 계실 것입니다. 저는 486을 사용하는데 386 에 맞춰서 컴파일된 커널을 사용하는 것이 자꾸 손해보는 느낌이 들더라고요. 그리고 분명히 제가 사용하지 않는 기능이 커널에 포함되어 있을 것이고, 그것 때문에 커널의 크기도 커지고, 메모리도 더 차지하게 되는 것이 마음에 들지 않았습니다. (LRP 리눅스라우터를 사용하다보면 작은 크기에도 매우 민감한 반응을 보이게 됩니다.)
저와 같은 생각을 가지고 계신 분은 직접 리눅스 라우터용 커널을 컴파일 하십시오.

우선 2.0.36 커널을 구합니다. ftp.kreonet.re.kr 이나 ftp.kernel.org 에 가시면 이 버전의 커널을 구할 수 있습니다. 다운로드 받은 파일을 자신의 리눅스 시스템 /usr/src 에서 풀어줍니다.

그 다음 ./2.9.3/kernel/kernel-36pre2/patches 에 들어있는 2.0.36-pre-patch-2.diff 를 제외(!)한 나머지 *.diff 파일들을 /usr/src 에 복사를 하시고, 커널 패치를 해 줍니다. 2.0.36-pre-patch-2.diff 로 패치를 시도하면 에러가 발생할 뿐이니 절대로 하지 마십시오.

ex) patch -p1 -d linux <ide-floppy-pre34.diff

위와 같은 형식으로 5개의 diff 파일로 커널패치를 합니다. 그 다음은 평소 커널 컴파일을 하는 식으로 해 줍니다. 단, 커널 컨피그는 ./2.9.3/kernel/kernel-36pre2/2.0.36pre2-1-LRP-config 파일을 이용하십시오. 일단 이 커널 컨피그파일을 불러온 후에, 거기서 필요없는 부분을 지워나가는 것이 문제가 생길 소지가 적습니다. 잘 모르는 부분은 그냥 내버려 두는 것이 좋고요.

make bzImage 를 이용해서 컴파일을 한다면 커널 파일 크기가 좀 더 작아지므로 디스켓의 용량을 아낄 수 있습니다. 생성된 커널을 디스켓에 linux 라는 이름으로 복사해서 넣으면 커널의 교체가 끝나는 것입니다. 486에 486 에 맞는 커널을 사용 기분은 호부호형을 허락받은 홍길동의 심정과 비슷하지 않을까요...?

저는 여기서 문제가 생겼는데요. 커널을 교체한 이후 ftp 접속만 하면 계속 illegal port 에러가 생겼습니다. 여러번 커널을 컴파일 했지만 문제를 잡지 못하고, 결국 ip_masq_ftp.o 모듈을 모듈로 설치해 주었더니 그런 문제가 사라졌습니다. 참고하시기 바랍니다.

9. 완성

 

모든 것을 테스트 후에 완성되었다는 것이 확인 되었다면, 과연 여러분의 리눅스 라우터가 얼마나 많은 자원을 사용하고 있는지 확인해 보십시오. free 명령으로 램은 얼마나 여유가 있는지를 살펴보시고 df 명령으로 램드라이브는 얼마나 남아있는가도 알아보십시오.
만약 램드라이브가 100kb 이상 남아 있다면 이것은 낭비라고 할 수 있습니다. 이럴 때는 램드라이브의 크기를 줄이고, 그렇게 확보한 램을 리눅스 라우터가 사용할 수 있도록 해 주는 것이 효율적일 것입니다.

램드라이브의 크기를 조정하기 위해서는 디스켓에 있는 syslinux.cfg 파일을 편집하셔야 합니다.

....... ramdisk_size=4096 .......

이렇게 보이는 곳이 있는데.. 램드라이브가 사용한 용량보다 100kb 정도 더해서 고쳐주세요. 너무 빡빡하게 설정하면 log 파일이 생성될 공간이 모자라게 될 것입니다. 제 경우에는 3500이 적당했습니다.

모든 것이 완벽하다면 디스켓을 한장 더 백업해 두도록 합시다. 이제까지 고생 고생해서 만든 것을 디스켓 에러로 모두 날릴 수가 있으니까요. 여러분의 리눅스 시스템에 백업해 두시는 것도 좋은 생각입니다.

ex) dd if=/dev/fd***** of=lrp293.img

위와 같이 하면 lrp293.img 파일이 생성될 것입니다. 나중에 새로운 똑같은 디스켓을 만들고 싶을 때는 새 디스켓을 플로피디스크드라이브에 넣은 후 dd if=lrp293.img of=/dev/fd***** 라고 하면 됩니다.

이제 LRP 시스템의 바이오스를 확인해 보도록 하십시오. Standard.... 라는 부분에 키보드와 비디오카드에 관련된 옵션이 있다면 둘다 Disable로 바꾸십시오. 이렇게 하면 부팅할 때 키보드와 비디오카드를 더 이상 찾지 않게 됩니다. 그렇다고해서 나중에 사용을 못하는 것은 아닙니다. 단지 부팅할 때, 키보드나 비디오카드가 없다고 에러나는 것을 방비하기 위함이니 걱정할 필요가 없습니다.

바이오스 상에서 비디오카드와 키보드에 관한 옵션을 disable 로 바꾸셨다면 이제 비디오카드와 키보드를 제거하도록 하십시오. 어차피 남는 것이니 꼽아두어도 상관 없을지도 모르지만 전기도 아끼고 전력소모가 적으면 파워의 열도 적게 나오기 때문에 어지간하면 빼두는 것이 좋습니다. 특히 파워에서 팬을 제거하신 분들은 비디오 카드에서 상당량의 열이 방출되므로 빼두는 것이 좋습니다. 케이스를 벗겨두고 사용하시는 분들은 열 방출에 대해서는 신경 쓸 필요가 없겠습니다만...

이제 앞으로는 모든 설정을 telnet을 통한 root 접속을 이용해서 바꾸면 됩니다. 통신프로그램 이야기로 접속해서 해도 되고요.

그럼 여러분의 무운을 빕니다.

꼬랑지 : 3.5 인치 대신 5.25 인치 드라이브를 쓰는 방법도 가능할 것입니다. 2대의 5.25 인치 드라이브를 활용할 수도 있고, 3.5인치 드라이브 두대를 활용하는 방법도 있습니다. 이것은 여러분이 직접 연구해 보시기를..

꼬랑지2 : 위에서 설명한 것은 아주 기본적인 시스템구성만을 설명한 것입니다.

http://www.linuxrouter.org 홈페이지에는 여러가지 애드온 및 커널설정 등에 관한 자세한 자료가 있으니 꼭 참고하시기 바랍니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,041 명
  • 현재 강좌수 :  35,855 개
  • 현재 접속자 :  100 명