FreeBSD從零開始---安裝後配置(三)

IPFW和IPFlinux

 
1、IPFW
IPFW意思能夠理解爲ip防火牆,主要做用是攔截設定規則外的ip包。你能夠把這個理解爲linux下的iptables,可是,ipfw要比iptables簡單易用。
 
freebsd系統默認是不安裝ipfw或者ipf的,你須要在內核配置文件中啓用並從新編譯內核。因此,你須要先運行sysinstall-->Distribution->src->選擇base,sys,而後安裝系統內核源碼。
 
而後進行下列步驟
 
#cd /usr/src/sys/amd64/conf #cp GENERIC IPFW #vi IPFW
在最下面加入如下內容
options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=10 options IPFIREWALL_DEFAULT_TO_ACCEPT
粗體字十分重要,若是你不加上的話,IPFW將默認關閉全部連結,至關於物理隔離了,你將沒法遠程登陸維護。
 
而後編譯內核。注,你必須安裝源碼中的base,不然你將沒法編譯任何東西
 
#cd /usr/src #make buildkernel KERNCONF=IPFW #make installkernel KERNCONF=IPFW
而後進入/etc
 
#vi rc.conf 加入如下內容
firewall_enable="YES" firewall_type="open" #open或規則文件絕對路徑
 
以後等待編譯並安裝完成。IPFW就啓用了,而後重啓就能夠開始配置IPFW的規則了。你過去的kernel將放在/boot/kernel.old,若是你編譯後有任何啓動方面的問題,能夠在剛開始啓動的選擇菜單選擇Load Prompt選項,而後打boot kernel.old啓動你原來沒有問題的內核。
 
相比於iptables那種-m -d的選項方式的命令行,IPFW的配置更接近於人類的語言。其實目前有不少防火牆或者流控系統都是是基於FreeBSD的IPFW或IPF的,只是作了一個網頁的界面,便於不太熟悉命令行操做的人使用,好比panabit或者m0n0wall。不過我以爲,其實命令行更靈活和方便簡單。
 
ipfw份內規則和外規則兩種,設定規則時,你須要給定規則編號,10000之內爲內規則,以上是外規則。固然你也能夠給10000之內的,只要你本身看得懂就行,一條規則ID能夠分配多個規則使用。關於規則ID,若是你學習過路由交換和cisco的acl,應該是比較容易理解的。實際上Cisco的IOS就是基於BSD系統作嵌入式開發的。若是實在沒有概念,你能夠把規則ID理解爲key,規則內容就是key對應的value。
 
ipfw基本語法以下
 
ipfw 操做(添加|刪除) 規則編號 動做(容許|拒絕) 地址(All) from 地址(IP|ANY) to 地址(IP|ANY) 端口號
 
示例以下
 
#ipfw add 10001 deny all from any to 192.168.1.10 22
注意,請不要將這行代碼放入你的服務器裏,不然你將沒法訪問。
 
按照人類語言的描述就是, ipfw 添加 10001 拒絕 全部 從 任意地址 到 192.168.1.10的22端口。若是你須要去掉這條規則,就把add換成delete,ipfw的使用方法寫出來有好幾頁,能夠去查看FreeBSD的中文手冊,BSD這點很是好,手冊很是詳細。
 
你也能夠用ipfw作nat轉發,示例以下
 
#ipfw nat 1 config redirect_addr 10.0.0.1 10.0.0.66 #ipfw nat 2 config redirect_port tcp 192.168.0.1:80 500 #ipfw nat 3 config redirect_proto udp 192.168.1.43 192.168.1.1
這樣來講,ipfw能夠完成的事情很是多,並不比iptables差,而且因爲tcp/ip協議是在bsd上先實現的,因此,效率更高。並且語法更簡單明瞭。也一樣能夠對二層地址(MAC)進行訪問控制。
 
使用ipfw list查看當前規則
 
2、IPF
 
IPFW和IPF是兩個徹底不一樣的東西,可是功能和性能很接近,沒有誰好誰壞,看使用習慣了,可是一樣都須要從新編譯內核才能夠生效。前面幾步跟IPFW同樣。
 
#cp GENERIC IPF #vi IPF
插入如下內容
options                                 IPFILTER options                                 IPFILTER_LOG
編輯/etc/rc.conf
 
#vi /etc/rc.conf
加入
ipfilter_enable="YES" #打開ipfilter ipfilter_rules="/etc/ipf.rules" #ipfilter規則文件絕對路徑 gateway_enable="YES" #做爲網關使用 ipnat_enable="YES" #nat轉發打開 ipnat_rules="/etc/ipnat.rules" #nat 規則文件絕對路徑
而後從新編譯,安裝內核,重啓。
 
典型命令以下
 
#ipf -l pass in quick on lo0 all #ipf -l block in quick on em0 from any to 192.168.0.0/16
解釋一下:
ipf 容許 進入 在 lo0(環回地址) 所有
ipf 鎖定 進入 在em0 從 任意 到 192.168.0.0/16(B類)
 
很是簡單
 
ipnat是ipf下能夠作nat轉發的工具,我通常會把nat規則寫入到一個文件裏,這樣啓動的時候會自動加載不少規則,不用一個一個去執行。
 
典型文件內容以下
 
map bce1 192.168.10.0/25 -> 211.103.xxx.xx1/32
#將bce1地址192.168.10.0/25(VLSM)轉發到211.103.xxx.xx1/32(固定地址)
map bce1 192.168.20.111/32 -> 211.103.xxx.xx2/32
#將bce1地址192.168.20.111/32(固定地址)轉發到211.103.xxx.xx2/32(固定地址)
rdr bce1 192.168.10.2/32 port 80 ->    211.103.xxx.xx2/32 port 8100 tcp
#端口轉發(rdr) bce1 地址192.168.10.2/32(固定地址)的80端口 轉發到 211.103.xxx.xx2/32的8100端口。
 
 
ipfw和ipf大體就是這樣,還有一個過濾工具叫pf,全稱爲packet filter,那個不是很熟,就不寫了。有任何疑問能夠參看BSD的手冊,解說很是詳細。
 
增長 fsck_y提供的內核選項
 
options             ACCEPT_FILTER_DATA options             ACCEPT_FILTER_HTTP options             ACCEPT_FILTER_DNS
相關文章
相關標籤/搜索