일단 PPP 연결이 구축되면 pppd는 /etc/ppp/ip-up
파일을
찾는다. 이 스크립트가 있고 실행가능하면 PPP 대몬은 이 스크립트를
실행시킨다. 이것으로 어떤 필수적인 특별 라우트 명령이나 PPP 연결이
활동할 때마다 일어나길 원하는 모든 동작을 자동화할 수 있다.
이것은 단지 쉘 스크립트이며 쉘 스크립트로 할 수 있는 것은 뭐든지 할 수 있다(가상적으로 하고 싶은 것 다)
예를 들어 메일 큐에서 기다리던 밖으로 보낼 편지를 바로 보내게 sendmail을 조정할 수 있다.
비슷하게, 인터넷 서비스 업체 쪽에서 대기 중이던 전자우편(pop를 쓸 때)을 받기 위해 ip-up에다 명령을 넣을 수 있다.
/etc/ppp/ip-up
에는 제한이 있다:-
/etc/ppp/ip-up
은 스크립트가 아니라
프로그램이다. 즉 직접 실행가능하다는 뜻이다 - 그리고 그래서 첫
행에 표준 파일 마법(#!/bin/bash
)이 필요하고 루트가 읽기,
실행하기가 가능해야 한다.
두 랜을 연결하고 있다면, '외부' 랜에 대해 특정한 라우트를 설정해
주어야 한다. 이것은 /etc/ppp/ip-up
를 쓰면 쉽다. 기계가 다중
PPP를 쓰고 있을 경우에만 어렵게 된다.
이는 /etc/ppp/ip-up
가 모든 ppp 연결이 될 때 실행되기
때문이다. 따라서 특정한 연결이 이루어지는 데 대해- 어떤 다른 연결이
이루어질 때 아니고- 정확한 라우트 명령이 조심스럽게 실행할 필요가
있다!
두개의 랜이 연결될 때, 각 끝에 쌓여있던 전자우편이 쏟아지기를
바랄 것이다 -각자 목적지에 보내질 것-. 이것은 적당한 sendmail
명령을 덧붙이면 된다.
pppd 가 이를 완료하는 스크립트 안으로 들어가는 적당한 매개변수에
배쉬 'case' 구문을 사용한다. 내가 우리 광역네트워크 연결과 나의 이더넷에
대한 연결을 다루는 /etc/ppp/ip-up
스크립트가 그런
예이다.(같은 ppp 서버를 다룬다.)
이 예제는 다양한 경우의 사용법을 보여준다.
#!/bin/bash # # pppd에 필요한 것과 같은 경우에 보내는 라우트를 다루는 스크립트 # 이렇게 다루는 것이 필요한 초보자를 위한 연결 # # ppp 연결이 되었을 때, 이 스크립트는 다음의 변수에 따라 호출된다. # $1 pppd에서 쓰는 인터페이스 이름(예를 들어 pppd) # $2 tty 장치 이름 # $3 tty 장치 속도 # $4 인터페이스에 대한 로컬 IP 주소 # $5 원격 IP 주소 # $6 pppd에 대해 'ipparam'선택사항으로 정의되는 변수 case "$5" in # 뉴맨 캠퍼스 서버에 대한 라우트를 다룬다. 202.12.126.1) /sbin/route add -net 202.12.126.0 gw 202.12.126.1 # 메일 큐를 쏟아내서 대기 중인 전자우편을 받아온다. /usr/sbin/sendmail -q & ;; 139.130.177.2) # 인터넷 연결 연결되었을 때, 아직 연결되어 있지 않다면 시간 서버를 # 시작하고 세계 시간과 일치시킨다. if [ ! -f /var/lock/subsys/xntpd ]; then /etc/rc.d/init.d/xntpd.init start & fi ;; # (아직 실행중이지 않다면) 뉴스 서버를 시작한다. if [ ! -f /var/lock/subsys/news ]; then /etc/rc.d/init.d/news start & fi ;; 203.18.8.104) # 연결되자 마자 집에 기계로 전자우편을 내려 보낸다. # 나의 이더넷이 IP 메스커레이드와 proxyarp 라우팅으로 운영되므로 # 라우팅은 필요하지 않다. /usr/sbin/sendmail -q & ;; *) esac exit 0
우리 뉴맨 캠퍼스로 ppp연결과 이 스크립트를 만든 결과로, 다음의 라우팅 테이블 내용을 갖고 끝내게 된다( 이 기계는 일반적인 전화걸기 PPP 서버이고, 우리의 인터넷 연결을 다룬다). 각 내용이 무엇인지 설명하는데 돕기 위해서 출력에다 주석을 깔아놓았다.:-
[root@kepler /root]# route -n Kernel routing table Destination Gateway Genmask Flags MSS Window Use Iface # 상대방의 인터넷 게이트웨이를 향한 호스트 라우트이다. 139.130.177.2 * 255.255.255.255 UH 1500 0 134 ppp4 # 우리 뉴맨 캠퍼스 서버를 향한 호스트 라우트이다. 202.12.126.1 * 255.255.255.255 UH 1500 0 82 ppp5 # 내 집 이더넷을 향한 호스트 라우트이다. 203.18.8.104 * 255.255.255.255 UH 1500 0 74 ppp3 # 두개의 일반적인 전화걸기 PPP 회선이다. 203.18.8.64 * 255.255.255.255 UH 552 0 0 ppp2 203.18.8.62 * 255.255.255.255 UH 552 0 1 ppp1 # 뉴맨 캠퍼스 랜에 대한 특정 네트워크 라우트이다. 202.12.126.0 202.12.126.1 255.255.255.0 UG 1500 0 0 ppp5 # 로컬 이더넷에 대한 라우트이다.(두개의 인접한 C 그룹 상위네트워크) 203.18.8.0 * 255.255.254.0 U 1500 0 1683 eth0 # 귀환 장치를 향한 라우트이다. 127.0.0.0 * 255.0.0.0 U 3584 0 483 lo # 인터넷을 향한 기본값 라우트이다. default 139.130.177.2 * UG 1500 0 3633 ppp4
앞 장은 외부로 나가는 전자우편을 다루는 법을 보여준다 - 단순히 연결되었을 때 메일 큐를 쏟아내는 것이다.
광역네트워크 연결을 실행시키는 중이라면,상대방 랜의 네트워크 관리자와
함께 같은 것을 정확하게 맞출 수 있을 것이다. 예를 들어 광역네트워크
연결의 뉴맨 캠퍼스 쪽 끝에서는 , /etc/ppp/ip-up
스크립트는
다음과 같다:-
#!/bin/bash # # pppd에 필수적일 때 보내는 라우트를 다루는 스크립트 헨드랜드에 대한 # 연결만이 이 연결을 요구한다. # # 연결되었을 때 스크립트는 다음 변수에 따라 호출된다. # $1 pppd가 쓰는 인터페이스 이름(예를들어 ppp3) # $2 tty 장치 이름 # $3 tty 장치 속도 # $4 인터페이스에 대한 로컬 IP 주소 # $5 상대방 IP 주소 # $6 pppd에 'ipparam' 선택사항으로 정의한 매개변수 case "$5" in 203.18.8.4) /usr/sbin/sendmail -q ;; *) esac exit 0
그럼 동적 IP PPP 연결만 인터넷 서비스 업체에서 제공 하고 있을 경우, 인터넷 서비스 업체 서버의 계정에서 전자우편을 받아올 필요가 있다. 보통 이것은 POP(우체국 프로토콜:Post Office Protocol)를 써서 하게 된다. 이 과정은 'popclient' 프로그램을 쓰면 다룰 수 있다 - 또한 ip-up 스크립트는 이 과정 역시 자동화할 수 있다!
간단하게 popclient의 적당한 호출을 포함하는 /etc/ppp/ip-up
스크립트를 만들면 된다. 레드햇 리눅스를 쓰는 내 랩탑(여행할 때 들고
다닌다)의 경우는 이렇다.
popclient -3 -c -u hartr -p <password> kepler.hedland.edu.au |formail -s procmail
뉴스 등등에 대해서도 slurp이나 같은 기능의 어떤 것도 쓸 수 있다. 기억할 것은 ip-up 스크립트가 배쉬 스크립트일 뿐이며, 따라서 적당한 PPP 연결이 이루어질 때마다 이루어질 필요가 있는 어떤 기능도 자동화하는데 사용될 수 있다는 것이다.