Copyright (c) 1999, Josh Gentry 번역 : 배 철수 [리눅스 월드 발행인]
|
Abstract Copyright 1999 Josh Gentry Acknowledgments
상당수의 정보는 Gert Doering의 mgetty+sendfax
온라인 문서에서 나왔다. PAP에 관한 많은 정보는 Olaf Kirch의 Linux Network Administrators’Guide 및 S.u.S.E. Support Data Base (http://wi-pc44.fh-konstanz.de/support-db/sdb_e/kfr_17.html)에서 구했다. 이 문서의 많은 정보는 Mr. James Hart를 위해 Linux RedHat 5.1 다이얼인 서버를 셋업하는 과정에서 얻었다. 그는 Albuquerque, NM. Tony 에 있는 Technical/Vocational Institute의 선생님이다. Lucero는 나와함께 이 일을 했었다. 그들의 도움과 안내가 유익했다. 끝으로 리눅스 커늘 및 어플리케이션을 개발하는데
도움을 주는 모든 사람들에게 감사한다.
Disclaimer
1. 서론(Introduction ) 다이얼인 서버는 모뎀과 전화선을 구비하고서 다른 호스트가 전화선과 모뎀으로 접속하는 것을 허용한다. 이렇게 하는데는 여러 이유가 있다. 1.1 Raison d’etre (무슨 뜻이죠?) 리눅스 다이얼인 서버를 셋업하는데 필요한 대부분의 정보는 LDP HOWTO에 있다. 하지만 서버를 셋업하는데 내게 가장 큰 장애는 정보의 분산이었다. 이 문서는 이러한 필요 정보를 잘 조합해서 순서대로 보여준다. 1.2 가이드로서의 이 문서 다이얼인 서버를 셋업하는건 흔한 일이나 간단한 작업은 아니다. 이 문서는 그 과정을 순서대로 보여주려고 한다. 하지만 당신은 다른 문서들을 더 참고해야 한다. 위에 나열한 LDP HOWTO가 이 문서에 대한 중요한 동반자가 되므로 위 순서대로 참조해야 한다. 덧붙여서 당신의 getty와 PPP 패키지에 포함된 문서를 무시하지 마라 1.3 클라이언트 와 서버 전화선을 통해 두 호스트를 연결하는데 사용하는
프로토콜은 기술적으로는 peer-to-peer 프로토콜이다. 즉 연결을
시도하는 측과 받아주는 측 사이에는 아무런 차이가 없다. “ 당신이 PPP 연결을 하기위해 접속을 시도하는 경우 당신은 클라이언트이다. 당신이 연결되는 측은 서버이다. “ (Linux PPP HOWTO, Hart) 나는 이 문서내에서 이 개념을 사용할 것이다. 1.4 배포본에 따른 차이점 RedHat Linux 5.1에서의 경험으로 이 문서에 대한 정보가 다른 배포본에도 적용된다고 생각한다. 배포본 간에 차이가 있는 경우 별도로 업급하겠다. 1.5 관련 소프트웨어 패키지 Linux kernel v2.0.34--
2. 모뎀 설치 호스트가 다이얼인 서버가 되기위해서는 물리적으로 서버로 다이얼 할 수 있어야 한다. 이는 서버에 적어도 한 개의 모뎀과 전화선이 있어야함을 의미한다. 모뎀은 시리얼 장치이다. 따라서 당신이 Serial HOWTO 와 Modem HOWTO를 읽기를 권한다. 2.1 모뎀 종류 플럭 앤드 플레이(Plug-and -Play) 모뎀은 리눅스에서 잘 지원되지 않는다. 이는 점퍼로 셋업되는 모뎀이나 외장모뎀을 써야한다는 뜻이다. 어느 모델이 좋은지는 판매업체에 문의하라. 2.2 포트(Ports) 시리얼포트(Serial ports)는 다른 모든 I/O(Input
Output)포트처럼 번지를 갖고 있다. 기본적으로 리눅스는 4개의
시리얼 장치를 초기화한다. 만약 당신이 이 네개 외의 다른 포트를 사용한다면 “setserial” 명령으로 초기화 해야한다. 자세한건 “setserial” man 페이지를 보라. 외장모뎀은 피시 외부의 시리얼포트(RS-232 ports) 에 연결된다. 이 포트들은 자동으로 리눅스에 의해 번지가 할당된다. 내장모뎀은 피시 내부의 PCI 또는 ISA 슬롯에 꼽힌다. 내장모뎀은 실제로 모뎀에 시리얼포트를 합한것이다. 슬롯에 꼽히는건 모뎀의 시리얼포트이다. 이 모뎀은 당신이 포트주소를 모뎀에 부여해야한다. 이것이 당신이 점퍼 셋팅 모뎀을 써야하는 이유이다. 당신은 점퍼로서 수동으로 주소와 IRQ를 맞춘다. 모뎀에 딸려온 매뉴얼이 포트 주소와 IRQ를 맞추는 방법을 설명할 것이다. 만약 당신의 피시가 두개의 외부 시리얼포트(RS-232)를 가지고 있다면 리눅스 Modem HOW-TO는 당신의 내장 모뎀 주소를 ttyS2또는 그 이상으로 맞출걸 권한다.
3. 커늘 지원 이 부분은 리눅스 초보자에게 가장 두려운 과정
중 하나이다. 나도 그러했다. 하지만 생각처럼 어렵지는 않다. 그리고
실패하더러도 커늘 컴파일을 다시하면 그만이다. 커늘에 PPP 드라이버를 컴파일해 넣는 것을 대신할 방법이 있다. 드라이버를 로더블 모듈 (loadable module)로 설치할 수 있다. 이렇게하는 이점은 커늘이 작아지고 컴파일할 필요가 없다는 것이다. PPP 드라이버(driver)는 커늘에 링크되고 필요시에만 메모리에 올려진다. 드라이버를 커늘에 컴파일해 넣는 이점은 PPP
실행 속도가 빠르다는 것이다. 당신은 아래에 기술한것처럼 커늘을
리컴파일 하므로서 로더블 모듈을 커늘에 링크할 수 있다. “lsmod” 명령은 현재 설치되어 있는 모듈을
보여준다. 모듈을 제거하는 명령도 있다. 이 명령들이 들어있다면
man 페이지도 있을 것이다. 3.1 커늘과 소스코드 커늘은 바이너리 파일이고 실행프로그램이다.
개발자들은 커늘을 실행파일로 쓰지 않는다. 리눅스에서는 당신은 커늘 실행파일을 만든 소스코드를
갖고 있다. 3.2 커늘 재컴파일(Recompiling the Kernel) 커늘을 컴파일하려면 당신은 구성파일을 만들어야 한다. 당신은 구성파일을 봄으로써 당신이 필요로 하는 기능이 커늘에 포함되어있는지 여부를 알 수 있다. 대부분의 다이얼인 서버는 랜에 연결된 호스트일
것이다. 나는 xconfig를 사용하기를 좋아한다. 이것은 커늘 구성파일을 보거나 수정해주는 그래픽 툴이다. 이는 당신이 X-windows를 설치해서 가동하고 있어야 하며 Tk가 설치되 있어야 한다. Xconfig 를 사용하면 당신은 “Network
devices” 카테고리에서 SLIP와 PPP 지원 옵션을 발견할 수
있다. SLIP 와 PPP 다이얼인 서버로 사용하려며 이들이 지원되야
한다. 아래는 기본적인 절차이다. 1. 비상시를 대비해 현재의 커늘을 백업하라.
Linux Kernel HOWTO 는 zImage를 만든 후 “make zlilo” 명령을 주면 새 커늘을 복사 및 설치해준다고 나와 있으나 내게는 작동하지 않았다. 역자 주 ▶
4. gettys 당신은 모뎀 통신을 다룰 getty를 필요로 한다.
보통 inittab 에서 시작하는데 getty는 백그라운드 프로세스로 작동한다. 이 임무를 수행할 수 있는 여러 getty가 있다.
이 문서는 mgetty를 사용한다. 당신은 mgetty+sendfax 패키지와
공식 문서를 Gert Doering의 웹사이트인http://www.leo.org/~doering/mgetty 에서 구할 수 있다. 가장 중요한 파일은 /etc/mgetty+sendfax/mgetty.config이다.
디폴트 셋업에대한 변경을 하려면 mgetty 문서를 참고하라. mgetty를 시작하려면 /etc/inittab을 수정하라. 여기에 serial and modem HOWTO가 도움이 되는 경우가 있다. mgetty 에게 어느 시리얼포트를 모니터할지를 지시해야 한다. 리눅스에서는 ttyS0-3이다. 세번째 내장 포트(모뎀)에대해서 우리는 아래처럼 /etc/inittab에 추가했다. S2:2345:respawn:/sbin/mgetty ttyS2 -D /dev/ttyS2 “-D” 옵션은 mgetty 에게 팩스가 아닌 데이터만을 기다리라고 말한다. 수정 후 initd가 inittab를 다시 읽도록 “kill -1 1” 명령을 주라. mgetty가 다시 시작할 것이다. 역자 주 ▶ 만약 당신이 멀티포트를 사용한다면 이 포트들의 이름은 리눅스가 초기화하는 포트와 다르다. mgetty와 AutoPPP에 관한 유명한 문서에서 Mick Dennis는 Cyclade Cyclom16YeP 를 /dev/ttyC*로 부르고 있다. 디폴트 셋팅을 사용하면 mgetty는 SLIP (Serial Line Internet Protocol) 연결을 시도하며 /etc/passwd 파일을 통해 인증을 허락한다. 이는 사용자에게 쉘 어카운트로 login하는 것을 허용한다. 필요시 SLIP 연결 후 사용자가 pppd를 가동하는것을 제공할 수 있다. 그러려면 우선 모든 사용자가 pppd를 실행할 수 있도록 아래 명령을 주라. 역자 주 ▶ chmod u+s /usr/sbin/pppd 다음에 이라인을 /etc/bashrc에 추가하라. alias ppp=”exec /usr/sbin/pppd -detach”
ppp:x:351:230:pppclient:/home/ppp:/usr/sbin/pppd 사용자는 “ppp”로 login 한다. 패스워드를
넣으면 pppd가 자동으로 시작한다. 1. 내컴퓨터 4.1 AutoPPP 와 mgetty 대부분의 윈95 사용자들은 연결 후 login 절차를
좋아하지 않는다. 연결 후 자동으로 ppp를 시작하는 옵션이 mgetty에서
가능하다. 4.2 mgetty 컴파일 주] 나는 몇몇 사람들에게서 Redhat 5.2 에서 mgetty를 가동할때 AutoPPP 옵션이 포함되어 있다고 들었다. AutoPPP가 가동되기 위해서는 makefile에서 110번째 라인 근처에 아래 라인을 넣어야 한다. CFLAGS=-02 -Wall -pipe -DAUTO_PPP 그 후에 mgetty 를 mgetty 문서에
나온 순서로 컴파일하라. /AutoPPP/ - - /usr/sbin/pppd file /etc/ppp/options.server 이렇게 구성이 완료되면 mgetty는 LCP configure
요청을 받으면 자동으로 pppd를 시작한다. “file” 옵션은 pppd가 디폴트 /etc/ppp/options
파일 대신 /etc/ppp/options.server 파일을 읽으라는 뜻이다. 당신이 이미 /etc/mgetty+sendfax/mgetty.config를
필요로 하는 바에 따라 수정했다면 모든 절차가 완료되었다. 주 ▶
5. PPP (Point-to-Point Protocol) Point-to-Point 프로토콜은 전화선을 통한 연결에 사용되는 가장 인기있는 프로토콜이다. 5.1 pppd 컴파일 PPP 패키지의 문서에 있는 지시를 따르라. 새도우 패스워드(shadow password)를 사용한다면 다음 명령을 필요로 한다. make HAS_SHADOW=1 윈도우 호환을 위해 MS-DNS 옵션과 새도우를 사용한다면 아래와 같다. make USE_MS_DNS=1 HAS_SHADOW=1 이 부분에 대한 자세한 사항은 5.2 pppd 구성 PPP 는 /etc/ppp디렉토리에 있는 pppd에 의해
읽혀지는 옵션 파일을 수정함으로써 구성된다. 만약 당신이 PAP 이나 CHAP을 사용하지 않는다면 /etc/ppp/options.server 파일은 아래와 같다. -detach -detach : 백그라운드 프로세스가 되지 않게 한다. asyncmap 0 : pppd 가 rlogin/telnet 콘넥션에서 작동되게 한다. 역자 주 ▶ Modem : 모뎀 제어라인을 사용한다. 역자 주 ▶ 역자 주 ▶ Proxyarp : 클라이언트의 IP address에대해 서버의 NIC(랜카드)에 ARP 테이블을 만든다. ms-dns : Microsoft 의 클라이언트가 DNS 서버의 주소를 지정한다. 5.3 PAP 설정 PAP (Password Authentication Protocol)는 PPP에서 상대를 인증하는 두개의 프로토콜 중 하나이다. 다른 하나는 CHAP(Challenge Handshake Authentication Protocol) 이다. CHAP은 보다 안전한 프로토콜이나 PAP만큼 널리 지원되지 않고 있다. 그래서 이 문서는 PAP 사용을 설명한다. PAP 과 CHAP 에대한 자세한 설명은 Olaf Kirch’s Linux Network Administrators’ Guide를 참고하라. PPP는 기술적으로 peer-to-peer 프로토콜이므로
PAP은 양방향의 인증을 제공한다. PPP 서버가 PAP를 사용하도록 요청하는 건 쉽다.
/etc/ppp/options.server 파일에 아래 라인을 추가하라. 이렇게 구성하면 pppd는 클라이언트의 login 이름과 패스워드를 /etc/ppp/pap-secrets 에서 확인한다. 클라이언트는 /etc/ppp/pap-secrets 파일에서의 지정과 합치되야 접근을 허용받는다. 예를들면 만약 “server” 와 “addrs” 필드가 지정되면 클라이언트는 login 네임과 패스워드가 지정된 서버와 IP 어드레스/FQDN에서 보내져야만 접근을 허용받는다. 5.4 PAP 을 /etc/password 에서 사용하기 만약 당신이 접근을 허용하는 모든 클라이언트에대해 /etc/ppp/pap-secrets 파일에 지정하기를 원하지 않는다면 당신은 /etc/ppp/pap-secrets 파일 대신 /etc/passwd 파일을 login 네임과 패스워드 검사에 사용할 수 있다. “login” 옵션을 /etc/ppp/options.server에 추가하라. 아래와 같을 것이다. -detach 만약 “login” 옵션이 사용되면 /etc/ppp/pap-secrets
파일은 필요없다. 이는 오히려 적절한 PAP의 가동을 방해한다. * * “” /etc/ppp/pap-secrets 에 이런식으로 지정하는
것은 /etc/passwd 에 있는 개개의 계정에대해 PPP 접근을 불허하도록
구성할 수 있다는 이점이 있다. username * - “username” 은 PPP 접근을 불허하는 사용자의 계정명이다. 예를들면 5.5 PPP 에서 IP Address 할당 PPP가 작동하려면 클라이언트는 IP address를 부여받아야 한다. 대부분의 다이얼인 클라이언트는 자신의 고정 IP address를 갖지 않는다. 그래서 클라이언트가 연결하는 시리얼포트에 IP 어드레스를 할당해 주는게 필요하다. 위에서 우리는 PPP 서버의 옵션 파일인 /etc/ppp/options.server를
구성했다. 예를들어 ttyS2에대해서는 /etc/ppp/options.ttyS2를
만들면 된다. 그 파일에 지정할 수 있는 옵션 중 하나는 PPP가 연결하는
포트에 IP address를 할당하는 것이다. ii.jj.kk.ll:mm.nn.oo.pp 첫번 주소는 서버의 IP address이고 두번째 주소는 PPP 연결이 이루어 지는 시리얼포트에 할당되는 주소이다. 시리얼포트에 할당하는 주소가 당신의 서브넷에서 정당한 주소여야하며 다른 호스트에 할당되어 있지 않아야 한다.
6. 축하 이제 끝났음 이 문서에 대한 문의는 jgentry@swcp.com으로 하도록... |