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

2021-09-04 22:54:23 字數 3659 閱讀 9867

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有成噸的有...