다음 이전 차례

12. PPP 연결 파일의 설정

PPP를 모든 사용자들이 쓸 수 있게 하고 싶더라도 일단 루트로 로긴해서 PPP 설정에 필요한 디렉토리와 파일을 만들어야 한다.

PPP는 몇 개의 파일을 만들어서 PPP연결을 만들고 설정한다. 파일은 PPP 2.1.2와 2.2가 서로 이름이나 위치가 다르다.

PPP 2.1.2용 파일은:-


/usr/sbin/pppd          # PPP 실행파일
/usr/sbin/ppp-on        # 전화 및 연결 스크립트
/usr/sbin/ppp-off       # 연결 끊기 스크립트
/etc/ppp/options        # 모든 연결에 대한 pppd 선택사항
/etc/ppp/options.ttyXX  # 해당 포트 연결에 대한 선택사항

PPP 2.2용 파일은:-


/usr/sbin/pppd                  # PPP 실행파일
/etc/ppp/scripts/ppp-on         # 전화 및 연결 스크립트
/etc/ppp/scripts/ppp-on-dialer  # 전화걸기 스크립트의 첫부분
/etc/ppp/scripts/ppp-off        # 실제 chat 스크립트 자체
/etc/ppp/options                # 모든 연결에 대한 pppd 선택사항
/etc/ppp/options.ttyXX          # 해당 포트 연결에 대한 선택사항

래드햇 리눅스 사용자들은 표준 래드햇 4.X 설치가 이 스크립트들을 /usr/doc/ppp-2.2.0f-2/scripts에 깔았는지 확인해야 한다.

/etc 디렉토리에는 ppp 디렉토리가 있을 것이다:-

drwxrwxr-x   2 root     root         1024 Oct  9 11:01 ppp

없을 경우에는 위의 소유권과 허가를 갖도록 만든다.

디렉토리가 이미 있었다면 거기에 options.tpl이라는 선택사항 예제이 들어있을 것이다.없을 경우에 대비해 아래에 적어 놓았다.

여기에 거의 대부분의 PPP 선택사항에 대한 설명이 있으므로 출력해서 이것을 pppd man 페이지와 비교해가며 읽는 것이 좋다.이것을 /etc/ppp/options 파일을 만들 때 기초로 삼는 것도 좋지만, 아마 이 예제에 있는 모든 명령을 다 넣을 필요없이 자기 파일을 따로 만드는 것이 더 나을 것이다 - 이것이 읽고 관리하는데 훨씬 짧고 쉽다.

여러개의 직렬 회선/모뎀을(PPP 서버가 전형적인 경우다) 갖고 있을 경우에 전화걸기와 받기를 지원할 모든 직렬 포트에 공통적인 선택사항을 갖고 있는 /etc/ppp/options파일을 만들고 각각의 포트에 맞게 개별적인 설정을 갖는 PPP 연결을 할 수 있도록 각 회선마다 개별적인 선택사항 파일을 설정할 수 있다.

포트에 정해놓은 선택사항 파일은 options.ttyx1, options.ttyx2 등등이라고 이름붙이게 된다.(x자리에 직렬 포트에 적합한 문자를 넣는다)

하지만, PPP연결이 하나 뿐이라면 기분좋게 /etc/ppp/options파일을 쓰면된다. 아니면 pppd 명령행 자체에 매개변수로 모든 선택사항을 집어넣을 수도 있다.

/etc/ppp/options.ttySx 파일을 쓰는 설정을 관리하는 쪽이쉽다. 여러개의 다른 장소로 PPP를 연결하는 경우, /etc/ppp/options.site파일에 각각의 장소에 대한 선택사항 파일을 만들 수 있고 연결할 때 PPP 명령의 변수로 줄 수 있다(pppd 명령행에 file [선택파일이름]이라고 pppd 선택사항을 주면 된다).

12.1 제공된 선택사항 예제 파일

PPP 배포본 중 몇개에 이 선택사항 예제파일이 빠져있는 것 같아서 완전한 파일을 옮겨 놓았다. 이 파일을 그대로 /etc/ppp/options파일로 편집하지 않았으면 한다. 대신 새 파일로 복사해다 편집해서 쓰자. 만약 편집하다가 헷갈리면 다시 원래 파일을 보면서 시작할 수 있기 때문이다.


# /etc/ppp/options -*- sh -*-
# pppd에 대한 일반적인 선택사항
# created 13-Jul-1995 jmk
# 주석 부분에 대해 김창한이 번역하였음 jimsung@usa.net
# autodate: 01-Aug-1995
# autotime: 19:45

# 직렬 회선을 설정할 때는 실행 명령 또는 쉘 명령어를 쓴다. 이
# 스크립트는 모뎀에서 전화를 쓰고 ppp로 매번 연결하기 위해 전형적으로
# "chat" 프로그램을 쓸 것이다.
#connect "echo 연결 명령을 써준다."

# pppd가 연결을 끝낸 뒤에 실행명령 또는 쉘 명령을 실행한다.
# 이 스크립트는, 예를 들어, 하드웨어 모뎀 제어 신호가 더이상 유효하지
# 않을 경우에 명령을 내려 모뎀을 끊도록 한다.
#disconnect "chat -- \d+++\d\c OK ath0 OK"
# 32비트 hex 비동기 문자테이블; 각 비트는 pppd가 수신하기 위해
# 탈출하는 문자열이다. 0x00000001은'\x01'을 대신하고 0x80000000은
# '\x1f'를 대신한다.
#asyncmap 0

# 네트워크 패킷을 받거나 보내도록 허용하기 전에 상대방에게 확인을
# 요구한다.
#auth

# 직렬 포트에서 데이타 흐름을 제어하기 위해 하드웨어 흐름제어를 쓴다.
# (RTS/CTS 등)
#crtscts

# 직렬 포트에서 데이타 흐름을 제어하기 위해 소프트웨어 흐름제어를
# 쓴다.(XON/XOFF 등)
#xonxoff

# IPCP 교환이 성공적으로 이루어지면 상대방을 게이트 웨이로 써서 시스템
# 라우팅 테이블에 기본값으로 넣는다.PPP 연결이 끊어지면 이 내용은
# 없어진다.
#defaultroute

# 통신에서 빠져나오기 위한 특정한 문자열을 정한다.(상대방이 자기 쪽
# 비동기 제어 문자테이블을 써서 빠져나오도록 요구하든 아니든 간에)
# 탈출문자 들은 쉼테이블로 나누어진 hex 주소의 목록으로
# 정의된다. 비동기테이블 선택사항이 정의된 제어 문자만을 허용하는데 비해
# 여기서는 탈출 선택사항으로 거의 모든 문자가 허용된다. 탈출할 수 없는
# 문자열은 hex 값 0x20 - 0x3f 또는
# 0x5e이다.
#escape 11,13,ff

# 모뎀 제어 회선을 사용하지 않음
#local

# pppd가 UUCP 형 잠금을 직렬 장치에 사용하여 장치에 대한 포괄적인
# 접근으로부터 안전하게 만든다.
#lock

# 모뎀 제어선을 사용한다. Ultrix 모델에서 이 선택사항은 crtscts
# 선택사항과 같은 하드웨어 흐름제어를 뜻한다.(이 선택사항은 완전히
# 적용되지 않는다)
#modem

# 통신 중의 최대 수신 값[MRU:Maximum Receive Unit]을 정한다. pppd는
# <n> 바이트 이상의 패킷을 보내지 말도록 상대방에서 요청한다. 최소 MRU는
# 128이다. 기본 MRU는 1500이다. 저속 연결의 경우 128값을
# 추천한다. (40바이트가 TCP/IP 헤더용이고 256 바이트가 데이타용이다)
#mru 542

# 인터페이스 netmask를 <n> 로 설정한다, 255.255.255.0과 같이 <8진수>
# 으로 구성된 32비트 netmask이다.
#netmask 255.255.255.0

# 아무런 로컬 IP 주소도 정해지지 않았을 경우 호스트 이름을 가지고 로컬
# IP 주소를 정하는 (물론 가능할 경우) 기본 동작을 하지 않도록
# 한다. 이것을 선택하면, 상대방은 IPCP 통신 동안 로컬 IP주소를
# 보내주어야 한다.(명령행이나 선택사항 파일에 명확히 정하지 않았을
# 경우).
#noipdefault

# LCP에 "수동" 선택을 사용한다. 이것을 선택하면, pppd는 연결을
# 초기화하려고 하는데; 상대방에서 아무 대답도 없으면 상대방에서 유효한
# LCP 패킷이 올때까지 수동적으로 기다린다(끝내지 않고 기다린다, 이
# 선택을 하지 않으면 대답이 없으면 끝난다).
#passive

# 이 선택을 하면, pppd는 상대방에서 유효한 LCP 패팃을 받을 때까지
# 초기화하기 위한 LCP 패킷을 보내지 않는다(pppd 옛날 버젼의 "passive" 에
# 해당한다.
#silent

# LCP나 IPCP에 대하여 어떤 선택사항에 대해서도 통신을 요청하거나
# 허용하지 않음 (기본값을 사용함)
#-all

# 주소/제어 압축 통신을 사용않음 (기본값으로 주소/제어 영역을 사용하지
# 않는다.)
#-ac

# 비동기 통신을 사용않음 (기본값 비동기 테이블에서는 모든 제어 문자에
# 대해 탈출한다.
#-am

# 분기하여 배경 과정이 되지 않는다.(pppd는 직렬 장치가 정해지지 않았을
# 경우 배경 과정이 된다.)
#-detach

# IP 주소 통신을 사용않음 (이것을 선택하면, 찾아갈 IP 주소가 명령행의
# 선택 사항이나 선택사항 파일안에 정의되어 있어야만 한다.)
#-ip

# 도사 주소(magic number) 통신을 사용않음 이것을 선택하면, pppd는
# 루프백 회선을 정할 수 없다.
#-mn

# MRU를 통신을 사용하지 않음(1500 등 기본값을 사용함)
#-mru

# 프로토콜 영역 압축 통신을 사용하지 않음(프로토콜 영역 압축 사용않음
# 등 기본값을 사용함).
#-pc

# PAP를 써서 상대방에게 확인을 요구한다. 이것은 양방향 확인을 요구한다
# - 이것은 내 기계에게 인터넷 서비스 업체쪽 기계를 확인하도록 요구하게
# 될 것이기 때문에 (그리고 확인해주지 않으므로) 인터넷 서비스 업체쪽
# 기계에 연결할 때 표준 PAP 확인에 사용하면 안된다.
#+pap

# PAP를 써서 확인하지 않음
#-pap

# 상대방에게 암호교환 확인 프로토콜[CHAP:Cryptographic Handshake
# Authenti-caton Protocol] 확인을 요구한다. 이것은 양방향 확인을
# 요구한다 - 이것은 내 기계에서 인터넷 서비스 업체쪽 기계를 확인하도록
# 요구하게 될 것이기 때문에 (그리고 확인해 주지 않으므로) 인터넷 서비스
# 업체쪽 기계에 연결할 때 표준 CHAP 확인을 사용하면 안된다.
#+chap

# CHAP를 써서 확인하지 않음
#-chap

# 밴 제이콥슨 형의 IP 헤더 압축 통신을 사용않음(압축않음 등 기본값을
# 쓴다)
#-vj

# 오류추적 수준을 올린다(-d와 같다). 이 선택사항이 주어지면, pppd는
# 읽을 수 있는 형태의 모든 송수신 제어 패킷의 목록을 기록한다. 패킷은
# 장비 daemon과 오류추적 수준을 syslog를 통해 기록된다. (pppd가 외부
# 오류추적 가능상태로 컴파일되었으면, daemon 대신 장비 local2를 써서
# 기록한다.)
#debug

# 인증목적으로 로컬 호스트 이름을 영역이름 <d> 에 덧붙인다. 예를들어
# gethostname()이 porsche를 돌려준다고 할 때 완전한 자격을 갖춘
# 영역이름은 porsche.Quotron.com이다. 영역이름(도메인 이름)을
# Quotron.COM으로 정해주려면 이 domain 선택을 쓴다.
#domain <d>

# 커널-수준 PPP 드라이버에 오류추적 코드를 가능하게 한다. 매개변수 n은
# 다음 값을 합친 주소이다: 1은 일반적인 오류추적을 알리도록 하고 2는
# 받은 패킷의 내용을 인쇄하도록 요청하고 4는 전달된 패킷의 내용을
# 인쇄하도록 요청한다.
#kdebug n

# MTU 값을 <n> 으로 정한다. 상대방이 MRU 통신으로 최소 값을 요구하지
# 않으면 pppd는 커널 네트워크 코드가 PPP 네트워크 인터페이스 n 바이트
# 이상의 데이타 패킷을 보내지 말라고 요청한다.
#mtu <n>

# 로컬 시스템의 이름을 인증목적으로 <n>으로 설정한다. PAP/CHAP를
# 사용할 경우 아마 인터넷 서비스 업체에 접속하는 사용자 이름으로
# 설정해야 할 것이다.
#name <n>

# PAP를 쓰는 상대방에 대해 내 기계를 인증하기 위해 사용자 이름을 <u>로
# 설정한다; 위의 'name'을 쓴 경우 이것을 사용하면 안된다!
#user <u>

# 확인 목적으로 호스트 이름을 로컬 시스템 이름에 쓰게 한다.(name
# 선택사항을 무시하게 한다)
#usehostname

# 인증할 목적으로 가상의 상대방 시스템 이름을 <n>으로 정한다.
#remotename <n>

# 내쪽 시스템의 주소 해석 프로토콜[ARP:Address Resolution Protocol]에
# 상대방의 IP주소와 내쪽 시스템의 이더넷 주소를 추가한다.
#proxyarp

# PAP를 써서 상대방을 인증하기 위해 시스템 비밀번호 데이터베이스를 쓴다.
#login

# 이 선택사항이 주어지면, pppd는 매 n초마다 LCP 응답 요구를
# 보낸다. 리눅스에서는 상대방으로부터 n초동안 아무 패킷도 받지 못할 경우
# 응답요구를 보내게 된다. 보통, 상대방은 응답요구를 보냄으로써
# 응답요구에 답한다. 이 선택사항은 lcp-echo-failure 선택과 함께 상대방과
# 연결이 끊어 졌는지 알아볼 때 쓴다.
#lcp-echo-interval <n>

# 이 선택사항이 주어지면, pppd는 유효한 LCP 응답요구를 받지 못하고
# n개의 LCP 응답요구를 보내면 상대방과의 통신이 끊어졌다고
# 간주한다. 그렇게 되면 pppd는 통신을 끊는다. 이 선택을 쓸 때
# lcp-echo-interval 변수는 0이 아닌 값을 가져야 한다. 이 선택사항은
# 하드웨어 모뎀 제어 회선을 전혀 쓸 수 없는 상황에서 물리적인 연결이
# 끊어졌을 때(예를 들어 모뎀 전화가 끊어졌을 때) pppd를 중지시킬 수
# 있도록 하기 위해 사용된다.
#lcp-echo-failure <n>

# LCP 재시작 간격 (재신호 간격)을 <n>초로 정한다(기본값은 3).
#lcp-restart <n>

# LCP 종료 요구전달의 최대값을 <n>으로 정한다(기본값은 3).
#lcp-max-terminate <n>

# LCP 설정 요구 전달의 최대값을 <n>으로 정한다;(기본값은 10) 어떤 PPP
# 제공측은 시작하는 게 너무 느리다. 'serial line loopback error'를
# 받았는데 생각하기에 로긴을 제대로 했고, PPP가 서버에서 시작하는 것
# 같으면 이 값을 늘려야 한다.
#lcp-max-configure <n>

# 설정 거절 보내기를 시작하기 전에 LCP 설정-NAK을 보내는 최대값을
# <n>으로 정한다. (기본값 10)
#lcp-max-failure <n>

# IPCP 재시작 간격(재전송 종료)을 <n>로 정한다.(기본값 3)
#ipcp-restart <n>

# IPCP 종료-요구 전달의 최대값을 <n>으로 정한다.(기본값3)
#ipcp-max-terminate <n>

# IPCP 설정-요구 전달의 최대값을 <n>으로 정한다.(기본값10)
#ipcp-max-configure <n>

# 설정-거절 보내기를 시작하기 전에 보내는 IPCP 설정-NAK의 최대값을
# 정한다.(최대 10)
#ipcp-max-failure <n>

# PAP재시작 간격(재전송 종료)을 <n>초로 정한다.(기본값 3)
#pap-restart <n>

# PAP 인증요구 전송의 최대값을 <n>으로 정한다.(기본값 1)
#pap-max-authreq <n>

# CHAP 재시작간격(시도 재전송 종료)을 <n>초로 정한다.(기본값 3)
#chap-restart <n>

# CHAP 시도 전송의 최대 횟수를 <n>으로 정한다. (기본값 10)
#chap-max-challenge

# 이 선택사항이 주어지면, pppd는 상대방에 매 <n>초마다 재시도하게 된다.
#chap-interval <n>

# 이것을 선택하면 로컬 IP 주소가 다른 선택사항에서 정의되어 있더라도
# pppd는 내 로컬 IP 주소에 대한 상대방의 개념을 받아들인다.
#ipcp-accept-local

# 이것을 선택하면 상대방 IP 주소가 다른 선택사항에서 정의되어 있더라도
# 상대방 IP 주소에 대한 상대방의 개념을 받아들인다.
#ipcp-accept-remote

12.2 어떤 선택사항을 써야 하나?(PAP/CHAP가 아닌 경우)

글쎄 모든 경우에 따라 다르다고나 할까(휴). 여기에 정해놓은 선택사항은 아마 대부분의 서버에 대해 작동할 것이다.

하지만, 작동하지 않는다면 예제 파일(/etc/ppp/options.tpl) 그리고 pppd man 페이지를 읽어본 다음, 연결하려고 하는 서버를 운영하는 시스템 관리자나 사용자 지원부서 사람에게 물어보아야 한다.

여기 있는 연결스크립트 내용 중 일부는 좀더 바꾸기 쉬운 pppd 명령행 선택사항으로도 쓸 수 있다.


# /etc/ppp/options (NO PAP/CHAP)
#
# pppd가 배경작업을 분기하는 것을 막는다.
-detach
#
# 모뎀 제어 행을 쓴다.
modem
# uucp 형의 잠금을 써서 직렬 장치에 대한 포괄적인 접근을 막는다.
lock
# 하드웨어 흐름 제어를 쓴다.
crtscts
# 라우팅 테이블에서 현재 연결에 대한 기본 라우트를 선택한다.
defaultroute
# 아무런 "탈출" 제어 문자를 설정하지 않는다.
asyncmap 0
# 최대 전달 패킷의 크기를 552 바이트로 정한다.
mtu 552
# 최대 수신 패킷의 크기를 552바이트로 정한다.
mru 552
#
#-------END OF SAMPLE /etc/ppp/options (no PAP/CHAP)


다음 이전 차례