1. IPFW 활성화
FreeBSD 커널 설정 파일에 ipfw 를 사용하기 위한 옵션들을 추가 해줍니다.
[root@yongbok ~]# cd /usr/src/sys/i386/conf/
[root@yongbok ~]# cp GENERIC Yongbok
[root@yongbok ~]# ee Yongbok
options IPFIREWALL # IPFW 활성화 필수 옵션
options IPFIREWALL_VERBOSE # IPFW 의 syslogd(8)을 통해 로그를 출력하도록 해줍니다.
options IPFIREWALL_VERBOSE_LIMIT=100 # IPFW 의 패킷 메시지의 한도를 정해줍니다.
options IPFIREWALL_FORWARD # IPFW 의 패킷 전송 기능을 사용할 수 있도록 합니다.
options IPFIREWALL_DEFAULT_TO_ACCEPT # IPFW 모든 패킷 전송을 허용합니다.
options IPDIVERT # NAT 을 사용하게 해줍니다.
커널 컴파일을 합니다.
[root@yongbok ~]# cd /usr/src
[root@yongbok ~]# make buildkernel KERNCONF=Yongbok
[root@yongbok ~]# make installkernel KERNCONF=Yongbok
2. 설정 파일 수정
NAT(Network Address Translation) 을 위하여 /etc/rc.conf 파일을 수정 해줍니다.
[root@yongbok ~]# ee /etc/rc.conf
hostname=”yongbok.net”
ifconfig_fxp0=”dhcp”
ifconfig_rl0=”inet 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255″
gateway_enable=”YES”
firewall_enable=”YES”
firewall_type=”/etc/firewall.conf”
natd_enable=”YES”
natd_interface=”fxp0″
natd_flags=”-f /etc/natd.conf”
NAT을 위한 ipfw 규칙을 설정 해주기 위해 firewall.conf 를 만들어 줍니다.
[root@yongbok ~]# ee /etc/firewall.conf
# 공인 fxp0 , 내부 rl0
add divert 8668 ip from any to any via fxp0
add allow ip from any to any via rl0
포트포워딩 같은 규칙을 설정 하기위한 nat.conf 파일을 만들어 줍니다.
[root@yongbok ~]# ee /etc/natd.conf
redirect_port tcp 192.168.0.2:21 21
redirect_port tcp 192.168.0.2:80 80
use_sockets yes
same_ports yes
커널 컴파일과 위 내용을 적용하기 위해 시스템을 재시작 합니다.
[root@yongbok ~]# reboot
3. DHCP 설치
dhcpd 를 Ports 에서 설치 합니다.
[root@yongbok ~]# cd /usr/ports/net/isc-dhcp31-server && make install clean
[root@yongbok ~]# ee /etc/rc.conf
dhcpd_enable=”YES”
dhcpd_flags=”-q”
dhcpd_conf=”/usr/local/etc/dhcpd.conf”
dhcpd_ifaces=”rl0″
dhcpd_withumask=”022″
dhcpd.conf 설정 파일 추가/수정
[root@yongbok ~]# ee /usr/local/etc/dhcpd.conf
# DHCP 설정
authoritative;
Allow bootp;
# ddns-update-style 지정은 필수입니다.
ddns-update-style none;
ping-check true;
option subnet-mask 255.255.255.0;
option domain-name “kns.kornet.net”;
# IP 할당 받을시 자동으로 아래의 DNS 서버를 받아와 사용합니다.
option domain-name-servers 168.126.63.1,168.126.63.2;
# lease-time 은 할당받은 IP 임대 시간이며 초단위로 구분합니다.
# 기본값은 43200초(12시간), 최대값 129600초(36시간)
# 유동 IP에서 자주 IP가 바뀌는 것은 대게 임대시간이 초과되서 그런듯!
default-lease-time 86400;
max-lease-time 129600;
log-facility local7;
# 서브넷을 나눠서 사용 합니다.
# 아래는 기본 게이트웨이가 192.168.0.1, 192.168.0.2 ~ 192.168.0.254 C-Class 대역으로 나눠 봤습니다.
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.254;
option routers 192.168.0.1;
ddns-updates off;
}
# ip 주소 예약 부분입니다.
# 랜카드의 MAC 주소를 이용하여 할당 해주며 고정 아이피를 쓸때 사용합니다.
host admin {
hardware ethernet 00:15:f2:2c:e6:ae;
fixed-address 192.168.0.2;
}
DHCPD 실행
내부 기본 게이트웨이로 설정된 rl0 로 dhcpd 를 실행 해줍니다.
[root@ruo91 /var/db/mysql]# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.
이후 FreeBSD 서버의 두번째 랜카드(rl0)에 꼽힌 케이블을 스위칭 허브의 첫번째 포트로 링크 하고 하위 호스트들은 스위칭 허브 2번 부터 링크 하도록 해주면 됩니다.
– FreeBSD 를 사용하기 전과 사용후 네트워크 구성도
Internet
│
Router
┌———┼———┐
Lan1 Lan2 Lan3
Internet
│
FreeBSD
│
Hub
┌———┼———┐
Lan1 Lan2 Lan3