- 論壇徽章:
- 0
|
初期目的:以UNIX里的FREEBSD系統(tǒng)做主機(jī),實現(xiàn)網(wǎng)關(guān)功能,提供內(nèi)網(wǎng)機(jī)器上網(wǎng).
預(yù)期目的:同時實現(xiàn)防火墻FIREWALL的作用.
前序:我所知的也是目前用的UNIX下實現(xiàn)這個功能的有三種,1,IPFW,2,IPFILTER,3,安裝squid等第三方軟件.我選擇了IPFILTER,簡稱IPF方法.
注意:本問是對靜態(tài)IP的配置,對于PPP/ADSL撥號不適用.但差不多,撥號需要額外設(shè)置PPP
說明:本文中#代表系統(tǒng)提示符,## 解釋說明 ###解釋說明轉(zhuǎn)行。
初期目的:以UNIX里的FREEBSD系統(tǒng)做主機(jī),實現(xiàn)網(wǎng)關(guān)功能,提供內(nèi)網(wǎng)機(jī)器上網(wǎng).
預(yù)期目的:同時實現(xiàn)防火墻FIREWALL的作用.
前序:我所知的也是目前用的UNIX下實現(xiàn)這個功能的有三種,1,IPFW,2,IPFILTER,3,安裝squid等第三方軟件.我選擇了IPFILTER,簡稱IPF方法.
注意:本問是對靜態(tài)IP的配置,對于PPP/ADSL撥號不適用.但差不多,撥號需要額外設(shè)置PPP
說明:本文中#代表系統(tǒng)提示符,## 解釋說明 ###解釋說明轉(zhuǎn)行。
開始:
1、使用雙網(wǎng)卡。一塊連接外,一塊連接內(nèi)網(wǎng).連接外網(wǎng)的網(wǎng)卡標(biāo)識rl1,連接內(nèi)網(wǎng)的為rl0
(因為我2塊網(wǎng)卡都是REALTEK8139的,所以網(wǎng)卡標(biāo)識為rl,1和0是兩塊網(wǎng)卡的區(qū)別號)
2、在/etc/rc.conf中加上:
ifconfig_rl1="inet 218.92.251.108 netmask 255.225.225.0"
##(對外網(wǎng)卡的設(shè)置,很顯然,218.92.251.108為靜態(tài)IP地址。255.255.255.0子網(wǎng)掩碼。不懂?我顛~)
ifconfig_rl0="inet 192.168.0.1 netmask 255.255.255.0"
##(對內(nèi)網(wǎng)卡IP地址以及子網(wǎng)掩碼的設(shè)置)
##以上加進(jìn)rc.conf是為了再每次開機(jī)的時候配置好兩塊網(wǎng)卡的IP地址等。
firewall_enable="NO" #取消防火墻
gateway_enable="YES" ##啟用網(wǎng)關(guān)功能,很顯然,很重要。
named_enable="YES" ##啟用DNS名字服務(wù),這樣可以讓內(nèi)網(wǎng)通過設(shè)置主機(jī)做DNS
natd_enable="YES" ##啟用nat功能,很顯然,特重要
natd_interface="rl1" ##設(shè)置NAT轉(zhuǎn)發(fā)的網(wǎng)卡標(biāo)識號,rl1為對外連接網(wǎng)卡。相當(dāng)于###WIN2000里的連接共享設(shè)置的那塊網(wǎng)卡連接。
3,設(shè)置/etc/ipnat.conf
map rl1 192.168.0.0/24 -> 218.92.251.108/32 portmap tcp/udp 10000:65000
map rl1 192.168.0.0/24 -> 218.92.251.108/32
##以上是設(shè)置允許共享連接的內(nèi)網(wǎng)IP范圍,很顯然,24精確到最后一位!也就是說###192.168.0.*的子機(jī)都可以通過這臺主機(jī)上網(wǎng)。
4,設(shè)定開機(jī)自動執(zhí)行ipnat。
#cd /usr/local/etc/rc.d
#vi runipnat.sh
##加入以下內(nèi)容:
#!/bin/sh
/sbin/ipnat -f /etc/ipnat.conf
#chmod 755 runipnat.sh ##權(quán)限設(shè)為可執(zhí)行。
5、設(shè)置內(nèi)核,至關(guān)重要!
因為ipfw和ipfilter不能共存,所以如果要使用ipfilter,必須將內(nèi)核中有關(guān)ipfw的部份注釋掉
#cd /usr/src/sys/i386/conf ##/usr/src/sys/i386/conf是內(nèi)核文件所在目錄
#cp GENERIC DWOLF ##備份內(nèi)核文件GENERIC
#grep -i IPFIREWALL DWOLF ##查找:IPFIREWALL,如果找到,就加"#"注釋掉:
#vi DWOLF ##vi編輯,也可以用ee編輯器
#options IPFIREWALL
#options IPDIVERT
##再加入:
options IPFILTER
options IPFILTER_LOG
##保存!
#config DWOLF ##檢查有沒有錯誤
#cd /usr/src
#make kernel KERNCONF=DWOLF ##編譯內(nèi)核
#reboot
##重起以后打dmesg查看啟動信息,我看到有一條
IP Filter: v3.4.31 initialized. Default = pass all, Logging = enabled
#ipnat -l ## 顯示ipnat的設(shè)定狀況
map rl1 192.168.0.0/24 -> 218.92.251.108/32 portmap tcp/udp 10000:65000
map rl1 192.168.0.0/24 -> 218.92.251.108/32
呵呵,搞定!
試試內(nèi)網(wǎng)機(jī)器能不能上網(wǎng),(測試,可省略)
PING 192.168.0.1 成功連接主機(jī),OK!
PING mdxy.3322.org 解析到IP地址,DNS OK!
PING 218.92.251.122 PING通外網(wǎng)主機(jī),OK!(注意,因為8月中旬全國ISO升級,禁止ICMP數(shù)據(jù)包,路由器外的IP一般都不給PING,你可以找一個自己可以PING通的外網(wǎng)IP,或者省略這一步,無所謂)
==附錄幾個常用的IPNAT命令
ipnat -l 會列出目前ipnat的設(shè)定及狀況
ipnat -C 清除ipnat的設(shè)定
ipfstat 監(jiān)測數(shù)據(jù)的流量
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/2143/showart_30385.html |
|