다음 이전 차례

26. PPP 서버의 설정

이미 언급한 대로, 이것을 하는데는 여러가지 방법이 있다. 여기 있는 방법은 내가 쓰는 방법이다(Cyclades 다중 포트 직렬 카드와 몇개 전화회선의 회전식 전화를 쓴다).

이 방법이 마음에 들지 않는다면, 하고 싶은 데로 하면 된다. 하지만, 이 하우투에다 훗날 더 많은 방법을 넣고 싶다. 그러니까 설명과 방법을 보내줬으면 한다!

주의할 것은, 이 장이 리눅스를 PPP 서버로 설정하는 방법에만 관여한다는 점이다. 나는 특별한 단말기 서버나 그 비슷한 것을 설정하는 정보를 포함할 생각이 전혀 없다.

또한, shadow 비밀번호를 경험하지 못했다(언젠가 하게 될 테지만). 현재 여기에 있는 정보들은, 따라서, shadow 관련해서 요구되는 것은 전혀 포함할 수 없었다.

26.1 커널 컴파일

커널 컴파일과 커널 버전 대 pppd에 대해서 앞에 한 설명은 그대로 적용된다. 이 장에서는 이 문서의 앞 부분을 이미 읽은 것으로 간주한다!

PPP 서버에 대해서는, 커널에다 IP forwarding을 반드시 포함해야 한다. 다른 능력을 포함하고 싶으면 그렇게 한다(IP fire walls, accounting 등등).

만약 다중-포트 직렬 카드를 쓰고 있다면, 커널 도구에 필요한 드라이버를 명확히 포함해야만 한다.

26.2 서버 시스템에 대한 개관

우리는 동일한 이름/비밀번호 쌍을 쓰는 전화걸기 PPP(와 SLIP) 계정과 쉘 계정을 제공한다. 이렇게 하면 (우리로서는) 한 사용자가 하나의 계정만 가지면 되고 모든 연결 가능한 형태에 대해 이것을 쓸 수 있는 잇점이 있다.

우리는 교육 기관이기 때문에, 접속하는 간부나 학생들에게 돈을 받을 필요가 없으며, 계정 만들기나 요율 문제 등에 대해 걱정할 필요가 없다.

사이트와 인터넷 사이에 방호벽을 운영하고 있는데, 전화 회선이 우리 (인터넷) 방호벽 안에 있기 때문에 몇몇 사용자 접근을 제한한다(참으로 명백한 이유 때문에, 우리의 다른 내부 방호벽에 대한 세부사항은 여기에 쓸 수 없으며, 어떤 경우에도 적절하지 않다.)

우리 사이트에 PPP 연결을 구축하려는 사용자가 거치는 과정은(물론 유효한 계정을 가지고 있을 경우에):-

서버는 각각의 전화해 들어온 포트에 대해 IP 번호를 동적으로 나눠주기 위해 개별적인 /etc/ppp/options.ttyXX 파일을 쓴다. 이것을 만들면 라우트나 게이트를 만들 필요가 없어진다.

사용자 쪽에서 끊게 되면, pppd는 이것을 알아내고 모뎀에게 끊도록 지시하며, 동시에 PPP 연결을 끊어 준다.

26.3 프로그램을 함께 받기

다음의 프로그램이 필요하다:-

26.4 표준 (쉘 접근) 전화걸기 설정

PPP 서버를 설정하기 전에, 리눅스 기계는 전화걸기 접근을 다룰 수 있는 능력이 있어야 한다.

이 어쩔거나에서는 이것을 설정하는 법을 다루지는 않는다. 이에 대한 정보는 선택한 getty의 문서와 serial HOWTO를 보라.

26.5 PPP 선택사항 파일의 설정

모든 전화걸기 포트에 대해 보편적인 선택사항은 /etc/ppp/options 파일에서 설정해야 한다. 우리가 쓰는 선택사항은:-


asyncmap 0
netmask 255.255.254.0
proxyarp
lock
crtscts
modem

주의 - 어떤 (명백한) 라우트도 쓰지 않는다 - 특별히 기본 라우트 선택사항은 없다. 그렇게 하는 이유는 (PPP 서버로서)요구되는 것이라고는 ppp 클라이언트 측으로부터 패킷을 받아 랜/인터넷으로 라우트시키고 클라이언트측에게 랜/인터넷에서 패킷을 받아 라우트시키는 것 뿐이기 때문이다.

여기에 필요한 것이라고는 클라이언트 측에 대한 호스트 라우트와 pppd에 대한 'proxyarp' 선택사항을 쓰는 것이다.

기본적으로 'proxyarp' 선택사항은 'PPP 클라이언트 쪽에 보내는 모든 패킷을 나한테 보내라'라고 하는 PPP 서버의 ARP 테이블에 있는 프락시 ARP 내용을 설정한다(놀랍게도). 이것이 하나의 PPP 클라이언트에 대해 라우트를 설정하는 가장 쉬운 방법이다 - 하지만 두개의 랜을 라우트하는 중이라면 쓸 수 없다. - 프락시 ARP를 쓸 수 없는 적당한 네트워크 라우트를 추가해야만 한다.

아마 당신은 전화 거는 사용자들한테 동적 IP 주소 할당을 제공하기 원하는게 거의 확실할 것이다. 이것은 각각의 전화받기 포트에다 IP 번호를 할당하면 할 수 있다. 이제 각각의 전화받기 포트에다 /etc/ppp/options.ttyXX를 만든다.

여기에다, 간단히 로컬(서버)IP 주소를 넣어주고, 각가의 포트에서 쓸 IP 주소를 넣어주면 된다. 예를 들어


kepler:slip01

특별히, 이 파일에다 유효한 호스트 이름을 쓸 수 있다는 것에 주의한다(나는 내가 내 네트워크에 있는 기계와 장치의 IP 주소를 기억하는데 한계가 있음을 알고 있다 - 이름이 훨씬 더 의미있다)!

26.6 사용자들이 (잘) 실행할 수 있도록 pppd를 설정하기

ppp연결 시작이 커널 장치(네트워크 인터페이스)을 설정하고 커널 라우팅 테이블을 잘 조작할 것을 요구하기 때문에 특별한 특권이 요구된다 - 사실 완전한 루트 권한.

다행히도, pppd는 일반사용자가 루트 특권으로 쓸 수 있도록 설정해도 '안전'하도록 설계되었다. 그러므로 이렇게 하면 된다.


chmod u+s /usr/sbin/pppd

파일을 열거해보면, 이런 식으로 보인다.


-rwsr-xr-x   1 root     root        74224 Apr 28 07:17 /usr/sbin/pppd

이렇게 하지 않으면, 사용자는 ppp 연결을 설정할 수 없다.

26.7 pppd 용의 별명 설정

전화거는 PPP 사용자들이 하는 일을 간편하게 해주기 위해서, 우리는 사용자들이 로긴했을 때 간단한 명령으로 서버 쪽에서 간단히 ppp를 시작하도록 범용 별명(/etc/bashrc안에다)을 만들었다.

다음과 같다.


alias ppp="exec /usr/sbin/pppd -detach"

이것이 하는 일은

사용자가 이렇게 로긴했을 때 'w'의 출력으로 아래와 같이 보인다.


  6:24pm  up 3 days,  7:00,  4 users,  load average: 0.05, 0.03, 0.00
User     tty       login@  idle   JCPU   PCPU  what
hartr    ttyC0     3:05am  9:14                -

그리고 이게 다다... 이게 간단하고도, 기본적인 PPP 서버 시스템이라고 말할 수 있다!


다음 이전 차례