다음 이전 차례

2. 설치 방법

* 설치에 들어가기 전에...

레드햇 리눅스 5.2 이상 (Glibc 2.x)

이 글은 x86 머신를 기준으로 했다. 알파나 스팍은 관련 링크에서 소스를 받아다가 맞게 컴파일해 시도해보길 바란다.

커널 2.0 이상

되도록 2.2.x 를 추천한다.

pppd 2.3.7 이상

레드햇 6.1이라면 2.3.10-3 이상을 사용하라.

멀쩡한 랜카드 + 드라이버가 잡혀 있어야 한다. (너무나 당연..)

그리고 진짜 접속을 위해서는 윈도우즈에서 ADSL 접속시에 필요했던 ``로그인 창에 쓰는 아이디''와 ``암호''를 반드시 알아야 한다.

지역에 따라서 코넷 아이디가 leesop 일때 로그인창에 쓰는 아이디란에는 leesop@local 이라고 적거나 leesop@ppp 라고 적는 경우도 있다고 들었다. 반드시 확인하고 시작하라.

2.1 커널 패치를 하지 않는 방법 (enternet 100 프로그램 사용)

가장 간단하고, 여러가지 커널 버전에 독립적으로 이용할 수 있으며, 보다 안정적이나 이를 이용할 수 없는 환경에 있는 사람들이 있으므로, 주의하기 바란다.

PPPoE 프로그램을 다운로드 한다.

가장 신뢰성 있는 PPPoE 클라이언트는 윈도우즈 등의 다양한 플렛폼에서 제품을 내놓고 있는 NTS 사의 Enternet 100 의 Linux 버전이다. 이 Enternet 이라는 제품은 원래 일반이용자들에게 판매되는 소프트웨어가 아니고, 특수한 PPPoE 서버가 반드시 필요한 제품이기 때문에 기업이나 ISP를 대상으로 OEM 납품만 한다. 따라서 이를 구하려면 이 제품이 OEM 으로 들어간 ISP의 고객 지원/다운 로드 사이트에서 가져오는 방법 밖에는 없다.

캐나다의 Sympatico 사에서 이 제품을 라이센스해서 자사 가입자들에게 Access Manager 라는 이름으로 배포하고 있다. 몇몇 리눅서들이 자신의 홈페이지에서 관련 프로그램셋을 제공하고 있다.

우리는 여기서 다운로드 한다. http://sidhe.folkwolf.net/~chris/pppoe-howto/enternet100.bin.tar.gz 레드햇 5.2용의 바이너리 파일이며, 레드햇 6.0 이상에서도 잘 동작한다.

이 홈페이지 아래에 enternet100 의 소스도 있으나 라이브러리 등이 더 있어야 하며 테스트해본 결과 컴파일이 한번에 잘 되지는 않았고, 괜히 초보의 경우 머리만 복잡해지는 단점이 발생했다.

나중에 성공하고 난 뒤에 할일이 없거나, 여러가지 이유로 실행이 되지 않을 경우에만 받아서 해보길 권한다.

적당한 위치에 압축을 푼다.

이 파일을 아무 디렉토리에나 푼다. 다음의 두 파일이 나올 것이다.

pppoe
pty-redir

다른 파일이 하나도 나오지 않지만 당황하지 마라.

1차 테스트를 해본다.

이 1단계 테스트 과정에서 실패한다면 이 방법으로는 현재 환경에서 접속이 되지 않음을 의미한다. 2-2 방법으로 전환하거나, ADSL 담당자와 문의하기 바란다.

일단 랜카드를 올린다.

ifconfig eth0 up

파라미터 등은 중요하지 않다.

linuxconf 등에서 IP는 192.168.0.10 식으로 아무렇게나 설정하고, 게이트웨이는 설정하지 마라. 호스트 네임 등은 전혀 중요하지 않다. 바꿔봐야 도움이 안된다.

아래는 이를 올렸을때의 필자의 상황이다. 참고하라.

필자는 IP 마스커레이딩을 시도하기 위해 랜카드를 두개 설치했다. 이중에 eth0 이 ADSL 모뎀과 연결되어 있다.

[leesop@www pppoe]$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:C0:26:11:8D:BD  
          inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          Interrupt:10 Base address:0xe400 

eth1      Link encap:Ethernet  HWaddr 00:00:E8:ED:20:A0  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          Interrupt:9 Base address:0xe000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:3924  Metric:1
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 

랜카드를 올린 다음, 아까의 pppoe 프로그램을 구동한다.

[leesop@www pppoe]$ ./pppoe

이를 입력하고 몇초간을 기다려 본다. 이때 모뎀으로 일반 PPP 접속시에 나오는 쓰레기문자가 일정 간격으로 반복해서 출력되면 성공이다.

그렇지 않다면 지난번 접속이 비정상 종료되어 있어 일시적으로 회선이 잠가져 있는 것이거나, 아니면 센터쪽의 머신이 PPPoE 를 제대로 지원하지 않는 것이다. 이때는 뒤의 2-2의 커널 패치 방법을 시도해 보거나 센터와 협상을 해야 한다.

윈도우즈 머신이 있다면 테스트전에 미리 한번 연결해 보고서 시도해 보기를 권한다.

접속 스크립트를 만든다.

앞의 두 파일만 덩그만하게 나와 있는 것에 당혹해 하는 분들이 많았을 것이다.

필자가 이를 실행하기 위한 간단한 구동 스크립트를 제공한다.

[leesop@www pppoe]$ ls -al
total 243
drwxr-xr-x   2 leesop   users        1024 Nov 30  1999 .
drwxr-xr-x   3 leesop   users        1024 Nov 28 18:59 ..
-rwxr-xr-x   1 leesop   users      238004 Jun 25 06:18 pppoe
-rwxr-xr-x   1 leesop   users        5320 Nov 30  1999 pty-redir
-rwxr-xr-x   1 leesop   users         228 Nov 30  1999 start

[leesop@www pppoe]$ cat start
#!/bin/sh -x
USER=leesop@local
pty=`./pty-redir ./pppoe -I eth0`
if [ "X$pty" = "X" ]; then
        echo >&2 "cannot start pppoe"
        exit 1
fi
/usr/sbin/pppd $pty noipdefault defaultroute passive persist name $USER lcp-echo-interval 30

앞의 USER 부분의 아이디를 윈도우즈에서 로그인 창에 쓰는 것으로 교체하라. 앞으로 접속을 위해서는 이 디렉토리로 와서 ./start 라고 치면 접속이 될 것이다. 그러나, 당장 급하게 아직 시도하지는 마라. 설정할게 더 있다.

pap-secrets 를 설정한다.

앞에 아이디는 넣는 곳이 있는데, 암호를 입력하는 란이 없다고 이상하게 생각할 수도 있다. 걱정하지 마라. 암호는 여기에 넣는다.

/etc/ppp/pap-secrets 파일을 연다.

이 파일의 끝에 다음과 같이 적는다.

leesop@local * 12345

앞의 # 으로 시작하는 문장들은 주석이다. ppp 프로그램은 이걸 읽으려고 시도조차 하지 않는다. 따라서 이걸 제거하고 안하고는 아무런 의미가 없다. 혹시 안된다고 이걸 지워보고 하는 것은 시간 낭비이다.

구성은 보시는대로 앞에는 앞서 스크립트의 USER 항목에 적었던 로그인창에 적는 아이디와 별표 그리고 암호이다. (예로 12345라고 적었다. 정말로 필자가 암호를 12345로 설정하고 사용중이라고 믿지는 말기 바란다. ^_^) 세가지는 모두 공백이나 탭 등으로 띄워놓기만 하면 된다.

설정은 완료, 2차 테스트를 해보자.

터미널 창을 하나 더 연다.

새 창에서 tail -f /var/log/messages 라고 입력한다.

이 창에서는 이제 pppd가 보내오는 메시지가 출력된다.

먼저 있던 창에서 ./start 라고 입력해 아까 만들었던 스크립트를 실행시킨다.

길게 잡아 10초 정도 기다린다.

이때 메시지 창에 다음과 같이 IP를 받았다고 메시지가 나오면 성공이다.

Nov 30 17:46:33 home kernel: PPP: version 2.3.7 (demand dialling) 
Nov 30 17:46:33 home kernel: PPP line discipline registered. 
Nov 30 17:46:33 home kernel: registered device ppp0 
Nov 30 17:46:33 home pppd[659]: pppd 2.3.10 started by root, uid 0
Nov 30 17:46:33 home pppd[659]: Using interface ppp0
Nov 30 17:46:33 home pppd[659]: Connect: ppp0 <--> /dev/ttyp0
Nov 30 17:46:34 home pppd[659]: local  IP address 128.134.107.16
Nov 30 17:46:34 home pppd[659]: remote IP address 128.134.107.1

이중에서 Connect 까지만 떨어지고 먹통이라면, 이는 스크립트를 잘못 만들었을 경우나 아까의 pap-secrets 파일의 아이디와 스크립트의 아이디가 다른 경우 등으로 생각할 수 있다.

중간에 warning 이나 error가 떨어진다면 스크립트가 잘못되었을 가능성이 높다.

접속을 확인한다.

메시지 창에서 보듯 이렇게 IP를 받아왔다면 접속은 성공한 것이다.

네트웍 상태를 보기 위해 ifconfig 를 다시 해보자.

[leesop@www pppoe]$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:C0:26:11:8D:BD  
          inet addr:192.168.0.10  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1400  Metric:1
          RX packets:15 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          Interrupt:10 Base address:0xe400 

eth1      Link encap:Ethernet  HWaddr 00:00:E8:ED:20:A0  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          Interrupt:9 Base address:0xe000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:3924  Metric:1
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 

ppp0      Link encap:Point-to-Point Protocol  
          inet addr:128.134.107.5  P-t-P:128.134.107.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10 

맨 아래에 ppp0 이라는 접속 어댑터가 생겼다. 인터넷 연결이 잘 된 것이다.

참고로 인터넷 사용 전에 /etc/resolv.conf 파일을 편집해서 네임 서버 주소를 넣어줘야 www.hitel.net 같은 식으로 인터넷을 사용할 수 있다. (재부팅이나 접속 단절 등은 전혀 필요 없이 그냥 vi 등으로 에디팅 해주고 파일만 저장하면 바로 효력이 발생한다.)

행복한 마음으로 접속을 끊는다.

ps -aux 라고 치면, 프로세스 목록이 나온다.

이중에 pppd 를 kill로 죽여주면 된다.

아까의 메시지 창에 접속이 성공적으로 종료되었다는 말과 함께, 전송한 바이트 수와 사용 시간이 나올 것이다.

2.2 커널 패치를 통해 하는 방법 (pppoed 0.4 사용)

많은 경우에 성공을 했다는 사례가 보고되는 방법이고, 오버헤드가 앞의 방법 보다 적어 더 좋은 성능을 낸다고 알려져 있다. 그러나 커널 버전이 맞아야 하고, 커널 컴파일에 약간의 지식이 있어야 한다는 단점도 있다.

  1. 준비

    http://www.davin.ottawa.on.ca/pppoe/에 접속해 pppoed0.4.tgz 파일을 다운로드 한다.

    ftp://ftp.kernel.org/pub/linux/kernel에서 깨끗한 커널 소스를 받아오거나 커널 소스 패키지를 설치한다.

    현재 앞의 0.4 버전의 pppoed 프로그램은 커널 2.0.38 2.2.13 2.3.29 만을 공식으로 지원하고 있다.

  2. 커널을 패치한다.

    적당한 디렉토리에 pppoed 프로그램을 풀면, 커널버전-pppox.gz 라는 파일이 생겨난다.

    이 파일을 커널 소스에 적용한다.

    편의상 커널 소스를 /usr/src/linux 에 풀어놓았다고 가정한다.

    cd /usr/src/linux 
    zcat /압축을 푼 디렉토리.../커널버전-pppox.gz | patch -b -p1
    

  3. 커널을 설정한다.

    시스템에 맞게 적당하게 커널을 설정한다.

    이때 pppoe를 사용하기 위해서 network devices 항목 안에 있는 ``tty support for pppox'' 를 켠다.

    커널 2.3.x 에서는 `PPP support for sync tty ports' 항목도 켠다.

  4. 컴파일을 한다.

    앞서 설정한 커널을 컴파일/설치 한다.

    pppoed 를 컴파일 한다.

    디렉토리로 들어가서

    make realclean
    make dev
    make depend
    make
    make install
    

    을 순서대로 수행한다.

    시스템을 재시작 한다.

  5. 랜 카드와 pppd를 설정한다.

    랜 카드에서 IP 는 0.0.0.0 , 기본 게이트웨이는 부여하지 않는다.

    /etc/ppp/options 파일을 다음과 같이 한다.

    lock
    local
    nocrtscts
    noauth
    #be careful with mtu/mru if you are masquareding. 
    # Look at Kal Lin's page at http://www.cs.toronto.edu/~kal/hse/resource.html
    mru 1490
    mtu 1490
    #please make sure you have noaccomp for now
    noaccomp
    #the construct below is needed by sympatico
    name "leesop@local" 
    #you might want to change defaultroute if you have more
    #than one pppoe session
    defaultroute
    hide-password
    sync
    #it might be a good idea to uncoment the debug below 
    #debug
    #kdebug 7
    #if you use the -R option to make it persistent
    #then uncomment the next two lines below
    #lcp-echo-interval 240
    #lcp-echo-failure 3
    #nodetach
    

    위의 name 항목에는 앞의 윈도우에서 WinPoET으로 접속할때 로그인창에 쓰던 아이디를 넣는다.

    /etc/ppp/pap-secrets 파일을 다음과 같이 한다.

    # Secrets for authentication using PAP
    # client        server  secret                  IP addresses
    leesop@local * 12345
    

    역시 앞의 name 항목에 쓴 것과 같은 접속에 사용되는 아이디와 암호를 적는다.

  6. 접속해보기

    pppoed 프로그램을 실행한다.

    자동으로 접속이 되면서 연결이 된다.

    옵션이 몇가지 있는데, 이는 pppoed -help 라고 입력하면 얻을 수 있다.

기타 설치에 대한 자세한 사항은 내장된 INSTALL 문서를 참조하기 바란다.


다음 이전 차례