CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): rohtw (태워니)
날 짜 (Date): 1994년08월08일(월) 15시32분59초 KDT
제 목(Title): [Re^2] Linux에서 PPP 




리눅스로 부팅할때 
PPP: version 0.2. .....
TCP compression code ..........
PPP line dicipline regstered.
라는 세줄이 나오면 커널에 PPP가 있는 거구요.. 만일 이게 안보이면 
ppp-2.1.2를 구해서 커널을 다시 컴파일해야합니다.

리눅스에 루트로 로그인해서 netconfig를 실행해서 loopback interface만 
가지게 합니다. ( 저는 요걸 몰라서 첨에 PPP인스톨할때 엄청 고생했습니다.)
요까지 하면 반은 한겁니다.

저의 configuration에 대해서................................
SunOS4.1.1  cupid(155.230.23.13:PPP서버) 의 ttyb와 Slackware Linux 1.2.0 think
(155.230.23.52:PPP client)의 ttyS1 ( com2에 해당)를 19200 bps로 연결했습니다.
sun과 linux사이의 케이블이 18미터가 안되기 때문에 모뎀을 사용할필요가 
없습니다.  Sun의 커널에도 PPP가 깔렸습니다. 안깔렸으면 위에서 말한 ppp-2.1.2를
구해서 sun의 커널을 다시 컴파일해서 재부팅합니다.
sun에서는 ppp라는 아이디를 만들고, ppp의 로그인쉘(/etc/ppp/ppplogin)을 
서버 PPP daemon을 띄우는 걸로 만들고, 
linux에서는 클라이언트 PPP daemon을 띄우는 shell script(pppstart)를 만들어서 
/rc/rc.d/rc.inet1안에  " su - guest -c /etc/ppp/pppstart "를 넣어둡니다.
그러면 linux로 부팅할때 마다 ppp interface가 자동으로 연결되게 해놓았습니다.
물론 모뎀으로 연결하면 전화비문제가 있으니까 조금 다르게 해야겠지요 ?

PPP관련 화일들입니다:

think: /etc/ppp/pppstart
#!/bin/sh
/usr/etc/pppd connect /etc/ppp/ppp-connect defaultroute         \
    netmask 255.255.252.0 /dev/ttyS1 19200

think: /etc/ppp/ppp-connect
#!/bin/sh
/usr/etc/chat -v -t60 "" \; "login: " ppp && sleep 5

cupid: /etc/ppp/ppplogin
#!/bin/sh
exec /usr/etc/pppd passive :155.230.23.52

차례대로 요 화일에 대해서 설명을 해야 되겠구만요..
think: /etc/ppp/pppstart는 think: /etc/rc.d/rc.inet1에 넣어서 부팅할때마다
실행합니다. connect는 바로 다음에 나오는 화일을 실행하라는 겁니다.
think:/etc/ppp/ppp-connect는 서버쪽의 ppp daemon을 띄우는 겁니다.
chat이란 프로그램이 재미있는데 .. 이프로그램이 인터랙티브하게 입력해야
하는걸 대신해주는겁니다. -v 는 verbose mode, -t60은 timeout 60초,
"" \; 이거는 에터키를 치는거라네요.., "login: " 큰따옴표안에있는 
문자가 나오기를 기대합니다. (SLIP에서 expect란 프로그램이 이런 기능을 
하던가요?)
sun에서 getty 떠있다면 login: 이란 프람프트가
있겠지요 ?   login: 이란 문자가 나오면 ppp라는 아이디가 자동으로
입력됩니다. ppp의 로그인 쉘이 ppplogin이니까 cupid:/usr/etc/pppd passive 
:155.230.23.52가 자동으로 실행이되겠지요 ? 그러면 서버쪽에 ppp daemon이
뜨고..... 아까 think:/etc/ppp/pppstart의 뒷부분을 실행합니다.

ifconfig해서 ppp0 라는 인터페이스가 있으면 다된거네요..
쉘상에서 telnet cupid, telnet think 왔다갔다.. 다 됩니다..


첨에 디버깅할때(?)는 chat이란 프로그램을 안쓰고 돌려봐야겠지요 ?
think에서 kermit를 돌려 set linet ttyS1 , set baud 19200, connect하면
cupid에서 getty가 돌고있으니 login: 이란 프람프트가 나옵니다.
자기 계정으로 로그인해서 쉘프람프트에서 pppd passive :155.230.23.52라고
입력합니다. 이상한 문자가 몇개 나오고 문자입력이 더이상안됩니다..
여기서 kermit의 escape 키를 눌러 ( ctrl-\ C ) , think의 kermit프람프트상에서
(꼭 kermit안에서 할필요야 없지만...)    !/etc/ppp/pppclient를 실행합니다.
/etc/ppp/pppclient안에는 
#!/bin/sh 
/usr/etc/pppd defaultrote netmask 255.255.252.0 /dev/ttyS1 19200
이 있습니다.    막바로 !/usr/etc/pppd default.... 라고 입력해도 되겠지요 ?
실행이 끝나고 kermit프람프트가 돌아오면, think의 쉘프람프트에서
ifconfig해봅니다.  ppp0가 있으면 성공한거네요.. 있습니까 ? 추카 추카...
없다구요 ? pppd 의 옵션에 kdebug 4라는 옵션을 주고 syslog.conf를 고쳐서 
console로 아웃풋이 나오게 해서 뭐가 문젠지 한번......



문제는 모뎀을 연결할때 인데...........

/etc/ppp/pppstart를
#!/bin/sh
/usr/etc/pppd connect ' chat -v "" ATDT5551212 CONNECT "" ogin: ppp '   \
    /dev/cua1 19200 -detach debug crtscts modem defaultroute 155.230.23.52:
이런식으로 하면 될거 같네요.......

ppp-2.1.2받아보시면 README에 제가 쓴글의 대부분이 나옵니다. 
헤헤 괜히 타이핑하느라 헛구고 한건 아닐까 ....?

모뎀으로 연결하는 사람들의 local ip address는 어떻게 정해줄까요 ?
서버쪽의 ppplogin안에 case문을 쓰면 될란가...... 'tty'의 결과에
따라 case문이 갈라지게...
case 'tty' in
    /dev/cua1) LOCAL=155......1     ....
    /dev/cua2) LOCAL=155......2     ....
    ............
esac
pppd 어쩌구 저쩌구 $LOCAL:

이런식으로 하면 될까나.......


leeh님뿐만 아니라 다른 분에게도 많은 도움이 됐기를 바랍니다....
어떤학교인지는 몰라도 leeh님 학교는 대단하구만요.. slip 서버도 돌리주고...
울학교 전산소에서도 slip이나 ppp 돌리줬으면... 25개의 모뎀이 아깝구만요..



 
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.