>> Delete No. 12938 article
No. PPP서버를 하고자 하는데....

등록 2000-11-29 12:37:00 By localhost     조회 2
이름 눅서    

		PPP서버를 설치할려고 하는데... 외부계정을 줘서 사용자 인증을 받고요.
많은 가르침 바랍니다. 일단 제가 가지고 있는 문서를 동봉합니다.  이외에
고수님들의 많은 가르침 바랍니다.
4. PPP서버 설치 및 운영
 1. PPP 프로토콜의 개요
PPP(Point to Point Protocol)란 시리얼라인에 인터넷용 프로토콜인 TCP/IP
를 싣기위해 IETF(Internet Engineering Task Force)에서 제정한 표준 규약
이다. 이는 RFC(Request For Comments) 1332, 1334, 1661, 1662에 규정되어
있다. PPP는 본래 IP 프로토콜을 전송하기위해 만들어졌지만 IPX 등 다른 프
로토콜도 동시에 전송 가능하므로 멀티프로토콜을 필요로 하는 라우터에서
도 사용되고있다. 또한 PPP는 전송매체와는 독립적으로 작동하므로 싱크, 어
싱크 연결에서 모두 사용된다.
2. PPP 프로토콜의 탄생배경
인터넷의 초창기에는 TCP/IP를 WAN(Wide Area Network)에서 사용하기위해 전
용회선과 고가의 전용장비를 사용하였다. 그러나 인터넷 사용이 확산되면서
한 두대의 개인용 PC를 인터넷에 연결하여 사용하려는 사람들이 늘었으나 이
런 사용자들은 고가의 전용회선 및 장비를 갖출 능력이 없었다. 따라서 PC에
서 흔히 통신용으로 사용되는 모뎀과 전화선으로 IP 프로토콜을 전송할 수
있는 방법이 필요하였고 이것이 바로 SLIP(Serial Line IP)와 PPP이다.
SLIP은 PPP보다 먼저 탄생하였으나 이는 인터넷의 표준으로 제정되지는 않았
고, SLIP의 단점을 보완한 PPP가 시리얼라인에서 TCP/IP 프로토콜을 전송하
는 인터넷 표준으로 채택되었다.
3. 리눅스에서 PPP 프로토콜
리눅스는 커널버전 1.X에서부터 PPP와 SLIP를 지원하고있다. PPP의 경우는
커널 드라이버 와 데몬 프로그램(PPPD)으로 나누어져 있으며 커널 레벨에서
는 패킷 어셈블과 디스어셈블이 이루어지고 데몬은 링크와 인터페이스 셋업
을 담당한다.
PPP는 두 호스트간에 IP 패킷을 라우팅하는 기능만 담당할 뿐 어떤 애플리케
이션이 두 호스트간에 실행되는 것이 아니다. 따라서 어느쪽이 서버고 클라
이언트 인지의 구별이 없으나 편의상 연결을 시도하는 쪽은 클라이언트, 연
결을 받아주는 쪽을 서버라고 구별한다.
앞으로 설명하려는 리눅스에서의 PPP서버 구축법은 커널 2.0.X 버전을 기준
으로 하고 있다.
4. PPP서버를 랜(LAN)에 연결하기
리눅스를 PPP서버로 사용하는 경우는 여러가지가 있겠지만 여기서는 가장 흔
한 경우, 즉 랜투랜(LAN to LAN)으로 인터넷을 연결하여 사용중인 회사의 랜
에 리눅스 PPP서버를 설치하여 회사 직원이 집에서 PC와 전화선 및 다이얼
업 모뎀을 써서 인터넷을 사용할 수 있게 해주는 경우를 기준으로 설명한
다. 이때 PPP클라이언트 즉 연결을 시도하는 PC의 운영체계는 윈도 3.1, 윈
도 95, 리눅스 어느 쪽도 상관이 없다. 여기서 맨 처음 단계는 PPP서버를 회
사의 랜에 연결하여 PPP서버에서 인터넷을 사용할 수 있어야한다.
다음에서 랜 연결 작업단계를 살펴본다.
1) PPP서버 하드웨어 사양
PC를 PPP서버로만 쓴다면 높은 사양의 PC를 요하지 않는다. PPP는 거의 커널
에서 작업이 이루어지므로 하드디스크를 자주 액세스하거나 많은 메모리를
필요로 하지 않기 때문이다. 486급에 16메가의 메모리를 갖고있으면 PPP서버
로 충분하다고 본다. 랜카드의 경우는 ISA 방식보다는 PCI 방식이 설치가 쉽
다. 또 리눅스는 이서네트, 토큰링, 아크넷 등 3대 랜표준을 모두 지원하므
로 회사의 랜에 맞는 랜카드를 골라야한다. PPP서버로 쓸 PC에서 가장 중요
한건 RS-232C 포트와 모뎀이다. RS-232C 포트는 보통 시리얼포트라고 부르는
데 이포트에 사용된 UART 칩이 PPP 전송속도를 좌우한다. UART 칩에는 세 가
지 종류가 있는데 8250, 16450, 16550이다. 이중 8250과 16450은 시리얼포
트 속도를 19,200bps 이상으로 올릴 수 없으므로 16550A 이상의 칩을 쓴 시
리얼포트를 사용해야한다. PC의 시리얼포트는 2개만 사용할 수 있으므로 3
개 이상의 PPP를 동시에 써야한다면 멀티포트 카드를 장착해야한다. 멀티포
트카드를 고를 때는 반드시 리눅스용 드라이버가 있는지를 확인해야하며 멀
티포트에 별도의 CPU가 있는 인텔리전트형 카드를 써야 여러 개의 PPP데몬
을 동시에 띄울 수 있다. 모뎀의 경우는 내장형보다는 외장형이 값이 비싸지
만 사용이 편하다. 즉 외장형 모뎀은 모뎀의 상태와 이상유무를 인디케이터
나 판넬에서 보여주므로 PPP 연결이 잘 이루어지지 않을 때 그 원인을 파악
하기 쉽다.
2) 리눅스 설치와 네트워크 설정
다음은 PC에 리눅스를 설치해야한다. 리눅스 설치는 배포본에 따라 다르며
간단히 설명할 수 있는 내용이 아니므로 여기서는 생략한다. 한가지 유의할
건 설치시 PPPD 프로그램이 선택되어있는지를 확인해야 한다는 것이다. 보통
은 PPPD 프로그램이 자동으로 설치에 포함되어있지만 그렇지 않은 경우도 있
다. 리눅스에서는 랜카드에 IP address를 할당하고 라우팅 테이블을 구성하
는 것은 보통 설치시에 행해진다. 따라서 설치시 네트워크 셋업에 관한 질문
에 답변하면 랜 관련 세팅이 관련 파일에 저장된다. 그러나 만약 설치 후에
랜 관련 셋업을 바꾸려면 대개는 관련 파일을 직접 수동으로 수정해야한다.
리눅스에서 랜카드에 IP address를 할당하는 명령은 ifconfig이며, 라우팅
테이블 설정명령은 route이다.
이 두명령은 슬랙웨어의 경우는 /etc/rc.d/rc.inet1에 데비안
은 /etc/init.d/network에 들어있으며 부팅시에 자동으로 실행된다.
아래는 데비안의 network 파일 예이다.
#! /bin/sh
ifconfig lo 127.0.0.1
route add -net 127.0.0.0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=none
ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
route add -net ${NETWORK}
# route add default gw ${GATEWAY} metric 1
* 192.168.x.x는 인터넷에서 내부랜 전용으로 할당한 주소이므로 인터넷과
연결되지 않은 랜이나 파이어월 내부에서 사용할 수 있다.
위에서 192.168.1.1은 C 클래스 주소체계이므로 192.168.1 까지는 네트워크
주소이고 마지막의 1은 호스트 주소이다. netmask는 인터넷주소 중 네트워
크 부분과 호스트 부분을 구분하는데 사용되므로 서브네트 마스킹을 않을 경
우 C 클래스 인터넷주소의 네트마스크는 255.255.255.0이다. 호스트 주소 부
분은 8bit 이므로 0부터 255까지 256개이나 0번은 네트워크를 가르키고 255
는 broadcast 에 사용되므로 C 클래스에서는 총 254개의 호스트에 IP
address를 부여할 수 있다.
게이트웨이(gateway)는 두 네트워크에 동시에 연결된 라우터나 호스트를 말
하는데 게이트웨이 중 특히 중요한건 디폴트 게이트웨이(default gateway)이
다. 즉 해당 랜이나 연결된 다른 네트워크에서 주소를 찾을 수 없을 경우 무
조건 패킷을 보내는 라우터를 디폴트 게이트웨이라 부르는데 route add
default gw가 default gateway를 지정하는 명령이다. 따라서 인터넷과 연결
된 랜에서는 default gateway는 ISP(Internet Service Provider)와 연결된
라우터의 이서네트 쪽 주소이다.
3) 랜카드 드라이버 올리기
리눅스에서 랜카드에 ifconfig 명령으로 ip address를 할당하려면 그전에 커
널에서 그 랜카드에 인터페이스를 설정해야한다. 예를들어 이서네트 첫 번
째 랜카드의 인터페이스 네임은 eth0 이다. 커널에서 랜카드를 인식하려면
(즉 인터페이스 네임을 설정하려면) 랜카드용 드라이버가 커널에 들어있어
야 한다. 리눅스 설치시 기본으로 설치되는 커널에 포함된 랜카드 드라이버
는 3com 사의 3c509 카드이며 다른 랜카드는 커널을 컴파일해서 해당 랜카드
의 드라이버를 커널에 포함시켜 주어야한다.
아래는 3COM 사의 3C509 랜카드가 커널에서 인식되었을 경우, 부트때의 메시
지이다(dmesg 명령으로도 확인이 가능하다).
eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 60 8c ec 79 4f,
IRQ 10
 - eth0는 첫 번째 이서네트 카드라는 의미
- 0x300은 IO Address
- 10baseT는 랜카드의 포트 중(3C509는 AUI와 10baseT 두개의 포트가 있다)
10baseT 포트를 통해 패킷이 전송된다는 뜻
- address 이하는 그 랜카드의 이서네트 어드레스(48bit로 구성되며 전세계
에서 생산되는 모 든 이서네트 랜카드는 고유의 이서네트 어드레스가 부여된
다)
- IRQ 10은 인터럽트 10번이 사용된다는 뜻이다.
랜카드 드라이버가 커널에 들어있는데 랜카드가 인식되지 않는 경우는 랜카
드의 셋업이 리눅스 시스템에 장착된 다른 하드웨어와 IO Address, IRQ,
DMA 등에서 충돌하는 경우이다. PCI 용 랜카드는 PCI 슬롯에서 IRQ와 IO
Address를 할당해주므로 충돌이 나는 경우가 드물지만 ISA 방식의 경우는 다
른 하드웨어와 충돌을 일으키는 경우가 많다. 이때는 리눅스 시스템을 도스
로 부팅한후 도스용 랜카드 셋업 프로그램을 돌려 셋업을 다시 설정한 후 셋
업이 문제가 없는지를 테스트 프로그램을 돌려 확인해 보아야한다. 만약 랜
카드가 PNP(Plug and Play)를 지원한다면 이를 disable 시키는게 좋다. 리눅
스는 아직 PNP 지원이 불완전하기 때문이다.
리눅스 커널에는 극히 최근에 발표된 랜카드를 제외하고 거의 대부분의 랜카
드 드라이버가 포함되어 있으므로 커널 컴파일 단계에서 자신의 랜카드 모델
에서 YES만 해주면 되나, 커널 컴파일시 make config에 자신의 랜카드 모델
이 안 나오면 인터넷에서 자신의 랜카드 드라이버를 구해서 커널을 패치해야
한다. 최신 랜카드 드라이버에 관한 정보는 NASA(미 항공우주국)의 홈페이지
에 있다.
이상의 과정을 거친 후 리부팅하면 리눅스는 랜에 연결된다.
랜 연결 및 라우팅 테이블이 정확한지를 파악하려면 ifconfig와 netstat -
nr 명령을 준다.
www:~> /sbin/ifconfig
lo 	Link encap:Local Loopback
	inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
	UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
	RX packets:184027 errors:0 dropped:0 overruns:0
	TX packets:184027 errors:0 dropped:0 overruns:0
eth0 	Link encap:10Mbps Ethernet HWaddr 00:60:97:21:62:04
	inet addr:210.124.153.1 Bcast:210.124.153.255
Mask:255.255.255.0
	UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
	RX packets:339158 errors:0 dropped:0 overruns:0
	TX packets:305127 errors:0 dropped:0 overruns:0
	Interrupt:11 Base address:0x320
 www:~> netstat -nr
Kernel IP routing table
Destination 	Gateway 	Genmask 	Flags 	MSS 	Window 	irtt
	Iface
210.124.153.0 	0.0.0.0 	255.255.255.0 	U 	1500 	0
	0 	eth0
127.0.0.0 	0.0.0.0 	255.0.0.0 	U 	3584 	0
	0 	lo
0.0.0.0 	210.124.153.254 	0.0.0.0 	UG 	1500 	0 	0
	eth0
 위에서 마지막 줄의 0.0.0.0 줄은 default gateway를 지정하는 부분이다.
즉 210.124.153.254는 ISP와 연결된 라우터의 이서네트 포트 IP Address이
다.
이상으로 리눅스서버의 랜 연결이 완료되었지만 리눅스에서 인터넷을 연결하
려면 다른 몇개의 파일을 더 수정해 주어야한다. 물론 이 파일도 리눅스 설
치시 네트워크 셋업에 관한 질문에 정확히 대답하였으면 수정할 필요가 없지
만 나중에 랜 관련 셋업이 바뀔 경우에는 관련 파일을 수동으로 수정해 주어
야한다.
리눅스 시스템이 인터넷에 연결되기 위해 필요한 다른 파일들을 보면
- /etc/host.conf
 order hosts,bind
multi on
위는 호스트 이름으로 ip address를 찾을 때 첫 번째는 /etc/hosts 파일을
그 다음은 DNS 서버를 참조하라는 뜻이다.
 - /etc/resolv.conf
search linuxlab.co.kr
nameserver 168.126.63.1
위에서 search는 사용자가 호스트네임만 지정하였을 경우 뒤에 덧붙일 도메
인네임이며 nameserver는 그 랜에서 사용하는 네임서버의 주소이다.
마지막으로 리눅스서버에서 telnet이나 ping 명령으로 인터넷 연결을 테스트
해 보아야한다. 예를들면 하이텔을 인터넷을 통해 연결하는 명령은 telnet
home.hitel.co.kr이다. 하이텔이 연결되면 일단 ppp 서버의 인터넷 연결은
끝났다. 만약 PPP서버를 메일서버나 웹서버로 겸하고 싶다면 PPP서버의 호스
트네임과 ip address를 네임서버에 등록해 주어야한다.
 5. PPPD 설치와 커널 컴파일
PPP서버를 인터넷과 연결하였으면 커널에 ppp드라이버를 올리고 pppd 프로그
램을 설치해 주어야한다.
1. pppd 컴파일 및 설치
pppd는 리눅스 설치시 포함되어 설치되지만 만약 구버전의 pppd를 업그레이
드하거나 리눅스 설치시 pppd를 넣지 않았다면 pppd를 설치해야한다. 현재
pppd의 최신버전은 ppp-2.2.0f이며
ftp://sunsite.unc.edu/pub/Linux/system/network/serial/ppp에서 anonymous ftp로 받을 수 있다.
이 디렉터리에 있는 ppp-2.2.0f.tar.gz 파일을 다운받아 적당한 디렉터리에
넣고 아래 명령을 준다.
tar zxvf ppp-2.2.0f.tar.gz
그러면 ppp-2.2.0f라는 디렉터리가 만들어지고 그 안에 ppp소스를 비롯한
README 파일들이 위치한다. 컴파일 및 인스톨은 README와 README.linux 파일
에 잘나와있다.
pppd를 컴파일을 하려면 커널 소스가 /usr/src/linux에 있어야한다. 이유는
ppp는 커널에 드라이버가 위치하기 때문이다.
2. pppd 컴파일 순서
- ./configure
- make kernel
- 커널을 다시 만듬
- make
- make install
이단계에서 pppd, chat 명령 등이 /usr/sbin 디렉터리에 복사된다.
- 리부팅
 3. 커널 컴파일
리눅스 인스톨시 pppd를 설치했어도 반드시 커널을 다시 컴파일해서 설치해
주어야 ppp를 쓸 수 있다. 보통 설치시 제공되는 커널에는 ppp 드라이버가
들어있지 않기 때문이다.
커널 컴파일 방법은 아래와 같다.
1. 커널 소스를 /usr/src에서 푼다.
 2. linux라는 디렉터리가 생성되고 그 안에 README라는 파일이 있는데 이 파
일에 커널 컴파일
단계가 나와있다.
 3. 커널 컴파일이 끝나면 /usr/src/linux/arch/i386/boot 디렉터리에 zImage
란 새로운 커널이 생성되는데 이를 root 디렉터리에 vmlinuz란 이름으로 복
사한 후 lilo 명령을 수행한다. 단 부트 커널 이름 및 위치
는 /etc/lilo.conf에서 달리 정할 수 있으므로 lilo.conf를 미리 확인해야한
다.
ppp 서버를 만들려면 커널 컴파일에서 최소한 아래 부분은 yes로 답해야한
다.
  TCP/IP networking (CONFIG_INET) [Y/n/]
IP: forwarding/gatewaying (CONFIG_IP_FORWARD) [Y/n/]
Network device support (CONFIG_NETDEVICES) [Y/n/]
PPP (point-to-point) support (CONFIG_PPP) [Y/m/n/]
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/]
 ppp드라이버가 커널에 설치되었으면 부팅시 아래 메시지가 나온다.
 PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line discipline registered.
 6. 시리얼포트 셋업
PPP 접속에 사용될 모뎀이 연결될 시리얼포트에 38,400bps 이상의 속도를 내
려면 시리얼포트에 사용된 UART 칩이 16550A 이상이어야 하며 이는 부팅시
의 메시지나 dmesg 명령으로 확인할 수 있다. 멀티포트카드는 별도로 제공되
는 드라이버 파일을 설치해야한다. 그러나 일부 멀티포트카드는 커널에 드라
이버가 포함되어있다.
tty00 at 0x03f8 (irq = 4) is a 16550A
위의 부트메시지는 시리얼포트 1번(0x3f8)의 IRQ가 4이고 UART 칩이 16550A
임을 보여주고 있다.
리눅스에서 시리얼포트의 장치명은 cua와 ttyS 두 가지가 있는데 보통 cua
는 dial-out에, ttyS는 dial-in에 사용된다. 14.4k 이상의 고속모뎀을 쓸 경
우는 시리얼포트에 하드웨어플로우 컨트롤(RTS/CTS)을 설정해 주어야 하는
데 이는 아래 명령이 필요하다.
(아래는 시리얼포트 1번을 쓰는 경우이다)
/bin/stty crtscts < /dev/ttyS0
다음에 시리얼포트 속도를 57,600bps나 115,200bps로 설정하려면 setserial
명령이 필요하다.
/bin/setserial /dev/ttyS0 spd_vhi
위에서 spd_vhi는 시리얼포트 속도를 115,200bps로 설정할 때이고 57,600bps
라면 spd_hi 명령을 준다. setserial 명령 수행 결과를 확인하려면 아래처
럼 명령을 준다
churl:/etc/ppp$ setserial /dev/ttyS0
/dev/ttyS0, UART:16550A, Port:0x03f8, IRQ: 4, Flags: spd_vhi
다이얼업 모뎀의 경우는 최대 4배까지 데이터 압축이 이루어질 수 있으므로
14.4k 모뎀은 시리얼포트 속도를 57.6k로, 28.8k 모뎀은 115.2k로 맞추는게
좋다.
위 두 명령은 부팅시마다 실행되어야 하므로 데비안의 경우라
면 /etc/init.d/boot 파일에 위 두 명령을 넣으면 된다.
7. getty 프로그램 설치
리눅스에서 PPP접속을 하려면 우선 두 모뎀간에 연결이 이루어져야하며 모뎀
이 전화를 받으려면 getty 프로그램이 필요하다. 이하는 mgetty 프로그램을
기준으로 getty 프로그램 설치과정을 설명한다. mgetty는
http://www.leo.org/~doering/mgetty에서 구할 수 있고 자세한 매뉴얼도 나
와있다. mgetty는 모뎀외에도 fax 송수신 기능도 있다. 대부분의 리눅스 배
포본에도 mgetty가 포함되어있다.
mgetty를 컴파일 하려면 소스의 압축을 푼 후 policy.h-dist를 policy.h로
복사하고 make, make install 명령을 주면 된다. mgetty 실행파일
은 /usr/local/sbin/mgetty이며 환경설정 파일
은 /usr/local/etc/mgetty+sendfax/mgetty.config이다.
아래는 시리얼포트 1번(ttyS0)에 포트속도를 115,200bps로 설정한 경우의
mgetty.config 파일 예이다.
debug 5
port-group uucp
port-mode 0664
modem-check-time 43200
 #
port ttyS0
data-only yes
modem-type data
speed 115200
term vt100
 다음에 /etc/inittab에 다음 줄을 넣는다
m1:2345:respawn:/usr/local/sbin/mgetty ttyS0
위에서 m1은 구별자로서 inittab 파일내에 다른 줄의 맨 앞에서 사용하지 않
아야 한다.
이상으로 mgetty 설치가 끝났으면 minicom이나 kermit 프로그램을 사용하여
모뎀에 ats0=0&w 명령을 준다. 즉 mgetty는 다른 getty 프로그램과 달리 수
신모뎀 즉 mgetty가 설치된 포트에 연결된 모뎀을 자동응답으로 설정하지 않
아야 작동한다. 또한 mgetty에서는 모뎀에 ate1q0v1 명령을 필수적으로 주어
야한다.
모든 준비가 끝났으면 init q 명령을 준다. 이상이 없다면 외장모뎀의 경우
TR(Terminal Ready)에 불이 들어오고 다른 PC에서 리눅스로 전화를 연결하
면 login 프롬프트가 뜬다.
이상으로 리눅스가 전화를 받을 수 있게 되었으므로 다음 단계는 사용자명
과 패스워드를 확인하고 맞으면 pppd 데몬을 띄우는 과정이다.
8. PPP 클라이언트에서 IP address 할당하는 방법
다른 PC가 PPP서버로 PPP로 연결할 때 그 PC에 한개의 IP address가 할당된
다. 그런데 IP address를 할당할 때 두 가지 방법이 가능하다. 하나는 동적
IP address 할당으로써 연결시마다 사용자의 IP address가 바뀌는 경우이
다. 예를들어 리눅스 시스템에 4개의 시리얼포트가 있고 4개의 전화선이 연
결돼 있다고 가정하면 첫 번째 포트에 연결된 전화번호에 대표전화를 부여하
면 사용자가 전화를 걸 때 사용 않는 포트가 전화를 받게되고 사용자는 그
포트에 할당된 IP address를 배정받는 방식이다. 이 경우는 포트 수만큼 IP
address가 필요하다. 다이얼업모뎀 사용자는 전화비가 많이 나가므로 항상
연결하여 놓고 고정 IP를 사용할 수 없으므로 ppp서버는 대부분 이 방식을
쓴다. 그러나 드문 경우이겠지만 만약 사용자가 다이얼업으로 연결하면서도
항상 고정된 IP address를 요청한다면 이때는 사용자만큼 IP address가 필요
하다. 사용자가 특정 포트에 전용선을 연결하여 사용하는 경우 사용자는 항
상 고정 IP address를 배정받는다.
9. ppp 계정 만들기
mgetty 컴파일시 autoppp라는 옵션을 부여하면 전화 연결과 동시에 ppp 접속
이 이루어지지만 대부분의 경우 연결 상대방의 ppp 사용 권한을 파악하기위
해 패스워드 파일에서 ppp 사용자명과 패스워드를 확인 후 pppd를 띄운다.
사용자의 PPP 계정을 만들 때 셸어카운트와 다른점은 login shell
을 /usr/sbin/pppd로 지정해야한다는 점이다.
10. PPP 옵션
PPPD는 여러 파일에서 옵션을 지정할 수 있는데 옵션 실행순서는 다음과 같
다.
1) /etc/ppp/options
2) ~/home/.ppprc
3) /etc/ppp/options.tty
위에서 ~/home/는 사용자의 홈디렉터리를 말한다. options.tty는 ppp 연결
이 이루어지는 포트명을 말한다. 두 파일에서 서로 중복하여 지정시는 나중
에 나온 파일의 옵션이 우선한다.
options는 모든 ppp 접속시에 실행되므로 ppp접속시 모든 사용자에게 공통으
로 필요한 옵션만
지정하며 .ppprc는 특정 사용자에게만 실행되므로 그 사용자에게만 필요한
옵션을 지정한다. 예를 들어 어느 사용자에게 항상 고정된 IP address를 배
정하고 싶으면 그 사용자의 ppp계정 홈디렉터리에 .ppprc을 만들어 여기에
ip address를 지정해주면 된다. 그러면 사용자의 연결포트가 바뀌어도 ip
address는 바뀌지 않는다. options.tty에서 tty는 연결포트의 dial-in 장치
명이다. 시리얼포트 1번은 options.ttyS0이다. 이 파일에는 그 포트에만 필
요한 옵션을 지정한다. 예를들어 포트별로 모뎀속도가 다를 경우 이 파일에
서 속도를 지정해주면 된다.
PPPD의 옵션은 상당히 많으므로 자세한 사항은 man pppd 명령으로 확인하기
바라며 여기서는 자주 쓰이는 옵션을 위주로 설명한다.
/etc/ppp/options
 lock
modem
crtscts
 - lock : ppp접속이 이루어지는 동안 다른 프로그램이 그 시리얼포트를 사용
할 수 없도록 lock 파일을 만들어준다. lock 파일은 /var/lock 디렉터리에
LCK..tty 파일로 만들어진다.
 - modem : 모뎀 포트라는 뜻으로 상대가 모뎀 연결을 종료하면 전화를 끊는
다.
 - crtscts : 하드웨어 플로우 컨트롤(RTS/CTS)을 사용한다.
  /etc/ppp/options.ttyS0
 -detach
asyncmap 0
115200
mru 552
mtu 552
proxyarp
:192.168.1.3
1) -detach : pppd 프로그램이 백그라운드로 실행되지 않도록 하는 역할을
담당한다.
2) asyncmap 0 : 시리얼라인에서 송신되어서는 안될 컨트롤캐릭터(ASCII 31
이하)를 지정한 다. 예를들어 XON XOFF 플로우 컨트롤을 사용하는 모뎀에서
XON XOFF 문자 가 그대로 전송되면 모뎀이 데이터 전송을 중단한다. 이 경
우 asyncmap에 이를 지 정하면 이 캐릭터는 2byte escape 시퀀스로 보내진
후 상대 ppp에서 복원된다. asyncmap에 FFFF를 지정하면 모든 컨트롤 캐릭터
가 2byte로 보내지므로 전송속도 가 떨어진다.
3) 115200 : 전송속도를 지정한다. 이 속도는 setserial및 getty에서 지정
한 포트속도와
일치시켜야 한다.
4) mru(maximum receive unit) : 전송 받는 최대의 패킷 크기(바이트)를 지
정한다. 고속모뎀 에서는 552byte를 주로 쓴다.
5) mtu (maximum transmit unit) : 전송하는 최대의 패킷 크기(바이트)를 지
정한다. 고속모뎀 에서는 552byte를 주로 쓴다.
FTP를 주로 쓰면 mru, mtu가 높은게 좋고 웹이나 텔넷에서는 낮은게 좋다.
6) proxyarp : PPP서버가 랜을 통해 인터넷과 연결돼 있을 경우에만 필요하
며 클라이언트에는 필요가 없는 옵션이다. 만약 이 옵션이 없으면 클라이언
트는 오직 PPP서버와만 연결이 되고 PPP서버와 같은 랜에 있는 다른 호스트
나 인터넷 쪽으로는 연결이 되지 않는다.
7) :192.168.1.3 : PPP에서 자신의 IP address와 상대의 address를 지정하
는 명령은 ABCD:WXYZ이다. ABCD는 자신의 IP Address이며 WXYZ는 상대방(클
라이언트)의 address이다. 랜에 연결된 PPP서버의 경우 이미 이서네트 포트
에 IP address가 지정 되어있으므로 자신의 어드레스를 생략하면 PPP는 서버
의 PPP 어드레스로 이서네트 에 부여된 IP address를 같이 사용한다. 따라
서 이 경우는 /etc/hosts에 자신의
어드레스및 호스트명이 등록되어 있어야한다.
11. PPP 클라이언트 셋업
ppp 클라이언트가 리눅스라면 다른 과정은 ppp서버와 같다. 단지 옵션 부분
만 달라진다(물론 랜에 연결 되어있지 않으면 랜 연결과정은 필요없다).
클라이언트의 경우는 ppp 연결이 한개만 이루어지므로 /etc/ppp/options 파
일에 ppp 옵션을 지정하는게 좋고 나머지는 ppp 연결 셸스크립트에 넣는다.
/etc/ppp/options에 필요한 옵션은 아래와 같다.
lock
debug
lcp-echo-interval 240
lcp-echo-failure 5
ppp 연결 셸스크립트는 다음과 같다.
 #!/bin/bash
/usr/sbin/pppd connect '/usr/sbin/chat -v 
"" atdt4565690 ogin: ppplogin sword: ****'
/dev/ttyS0 115200 crtscts modem 
noipdefault defaultroute
자세히 설명하면
1) connect : 전화 연결시 사용할 명령을 지정하는데 한개의 파라미타만을
필요로 하므로 여러개의 변수를 넣을 때는 콤마로 묶는다.
2) /usr/sbin/chat : 모뎀과 대화 형식으로 명령을 수행하는 프로그램임.
3) "" : chat는 먼저 상대방 즉 시리얼포트로부터 어떤 문자열이 전송되기
를 기다려 다음 액션을 취하므로 " " 을 넣는다. 즉 모뎀으로부터 아무런 전
송도 없다는 뜻임.
4) atdt456-5690 : 모뎀에게 PPP서버의 전화번호를 누르는 명령임.
5) ogin: PPP서버가 전화를 받으면 getty 프로그램에서 login: 프롬프트를
보낸다.
이하 패스워드 입력까지 끝나면 pppd 프로그램이 실행되며 /dev/ttyS0 이하
는 PPPD에 건네주는 옵션이다. 다른 옵션은 서버의 옵션과 동일하나 다른 부
분은 noipdefault 와 defaultroute 이다.
noipdefault는 PPP 클라이언트에게 할당되는 ip address를 서버에서 지정한
다는 뜻이다. 즉 서버의 옵션에 클라이언트의 ip address를 지정하는 부분
이 있다는 뜻이다.
defaultroute는 클라이언트에서 행선지를 모르는 모든 패킷을 서버쪽으로 보
내겠다는 뜻이다. 즉 디폴트 게이트웨이를 서버의 IP address로 지정한다는
뜻이다. 클라이언트는 서버를 통해 인터넷을 사용하므로 행선지를 모르는 패
킷이 서버쪽으로 보내져야 인터넷 연결이 가능하기 때문이다.
그런데 만약 클라이언트가 랜에 연결돼 있어서 리눅스 설치시의 네트워크 셋
업에서 게이트웨이를 리눅스 자신의 랜카드 IP 어드레스로 지정하였거나 또
는 클라이언트가 속한 랜의 다른 라우터로 지정하였으면 네트워크 설정파일
(슬랙웨어라면 /etc/rc.d/rc.inet1)에 디폴트 게이트웨이가 이미 지정되어있
다.
PPPD는 연결시 이미 디폴트 게이트웨이가 설정돼 있으면 위의 defaultroute
명령을 무시한다. 즉 디폴트 게이트웨이를 PPP서버쪽으로 변경하지 않는다.
따라서 클라이언트는 서버와만 연결되고 서버의 랜을 통해 인터넷으로 나가
지 못하는데 이때는 위의 네트워크 설정파일에서 route add default gw
A.B.C.D 부분을 찾아 마킹하면 해결된다.
 참고. PPP 자동 재연결 셸스크립트 TT선 또는 CO-LAN 등의 전용선으로 PPP
접속을 하는 경우 회선 문제나 서버의 리부팅 등으로 PPP 연결이 끊기는 경
우가 가끔있다. 클라이언트에 메일서버나 웹서버를 운영하는 경우 PPP 연결
이 끊긴걸 모르고 지나치면 심각한 문제이다. 그렇다고 수시로 연결 여부를
확인할 수도 없다. 다음 방법을 쓰면 PPP 연결이 끊기면 30초 이내에 자동
재연결이 이루어지니 설치하여 사용하길 바란다. 필자가 예전에 co-lan을
쓸 때 유용하게 사용하였다. 슬랙웨어라면 우선 /etc/rc.d/rc.local 파일에
아래 줄을 추가한다. /sbin/redial & (마지막의 &가 중요하다) 다음 /sbin
에 아래 내용의 redial 파일을 만들고 chmod 755 redial 명령을 준다
#!/bin/bash while true do echo 'Attempting connection at'
date /usr/sbin/pppd -detach connect '/usr/sbin/chat -v  ""
atdt4565690 ogin: ppplogin sword: ****' /dev/ttyS0 115200 crtscts
modem  noipdefault defaultroute echo 'Lost connection at' date sleep
30 done 위에서 /usr/sbin/pppd 이하는 각자의 시스템에 맞게 수정하여야하
나 -detach 옵션은 필히 있어야한다. 이제는 ppp 연결이 끊길 걱정을 하지
않아도 된다.
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved