2007年12月13日 星期四

pf on FreeBSD5.3 and NAT

freebsd

FreeBSD5.3 將OpenBSD中超好用,安全性也高的pf 包在kernel中,對我來說,可說是一大好消息,目前用的是FreeBSD4.9 + IPfilter + IPnat 來當NATserver,但是,隨的IP越發越多,要充份控管每一個IP在packet filter的規則書寫上,ipf 真的是麻煩許多.....



再者,老師個人電腦很多都是notebook 都申請無線上網,因為是透過AP的鎖MAC功能來管理IP以及AP的連線,而每台AP頂多能夠所64個MAC Address 眼看即將不夠用了...想到pf 的table 功能(可用一個檔案來管理一堆IP),可以達到我要的效果,所以,...把pf 架起來先....

1.安裝FreeBSD

想辦法找到了一台 PII-600的舊server,沒想到裡面還有個4G的SCSI硬碟在,加上512MB的SD-RAM(其實硬碟不用SCSI,IDE舊的就OK了),再加上兩片intel的網卡(網卡倒是要好一點,比較不會吃主機的資源)

2.修改kernel

#cd /sys/i386/conf/GENERIC

加入

device pf

device pflog

device pfsync

options ALTQ

options ALTQ_CBQ

options ALTQ_RED

options ALTQ_RIO

options ALTQ_HFSC

options ALTQ_CDNR

options ALTQ_PRIQ

options ALTQ_DEBUG

options HZ=1000 然後

#make depend

#cd ../compile/.....

#make

#make install -->重新開機

3.修改 rc.conf

在rc.conf中加入,

inetd_enable="YES"

pf_enable="YES"

pf_rules="/etc/pf.conf"

pf_flags=""

pflog_enable="YES"

pflog_logfile="/var/log/pflog"

pflog_flags=""

gateway_enable="YES" ---- 有用NAT這一條要加上喔

4.修改 sysctl.conf

在sysctl.conf中加入

net.inet.ip.forwarding=1

5.修改inetd.conf

將最後一行的 #(mark)拿掉改成這樣

ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy -n -m 55000 -M 57000 -u nobody

6.編寫pf.conf 規則

pf規則的編寫,要注意順序,因pf是last match,..所以順序錯了,就連不上網了...

pf.conf順序

Macro

Tables

Options

Traffic Normalization

Queueing

Translation

Packet Filtering

pf.conf的大致內容

#macro
ext_if="fxp0"
int_if="xl0"
jam2 = "192.168.2.0/24"
ext_ip = "163.20.39.57"

#options
..........
#Translation
nat on $ext_if from $jam2 to any -> $ext_ip
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021

#packet filtering

要讓client 的ftp可以正常使用,..要加入一條

pass in on $ext_if inet proto tcp from any to $ext_if port > 55000 keep state

pass in on $ext_if inet proto tcp from any to $ext_if port 20 flags S/SA modulate state

................

#7.安裝DHCP

下載dhcpd-3.0lp2.tar.gz...

# tar zxvf dhcpd-3.0lp2.tar.gz

# cd dhcpd-3.0lp2

# configure

# make

# make install

# cd /var/db/

# touch dhcpd.leases

# cd /etc

編輯 dhcpd.conf

# cd /usr/local/etc/rc.d

# 新增 dhcpd.sh 開機啟動


沒有留言:

張貼留言