注:
本人使用FreeBSD多年了,感覺FreeBSD比較穩定,也很好(具體好在哪,我也說不出來),但我們公司大部分服務器使用的是Linux(當然也有solaris及aix)。根據我接觸的其它一些大的公司(如電力、證券等),以前使用FreeBSD的多,現在越來越少了,Linux越來越多。本來想把工作中的經驗與技術編寫成文檔,限於時間,我在網上收集並稍稍加工整理了下,形成了此文檔。其實,對於FB系統,部分用於網關或路由(確實穩定),部分用於web服務器,其它服務器占一部分。如果把本文檔中的技術都熟悉一下,定可擔當FreeBSD系統管理員(前提是你對linux有一定的熟悉度^-^)。
(一) 安裝配置........................................................................................................ 1
(二) 設定PPPoE撥號............................................................................................. 2
(三) 增加靜態路由表.............................................................................................. 3
(四) 設定IPFW防火牆........................................................................................... 3
(五) FB5.4做ADSL網關實例................................................................................. 7
(六) FB+ipfilter實現整網透明代理上網................................................................... 9
(七) 郵件服務器安裝與設置................................................................................. 20
(八) etc下文件說明:.......................................................................................... 28
(九) web服務器配置............................................................................................ 40
(一) 安裝配置
1、安裝
可通過sysinstall安裝與配置系統
安裝軟件:/usr/ports/下進行安裝 make、 make install、make clean等
注:更新ports命令如下:
2、網絡與服務
/etc/rc.d/下為各種服務程序 /etc/rc.d/xxx restart等
啟動網絡為:/etc/netstart
(二) 設定PPPoE撥號
default:
set log Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSION (built COMPILATIONDATE)
set device PPPoE:rl1
set mru 1492
set mtu 1492
#set ctsrts off
set speed sync
set timeout 30 # 3 minute idle timer (the default)
#disable lqr
#deny lqr
add default HISADDR # Add a (sticky) default route
pppoe:
set authname
[email protected]
set authkey dg1234
set dial
set login
#set ifaddr 10.0.0.1/0 10.0.0.2/0
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
nat enable yes
ppp -ddial pppoe
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="pppoe"
ppp_nat="YES"
named_enable="yes"
gateway_enable=”YES”
natd_interface="tun0" #連接ADSL的接口
natd_enable="YES" #啟用nat
sysctl –w net.inet.ip.forwarding=1
(三) 增加靜態路由表
static_routes="net1 net2"
route_net1="-net 192.168.0.0/24 192.168.2.254"
route_net2="-net 192.168.1.0/24 192.168.2.253"
(四) 設定IPFW防火牆
加入如下參數:
firewall_enable="YES" 激活Firewall防火牆
firewall_script="/etc/rc.firewall" Firewall防火牆的默認腳本
firewall_quiet="NO" 啟用腳本時,是否顯示規則信息;假如你的防火牆腳本已經不會再有修改,那麼就可以把這裡設置成“YES”了。
firewall_logging_enable="YES" 啟用Firewall的Log記錄
在文件最後加入如下內容:
!ipfw
*.* /var/log/ipfw.log
這行的作用是將IPFW的日志寫到/var/log/ipfw.log文件裡,當然,你也可以為日志文件指定其他目錄。
3、ipfw常用命令
ipfw show顯示當前規則情況
ifw list顯示規則
ipfw flush刷新規則
ipfw的規則號小的優生執行,最後是65535(默認所有都拒絕)
ipfw add [rule] 新增一條規則。規則 (rule) 的語法請參考下一節的說明。
ipfw delete [number] 刪除一條編號為 number 的規則。
ipfw -f flush 清除所有的規則。
ipfw zero 將計數統計歸零。
ipfw list 列出現在所有規則,可以配合下列參數使用。
-a 使用 list 時,可以列出封包統計的數目。
-f 不要提出確認的詢問。
-q 當新增 (add)、歸零(zero)、或清除 (flush) 時,不要列出任何回應。當使用遠程登入,以 script (如 sh /etc/rc.firewall) 來修改防火牆規則時,內定會列出你修改的規則。但是當下了 flush 之後,會立即關掉所有聯機,這時候響應的訊息無法傳達終端機,而規則也將不被繼續執行。此時唯一的方法就是回到該計算機前重新執行了。在修改防火牆規則時,最好在計算機前修改,以免因為一個小錯誤而使網絡聯機中斷。
-t 當使用 list 時,列出最後一個符合的時間。
-N 在輸出時嘗試解析 IP 地址及服務的名稱。
-s [field] 當列出規則時,依哪一個計數器 (封包的數量、位數、記錄的數量及時間) 來排序。
語法示例:
ipfw add 10001 deny all from 218.24.22.22 to any。
拒絕來自218.249.20.135的任何服務
ipfw add 50000 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 一般用於設置透明代理
限制帶寬
ipfw add pipe 1 ip from 192.168.0.1/24 to any in
ipfw pipe 1 config bw 20KBytes/s
4、/etc/rc.firewall樣例:
vi /etc/rc.firewall
# 設定我的 IP
myip="1.2.3.4"
# 設定對外的網絡卡代號
outif="vr0"
# 設定對內的網絡上代號
inif="vr1"
#清除所有的規則
/sbin/ipfw -f flush
# Throw away RFC 1918 networks
${ipfw} add deny ip from 10.0.0.0/8 to any in via ${oif}
${ipfw} add deny ip from 172.16.0.0/12 to any in via ${oif}
${ipfw} add deny ip from 192.168.0.0/16 to any in via ${oif}
# 只允許內部網絡對 192.168.0.1 使用 telnet 服務
/sbin/ipfw add 200 allow tcp from 192.168.0.1/24 to 192.168.0.1 telnet
# 拒絕其它人連到 port 23,並記錄嘗試聯機的機器
/sbin/ipfw add 300 deny log tcp from any to me 23
# 拒絕任何 ICMP 封包
/sbin/ipfw add 400 deny icmp from any to any
# 下面這台機器是壞人,不讓它進來,並記錄下來
/sbin/ipfw add 1100 deny log all from 211.21.104.102 to any
# NAT 的設定
/sbin/ipfw add divert natd all from any to any via vr0
# 限制內部網域對外下載最大頻寬為 20KBytes/s,上傳最大頻寬為 5KBytes/s
ipfw pipe 20 config bw 20KBytes/s
ipfw add pipe 20 ip from any to 192.168.0.1/24 out
ipfw pipe 30 config bw 5KBytes/s
ipfw add pipe 30 ip from 192.168.0.1/24 to any in
# 允許本機對任何地方聯機
/sbin/ipfw add check-state
/sbin/ipfw add 2000 allow udp from ${myip} to any keep-state
/sbin/ipfw add 2100 pass ip from ${myip}