아래에 기재된 방법은 FreeBSD 5.3이상에서 가능한 방법이며.
4.X과 5.2이하의 방법은 또 다릅니다..
4.X버젼과 5.2 이하의 FreeBSD에서 안된다고 돌 던지지 마시옵소서.... :)
앞에 #이 붙은건 명령어 입니다.. terminal이나 console에서 바로 입력하시면 됩니다.
chapter 1. pf지원을 위한 커널 컴파일
1. 커널 소스 받기
1.1 CD-ROM에서 소스 설치 하기
# mount /cdrom
# mkdir -p /usr/src/sys
# ln -s /usr/src/sys /sys
# cat /cdrom/src/ssys.[a-d]* | tar -xzvf -
1.2 sysinstall을 이용한 ftp에서 받기
# /stans/sysinstall
Configure -> Distrubution -> src -> sys 선택후 다운경로를 ftp로 선택.
2. 커널 컴파일 준비 하기
커널 소스 디렉토리로 이동후 커널 config파일을 /root/kernels로 링크를 건후 작업
직접 GERNERIC파일을 사용하거나 /src/src/sys에서 작업하는건 비추천
# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL
# ln -s /root/kernels/MYKERNE
커널 config에 pf지원 추가
# vi /usr/src/sys/i386/conf/MYKERNEL
아래의 구문을 추가(위치는 상관없음)
#FireWall support
device pf
device pflog
device pfsync
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
3. 커널 컴파일
# /usr/sbin/config MYKERNEL
# cd ../compile/MYKERNEL
# make depend
# make# make install
# reboot
Chapter 2. NAT 설정
1. ip forwarding enable
# sysctl net.inet.ip.forwarding=1
재부팅 후에도 계속 적용되도록 /etc/sysctl.conf에 아래의 구문을 추가
net.inet.ip.forwarding=1
2. /etc/pf.conf의 수정
ext_if="rl0" <- ifconfig에서 출력되는 interface이름(인터넷에 연결된 인터페이스)
int_if="vr0" <- 내부 인터페이스
block all <- 외부에서 들어오는 패킷은 모두 block(나가는건 상과없음)
nat on $ext_if from $int_if:network to any -> ($ext_if) <- nat 지원
저장후
# pfctl -f /etc/pf.conf
위의 설정은 기본 NAT 설정이며 외부에서 요청하는 패킷은 모두 block되어 있는 설정이다.
모두 block되어 있으나 내부에서 요청에 의한 패킷은 block되지 않는다.
적절한 보안이나 ip, port forwarding은 다음에 다루도록 하겠다.
잘 안되거나 문의사항은 저의 메일이나 댓글로 주시면 감사하겠습니다.
----------------------------------------------------------------
이글은 FreeBSDCity.org의 '처용'님께서 올려주신 글을 불펌 하였음을
미리 말씀 드리며 -_;
유용한 팁인것 같아 불펌하게 되었습니다;
처용님께는 대단히 죄송합니다a
그리고 좋은 문서 작성하여 주셔서 감사합니다.
마지막으로 원본은
http://www.freebsdcity.org/?doc=bbs/gnuboard.php&bo_table=Tips&wr_id=82
이곳에 있으니 참고하시기 바랍니다.