|
News,
Internal,
Projects,
Home Software, Support, Documentation |
> > FreeBSD의 코드는 ipfw를 참조하도록 하드코딩되어 있습니다. kernel 설정시 > "option PFIL_HOOKS"를 추가하면 ip_input()/ip_output()에서 hook된 function > 이 있는지 검사하도록 되어 있습니다. > hook의 사용법은 제가 포팅한 pf의 > 소스(http://pf4freebsd.love2party.net/index.html) 나 ipfilter를 > 보시기 바랍니다. man page에 가장 자세하게 설명되어 있습니다. > > >> 또 하나 pfsync 가 무슨 역할을 하는 모듈인지 이해가 되질 > 않습니다. 간단히 뭐하는 >> >> 놈이라는 설명만 있어도 될 것 같습니다. > > OpenBSD를 사용하시면 pfsync(4)를 참조하세요. tcpdump를 이용해서 > state 변화를 monitor할 수 있습니다. > > >> > >> 또한 , pf 관련 코드를 수정해서 이런 저런 테스트를 해 보고 싶은데, > 그럴려면 >> >> module 형식으로 짜서 테스트를 하는게 여러모로 편리할 > 거라고 생각합니다. 현재 >> >> 활발히 개발되고 있는 pf4freebsd 용 > 말고, 실제 openbsd 에서 pf 를 모듈로 만든다고 >> >> 하면, 이게 쉽게 > 가능할지 경험 많은 여러분들의 조언이 듣고 싶습니다. >> > > 제 생각으로는 큰 어려움은 없으리라 생각합니다. 이미 동작하는 pf가 > 있고 이를 module로만 변경하면 되니까요. module은 lkm(4)을 > 참조하세요. 현재 openbsd 에서 pf 를 module 로 떼어 내 볼려고 합니다만 막히는 부분이 있습니다. pf2freebsd 모듈 부분을 먼저 얘기 하겠습니다. FreeBSD의 RELENG_5_0 tag 의 kernel source중 ip_input.c 파일을 보면, PFIL_HOOKS 가 커널 설정 파일에 등록이 되어 있으면, pfil_hook_get 함수를 이용하여 등록된 리스트를 얻어와 해당 함수가 , 실행하도록 되어 있어서, pfil_add_hook 함수를 이용하여 등록하면, 실행 되는 것으로 판단이 됩니다. 그런데 RELENG_4 tag 의 ip_input.c 부분을 보면, PFIL_HOOKS 부분이 없습니다. 그렇다면, 어떻게 ipfilter 가 모듈로 등록이 되어서 패킷 필터링을 수행하는지에 대한 의문이 생깁니다. 일단 ip_input.c 파일(releng_4) 을 보면, ipfw 를 테스트 하기 전에 "fr_check" 함수를 호출하여 ipfilter 의 상태 태이블을 검사하는 것으로 판단이 되는 부분이 있습니다. 하지만, 이 부분이 패킷이 들어 왔을 때 꼭 ipfilter를 거치게 하는 부분은 아니라고 판단이 됩니다. 그래서 ipfilter 의 소스를 보니, ip_fil.c 라는 파일에 pfil_add_hook 함수가 있어 이를 등록 하여 패킷이 ipfilter를 거치도록 하는 것으로 판단이 됩니다. 위의 생각이 맞다면, 패킷이 ipfilter 를 거치는게 이해가 됩니다. 그런데 여기서 한가지 의문점은 pfil_add_hook 함수를 이용하여, 함수를 등록할 때 이 등록된 함수가 해당 구조체의 리스트들 중 가장 앞에 등록이 되는지 가장 뒤에 등록이 되는지가 의아합니다. 또 다른 한가지 중요한 의문점은 이들 함수가 openbsd 에서는 보이질 않습니다. man page 에도 없고, 커널 소스에서 아무리 찾아도 보이질 않는군요. 그렇다면, 현재로선 PFIL_HOOKS 같은 기능이 openbsd 커널에 들어 가기 전에는 pf 를 모듈로 떼어 내는 그런 일은 수행할 수 없다는 얘기인가요? 아니면, hooking 과 같은 방법 말고 또 다른 방법이 있는건가요? 많은 조언 부탁드립니다. 그럼, 좋은 하루 되세요. ps)커널 소스를 분석한다는건 정말 많은 지식을 필요로 하는 군요. >> 끝으로 pf2freebsd 관련 파일을 다운 받아서 README.ko > 파일을 보면 pfil(9) 인터페이스 >> >> 에 대한 언급이 있는데, 이게 > 무슨 역활을 하는 건지 간단한 답변이 듣고 싶습니다. >> >> > > ip_input()/ip_output에서 패킷 처리시 등록된 hook가 있다면 이를 > 호출하기 위한 겁니다. 가장 큰 장점은 커널소스를 변경하지 않고도 > 패킷을 처리할 수 있는 새로운 모듈을 삽입/삭제 할 수 있다는 점입니다. > 물론 TAILQ reference를 사용하기 때문에 직접 호출하는 방법을 사용하는 > ipfw같은 것보다는 overhead가 있습니다. > > >> 쓰다 보니 freebsd메일링 리스트에 openbsd 용 질문이 되어 버린 것 > 같습니다만, >> >> BSD에 관심 있는 분들이라면 두루두루 알고 계실 것 > 같아 이곳에 질문하는점 양해 >> >> 바랍니다. 개발에 있어서는 아직 > 초보라 어색한 질문이 있지는 않았나 싶습니다. >> >> 너그러운 마음으로 > 이해해 주시고, 많은 분들의 답변 부탁 드립니다. >> >> 그럼 좋은 > 하루들 되십시오. >> >> -- >> Please look and take part in KFUG FAQ: > <http://www.kr.freebsd.org/FAQ-kr/> >> To Unsubscribe: send mail to majordomo@xxxxxxxxxxxxxx > >> with "unsubscribe questions" in the BODY of the message > > -- > ============================================================ > // Korea Telecom Internet Solutions, Inc. > // FreeBSD/Linux Professional Consulting/Tech. Support > // > // Pyun YongHyeon > // > // WWW: http://www.kt-is.co.kr/ > // > // TEL: +82-2-597-0600 > // FAX: +82-2-581-2983 > ============================================================ > -- > Please look and take part in KFUG FAQ: > <http://www.kr.freebsd.org/FAQ-kr/> To Unsubscribe: send mail to majordomo@xxxxxxxxxxxxxx > with "unsubscribe questions" in the BODY of the message -- Please look and take part in KFUG FAQ: <http://www.kr.freebsd.org/FAQ-kr/> To Unsubscribe: send mail to majordomo@xxxxxxxxxxxxxx with "unsubscribe questions" in the BODY of the message
|
Copyright © 1998-2005 Korea FreeBSD Users Group. All rights reserved. webmaster at kr.FreeBSD.org $Date: 2003/04/30 23:01:23 $ |
|