ipfw和ipf
一、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檢視當前規則
二、ipf
ipfw和ipf是兩個完全不同的東西,但是功能和效能很接近,沒有誰好誰壞,看使用習慣了,但是同樣都需要重新編譯核心才可以生效。前面幾步跟ipfw一樣。
#cp generic ipf
#vi ipf
插入以下內容
options ipfilter
options ipfilter_log
#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.***.xx1/32
#將bce1位址192.168.10.0/25(vlsm)**到211.103.***.xx1/32(固定位址)
map bce1 192.168.20.111/32 -> 211.103.***.xx2/32
#將bce1位址192.168.20.111/32(固定位址)**到211.103.***.xx2/32(固定位址)
rdr bce1 192.168.10.2/32 port 80 -> 211.103.***.xx2/32 port 8100 tcp
#埠**(rdr) bce1 位址192.168.10.2/32(固定位址)的80埠 **到 211.103.***.xx2/32的8100埠。
ipfw和ipf大致就是這樣,還有乙個過濾工具叫pf,全稱為packet filter,那個不是很熟,就不寫了。有任何疑問可以參看bsd的手冊,解說非常詳細。
增加fsck_y提供的核心選項
FreeBSD從零開始 安裝後配置(三)
ipfw和ipf 一 ipfw ipfw意思可以理解為ip防火牆,主要作用是攔截設定規則外的ip包。你可以把這個理解為linux下的iptables,但是,ipfw要比iptables簡單易用。freebsd系統預設是不安裝ipfw或者ipf的,你需要在核心配置檔案中啟用並重新編譯核心。所以,你需要...
FreeBSD從零開始 系統安裝(一)
注 本文以freebsd 8.2及7.4為範本編寫。bsd的介紹就不說了,有很多的中文資料。其實bsd系統很早就出現了,應該是比linux還要早,如果不是跟unix版權官司的問題,現在很可能linux是小眾的作業系統。雖然同是類unix作業系統,但差別還是很大的,比如,freebsd是個完整的作業系...
從零開始 GOlang初學習 GOLAND配置
從php入門學習後端,逐漸轉入後端中的新秀,golang,即go語言的學習。要開始學習go語言。學一門語言,最基本的是語言的編輯器。同時,go不同於php,要進行編譯,因此,選擇乙個合適的編譯器,就是很重要的操作。最終,我們選擇了goland作為我們go的編譯器。goland goland有成噸的有...