다음 이전 차례

23. 연결된 후에 - /etc/ppp/ip-up 스크립트

일단 PPP 연결이 구축되면 pppd는 /etc/ppp/ip-up 파일을 찾는다. 이 스크립트가 있고 실행가능하면 PPP 대몬은 이 스크립트를 실행시킨다. 이것으로 어떤 필수적인 특별 라우트 명령이나 PPP 연결이 활동할 때마다 일어나길 원하는 모든 동작을 자동화할 수 있다.

이것은 단지 쉘 스크립트이며 쉘 스크립트로 할 수 있는 것은 뭐든지 할 수 있다(가상적으로 하고 싶은 것 다)

예를 들어 메일 큐에서 기다리던 밖으로 보낼 편지를 바로 보내게 sendmail을 조정할 수 있다.

비슷하게, 인터넷 서비스 업체 쪽에서 대기 중이던 전자우편(pop를 쓸 때)을 받기 위해 ip-up에다 명령을 넣을 수 있다.

/etc/ppp/ip-up에는 제한이 있다:-

23.1 특수 라우트

두 랜을 연결하고 있다면, '외부' 랜에 대해 특정한 라우트를 설정해 주어야 한다. 이것은 /etc/ppp/ip-up를 쓰면 쉽다. 기계가 다중 PPP를 쓰고 있을 경우에만 어렵게 된다.

이는 /etc/ppp/ip-up가 모든 ppp 연결이 될 때 실행되기 때문이다. 따라서 특정한 연결이 이루어지는 데 대해- 어떤 다른 연결이 이루어질 때 아니고- 정확한 라우트 명령이 조심스럽게 실행할 필요가 있다!

23.2 메일 큐 다루기

두개의 랜이 연결될 때, 각 끝에 쌓여있던 전자우편이 쏟아지기를 바랄 것이다 -각자 목적지에 보내질 것-. 이것은 적당한 sendmail 명령을 덧붙이면 된다.

pppd 가 이를 완료하는 스크립트 안으로 들어가는 적당한 매개변수에 배쉬 'case' 구문을 사용한다. 내가 우리 광역네트워크 연결과 나의 이더넷에 대한 연결을 다루는 /etc/ppp/ip-up 스크립트가 그런 예이다.(같은 ppp 서버를 다룬다.)

23.3 /etc/ppp/ip-up 예제 스크립트

이 예제는 다양한 경우의 사용법을 보여준다.


#!/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

23.4 전자우편 다루기

앞 장은 외부로 나가는 전자우편을 다루는 법을 보여준다 - 단순히 연결되었을 때 메일 큐를 쏟아내는 것이다.

광역네트워크 연결을 실행시키는 중이라면,상대방 랜의 네트워크 관리자와 함께 같은 것을 정확하게 맞출 수 있을 것이다. 예를 들어 광역네트워크 연결의 뉴맨 캠퍼스 쪽 끝에서는 , /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 연결이 이루어질 때마다 이루어질 필요가 있는 어떤 기능도 자동화하는데 사용될 수 있다는 것이다.


다음 이전 차례