EdgeRouter - PPPoE RADIUS 연결해제 데몬 구성하기

download at 2017-02-07T01:02:27Z origin

PPPoE RADIUS 연결해제는 1.4 패키지부터 사용되었으며, 다음 명령어를 통해서 구성할 수 있습니다.

UPDATE: 위자드는 ERL GUI 환경설정에서 "Feature Wizard" 섹션을 통해 생성, 추가할 수 있습니다. .tar 파일을 글 최하단에 첨부하였습니다. 위자드에 추가하기 위해서는 (+) 버튼을 클릭하여 tar 파일을 업로드하고 Wizard 이름을 원하는대로 설정하면 됩니다. (예를 들어, PPPoE RADIUS 연결해제)

데몬은 3779 포트로 RADIUS 연결해제 요청을 수신합니다. IP 주소로 요청이 RADIUS 서버로 요청되었고, 비밀번호가 올바른지 검증합니다. 이후 사용자 이름이 요청에 포함되어 있는지 확인합니다. 기본 요건이 충족되면, "clear pppoe-server user[username]" 명령어를 수행합니다. 이 명령어는 모든 요청한 사용자 이름으로 등록된 pppoe 세션을 연결 해제합니다.

RADIUS MANAGER 4.1을 사용하는 사용자는 NAS를 Chillispot으로 설정하면 연결 해제가 정상 동작합니다.

데몬은 /var/log/pppoe-radius-disconnect.log에 로깅합니다.

Step 1:

host 파일에 올바른 EdgeMAX (NAS) IP 주소를 명시합니다. EdgeMAX를 사용할 때에는 EdgeMAX IP 주소를 RADIUS 서버의 IP 주소로 덮어쓰기를 해야합니다.

네트워크 예제: RADIUS IP 192.168.100.253 EdgeMAX (NAS) 내부 IP 192.168.100.254

다음 명령어를 수행합니다:

configure
set system ip override-hostname-ip 192.168.100.254
commit
save

위의 명령어는 RADIUS 서버가 EdgeMAX (PPPoE 서버 (NAS))에 사용자 세션이 연결되어 있다는 것을 알때 필요합니다.

Step 2:

sudo cp /opt/vyatta/etc/pppoe-server/start-pppoe-radius-disconnect /config/scripts/post-config.d/

Step 3:

reboot

재부팅이 완료되면 데몬이 정상 동작하는지 다음 명령어로 확인 가능합니다:

tail /var/log/pppoe-radius-disconnect.log

RADIUS 연결 해제 데몬 테스트하기

 RADIUS 연결해제 데몬을 SSH로 RADIUS 서버에 접속하여 다음의 명령어를 통해 테스트 해볼 수 있습니다:

echo "User-Name=[username]" | radclient -x XXX.XXX.XXX.XXX:3779 disconnect [yourradiussecret]
EXAMPLE:
echo "User-Name=ajbtv2" | radclient -x 192.168.1.254:3779 disconnect testing123

CLI로 반환 값을 확인해야합니다: 기억하세요: 연결해제 데몬은 받은 요청을 검증하는 역할만 수행합니다. 사용자 탐색이나 성공적인 연결 해제를 보장하지 않습니다.

Sending Disconnect-Request of id XXX to XXX.XXX.XXX.XXX port 3779
 User-Name = "[username]"
rad_recv: Disconnect-ACK packet from host XXX.XXX.XXX.XXX port 3779, id=XXX, length=26
 Acct-Terminate-Cause = Admin-Reset

위의 Disconnect-ACK 메시지를 받지 못했다면, EdgeMax의 /var/log/pppoe-radius-disconnect.log 로그 메시지를 확인해세요.

IP 주소를 살펴보면 PPPoE 서버 구성에 요청받은 IP 주소가 있는지 확인해보거나 비밀 키 값이 잋리하는지 확인해봅니다. 연결 해제 데몬이 최근 재시작 시점부터 로그를 확인해볼 수 있습니다.

연결 해제 데몬 로그를 읽기

아래처럼 연결 해제 데몬의 로그를 확인 할 수 있습니다.:

데몬은 재시작 이후, PPPoE RADIUS 서버 IP 주소와 비밀 키 값을 읽습니다. 이후 로그를 남기고 RADIUS 연결 해제 요청을 검증합니다.

===========USING RADIUS ATTRIBUTES============
Radius Server: 192.168.1.253
Radius Secret: testing123

새로운 요청을 3779 포트를 통해 받았을 때, 연결을 로그를 남기고 RADIUS 패킷을 출력합니다. 요청이 검증을 통과하고 응답이 필요한 요청이라면, 디코딩된 응답 값이 로깅됩니다.

============START NEW REQUEST============
*** DUMP OF RADIUS PACKET (Net::Radius::Packet=HASH(0xb80268))
Code: Disconnect-Request
Identifier: 49
Authentic: \x{ef}\x{a5}\x{fb}USn\x{ac}\x{ed}o@\x{b3}\x{a7}\x{fc}\x{d8}0
Attributes:
 User-Name: [userid]
*** END DUMP
============SENDING RESPONSE============
*** DUMP OF RADIUS PACKET (Net::Radius::Packet=HASH(0xb803c8))
Code: Disconnect-ACK
Identifier: 49
Authentic: \x{ef}\x{a5}\x{fb}USn\x{ac}\x{ed}o@\x{b3}\x{a7}\x{fc}\x{d8}0
Attributes:
 Acct-Terminate-Cause: 6
*** END DUMP

사용자 ID가 RADIUS 속성 값에서 찾을 수 없다면 로그에 *******NO ID FOUND***** 를 요청을 전달 받은 날짜와 시간, 요청자의 IP 주소, 포트 정보와 함께 기록합니다. 마지막으로 요청을 받았음을 로그에 작성합니다.

============RESULTS============
***********NO ID FOUND************
Tue Nov 26 18:17:19 2013 : (192.168.1.253 , 51672) : THIS IS A NONRAD PACKET TEST MESSAGE
============END REQUEST============

RADIUS 요청에서 사용자 ID를 확인했다면 다음 내용이 출력됩니다:

요청한 날짜/시간, 요청자의 IP 주소, 포트 정보, RADIUS 요청 코드, 사용자 id, 결과.

============RESULTS============
Tue Nov 26 18:17:19 2013 : (192.168.1.253 , 51672) Disconnect-Request : [user-id] : COMPLETE
============END REQUEST============

결과는 다음 내용에 따라서 결정됩니다:

시스템이 IP 주소가 RADIUS 서버가 아니며, RADIUS 코드가 "Disconnect-Request"인 경우, 결과를 INCORRECT NAS IP OR NOT DISCONNECT REQUEST로 명시합니다.

시스템이 RADIUS 시크릿 값을 결과 값에서 발견할 수 없다면 "FAILED NAS PASSWORD VERIFICATION"으로 결과를 명시합니다.

Note

RADIUS 비밀번호, IP 주소를 변경하였다면, EdgeMax를 재시작하여 변경 사항이 연결해제 데몬에 적용하도록 합니다. 상급 사용자는 pppoe-radius-disconnect 데몬을 강제 종료하고 재시작합니다.

요청이 성공적으로 검증되면, 결과는 COMPLETE로 표시됩니다. 완료 메시지는 RADIUS 요청이 올바른 비밀번호를 입력받고, 올바른 IP 주소에서 사용자 ID가 요청에 포함되어 전달 받았음을 의미합니다. 그러므로 "clear pppoe-server user [userid]" 명령이 수행됩니다. 이 명령어는 사용자 id가 성공적으로 확인되었고, 연결 해제 되었음을 의미하지는 않습니다. 연결된 사용자의 로그를 확인하고 세션 시간을 확인해야합니다.

Written by ajbtv2