日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

FreeBSD 5.0 網(wǎng)關(guān)指南2.0. rc1

本文基本上是最后的版本了,過些日子我會(huì)把所有的配置文件理出來,不過哪會(huì)是單獨(dú)發(fā)布或是比較晚的事了 。因?yàn)楝F(xiàn)在我的機(jī)器上的配置文件太多了 。主要是當(dāng)初想寫一個(gè)太大的文章了 。版主可以將本文放入精華,上次的跟貼太多,以后的更新我基本上會(huì)回本貼了 。1. 前言 2 2. 安裝mpd 2 3. PPPoE 3 3.1. 使用ppp 3 3.1.1. 設(shè)置一個(gè)使用PPPOE的PPP呼出 3 3.1.2. 設(shè)置啟動(dòng)時(shí)自動(dòng)進(jìn)行連接 4 3.1.3. 手動(dòng)連接 4 3.2. 使用mpd 4 3.2.1. 配置你的新kernel 4 3.2.2. 配置mpd配置文件 4 3.2.3. 設(shè)置啟動(dòng)時(shí)自動(dòng)進(jìn)行連接 5 3.2.4. 手動(dòng)連接 5 4. 設(shè)置NAT服務(wù) 6 4.1. 啟動(dòng)PPP的NAT支持 6 4.1.1. 系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng) 6 4.1.2. 手動(dòng)啟動(dòng) 6 4.2. 使用IPFW的NATD 6 4.2.1. 系統(tǒng)配置 6 4.2.2. 為ppp設(shè)置natd 7 4.2.3. 為mpd設(shè)置natd 7 4.3. 使用ipfilter的ipnat 8 4.3.1. 系統(tǒng)配置 8 4.3.2. 為ppp設(shè)置ipnat 9 4.3.3. 為mpd設(shè)置ipnat 9 5. 配置文件總結(jié) 9 5.1. ppp手工撥出 9 5.1.1. /etc/rc.conf 9 5.1.2. /etc/ppp/ppp.conf 10 5.2. ppp自動(dòng)撥出 10 5.3. mpd手工撥出 11 5.3.1. kernel配置文件 11 5.4. mpd自動(dòng)撥出 11 5.5. ppp的nat手工撥出 11 5.6. ppp的nat自動(dòng)撥出 11 5.7. 使用natd的ppp手工撥出 11 5.8. 使用natd的ppp自動(dòng)撥出 11 5.9. 使用natd的mpd手工撥出 11 5.10. 使用natd的mpd自動(dòng)撥出 12 5.11. 使用ipnat的ppp手工撥出 12 5.12. 使用ipnat的ppp自動(dòng)撥出 12 5.13. 使用ipnat的mpd手工撥出 12 5.14. 使用ipnat的mpd自動(dòng)撥出 12 1. 前言 本文原名叫做FreeBSD 5.0 ADSL安裝指南,由于越做越大所以改名叫做網(wǎng)關(guān)安裝指南 。泛指有關(guān)網(wǎng)關(guān)的一系列應(yīng)用的安裝 。這個(gè)名字還希望大家能出出主意 。希望大家能把自己的一些意見和建議告訴我,我的聯(lián)系方法是:hdcola@bj1860.net 。同時(shí)也可以去http://www.huangdong.com/bbs/中的BSD版與大家一起討論 。本文主要的目的是說明如何使用FreeBSD來建立一個(gè)網(wǎng)關(guān),它涉及的有ADSL(PPPoE)、VPN(PPTP)、NAT、Firewall 。我不想寫成一個(gè)大全樣的文章,主要針對(duì)的目標(biāo)是現(xiàn)在寬帶中大家會(huì)慢慢多用起來的PPPoE和VPN 。本文不會(huì)涉及到傳統(tǒng)的電話撥號(hào)的部分,主要的原因一是有太多的文章講它了 。而Firewall的深入的討論本文也不會(huì)提及,因?yàn)橹v它本身就會(huì)是一個(gè)與本文一樣的篇幅了,相信對(duì)于IPFW、IPFilter會(huì)有人寫一個(gè)更為專業(yè)的文章的 。為了讓大家明白PPPoE與PPTP的不同,以免產(chǎn)生我之前的混淆,先告訴大家它們的用處 。現(xiàn)在我們使用PPPoE主要是ADSL,我們可以視ADSL Modem只是一個(gè)撥號(hào)器,它不帶網(wǎng)絡(luò)功能,就像使用本機(jī)設(shè)備一樣的去使用它 。而PPTP則是在網(wǎng)絡(luò)上具有一個(gè)IP地址的服務(wù)器,我所知通常在校園網(wǎng)、公司網(wǎng)中會(huì)大量使用這樣的撥號(hào)服務(wù)器以進(jìn)行記費(fèi)或是安全保障 。本文使用的PPPoE和PPTP的工具主要是FreeBSD自帶的ppp和使用Netgraph的mpd ??梢允褂胮pp來達(dá)到PPPoE撥號(hào)的功能,使用mpd則可實(shí)現(xiàn)PPPoE和PPTP的功能 。由于mpd的強(qiáng)大,在使用PPTP時(shí)我更推薦大家使用mpd 。感覺quakelee在推薦給了我mpd這樣一個(gè)好的工具,同時(shí)對(duì)mpd的所做的普及化的工作 。以及oneflower及時(shí)的指出了巧妙的使用ipfw配置文件的方法 。同時(shí)還要感謝絕對(duì)灌水不斷的催促才使這個(gè)文章能這么快的再出一個(gè)新的版本 。更要感覺我家的大寶寶和小寶寶,他們?cè)试S我使用家中的ADSL設(shè)備來測(cè)試本文中的所有設(shè)置 。? 2. 安裝mpd 由于ppp是FreeBSD自帶的一個(gè)功能,mpd則是一個(gè)FreeBSD的附加軟件 。你可以使用FreeBSD的Ports Collection來編譯它 。mpd最新的版本為3.13,使用ports的編譯方法為: cd /usr/ports/net/mpd make install make clean 如果你沒有安裝Ports Collection,哪么也可以到http://www.huangdong.com/bbs/中的BSD版的精華區(qū)中找到mpd3.13的package安裝包 。使用package安裝包的安裝方法為: pkg_add mpd-3.13.tbz 你還可以到http://www.dellroad.org/mpd/來下載mpd的源代碼包自己手工編譯,具體方法閱讀源代碼包中的README文件 。3. PPPoE 3.1. 使用ppp 3.1.1. 設(shè)置一個(gè)使用PPPOE的PPP呼出 將/etc/ppp中的ppp.conf進(jìn)行備份,以下是新的ppp.conf中的內(nèi)容: default: set log Phase Chat LCP IPCP CCP tun command nat enable yes nat same_ports yes nat use_sockets yes set redial 15 28800 set reconnect 15 28800 pppoe: #加入在kernel中配置的會(huì)連接ADSL設(shè)備的網(wǎng)卡的名稱,我的是fxp0 set device PPPoE:fxp0: set mru 1492 set mtu 1492 set speed sync enable lqr set lqrperiod 5 set cd 5 set dial set login set timeout 0 set authname Your UserName used to login set authkey Your PassWord used to login set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0 add default HISADDR# Add a (sticky) default route enable dns #注意:只有三處需要進(jìn)行更改的地方,它們是PPPoE:fxp0: 以及用戶名和密碼 。如果你不知道自已網(wǎng)卡的設(shè)備名哪么可以通過ifconfig –a命令來得到,我的計(jì)算機(jī)的結(jié)果如下: fxp0: flags=8843 mtu 1500 inet 192.168.10.50 netmask 0xffffff00 broadcast 192.168.10.255 ether 00:d0:59:0d:08:03 media: Ethernet autoselect (10baseT/UTP) status: active lo0: flags=8049 mtu 16384 inet 127.0.0.1 netmask 0xff000000 3.1.2. 設(shè)置啟動(dòng)時(shí)自動(dòng)進(jìn)行連接 在/etc/rc.conf中加入以下參數(shù)(ppp_mode設(shè)置斷線重?fù)艿墓δ埽?ppp_enable="YES" #ppp_mode="ddial" ppp_mode="background" ppp_profile="pppoe" 這里的ppp_profile對(duì)應(yīng)的是/etc/ppp中的ppp.conf里的一個(gè)條目 。3.1.3. 手動(dòng)連接 如果你想手動(dòng)的發(fā)起一個(gè)連接,只需要在命令行上輸入: ppp –ddial pppoe 最后一個(gè)參數(shù)就是你在/etc/ppp中設(shè)置的ppp.conf中的一個(gè)條目 。3.2. 使用mpd 3.2.1. 配置你的新kernel 為ADSL的PPPOE協(xié)議在kernel配置文件中加入以下內(nèi)容: # ADSL PPPOE Sup options NETGRAPH options NETGRAPH_ETHER options NETGRAPH_SOCKET options NETGRAPH_PPPOE 在重新編譯、安裝并重啟機(jī)器后,就可以使用netgraph了 。也就是可以正常使用mpd了 。3.2.2. 配置mpd配置文件 mpd的配置文件都存儲(chǔ)在/usr/local/etc/mpd中,在安裝好mpd后它已經(jīng)為我們產(chǎn)生了一系列的sample文件 。我們使用PPPoE需要產(chǎn)生三個(gè)配置文件: 3.2.2.1. mpd.conf PPPoE: new -i ng0 PPPoE PPPoE set iface addrs 1.1.1.1 2.2.2.2 set iface route default set iface disable on-demand set iface idle 0 set bundle disable multilink set bundle authname username set link no acfcomp protocomp set link disable pap chap set link accept chap set link mtu 1460 set ipcp yes vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 open iface 這里你需要使用你的PPPoE的用戶名來替換set bundle authname后面的username 。3.2.2.2. mpd.links PPPoE: set link type pppoe set pppoe iface fxp0 set pppoe service "adsl" 這里需要使用你的網(wǎng)卡的設(shè)備名來替換fxp0 。3.2.2.3. mpd.secret username "password" 使用你的在mpd.conf中的username來替換這里的username,使用你的PPPoE服務(wù)器的認(rèn)證密碼來替換這里的password 。3.2.3. 設(shè)置啟動(dòng)時(shí)自動(dòng)進(jìn)行連接 在/usr/local/etc/rc.d目錄中新建一個(gè)文件,名為000.mpd.sh,內(nèi)容為: /usr/local/sbin/mpd -b PPPoE 需要注意的是,你需要讓000.mpd.sh有可執(zhí)行的能力 ??梢允褂眠@條命令: chmodx /usr/local/etc/rc.d/000.mpd.sh 3.2.4. 手動(dòng)連接 其實(shí)就是000.mpd.sh中的哪句話了: /usr/local/sbin/mpd -b PPPoE 4. 設(shè)置NAT服務(wù) 4.1. 啟動(dòng)PPP的NAT支持 4.1.1. 系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng) 同時(shí)還需要指定本臺(tái)FreeBSD為一個(gè)網(wǎng)關(guān)服務(wù)器 。在/etc/rc.conf中設(shè)置gateway選擇以及ppp的撥號(hào)選項(xiàng): gateway_enable=”YES” ppp_nat="YES" natd_enable="YES" natd_interface="tu0" gateway_enable="YES" 除了在/etc/rc.conf中設(shè)置外,也可以在/etc/ppp/ppp.conf中加入以下設(shè)置: nat enable yes 這樣會(huì)打開ppp內(nèi)置的NAT服務(wù) 。如果在ppp.conf中加入了這個(gè)參數(shù),哪么在rc.conf中是否加入ppp_nat=”YES”也就無所謂了 。對(duì)于使用ppp的NAT支持我們會(huì)發(fā)現(xiàn)它對(duì)于系統(tǒng)的kernel沒有任何定制要求,所以對(duì)于輕型的應(yīng)用和只是提供透明轉(zhuǎn)發(fā)的網(wǎng)關(guān)使用ppp自帶的NAT功能則是最好的選擇 。4.1.2. 手動(dòng)啟動(dòng) 如果已經(jīng)改動(dòng)了ppp.conf中的nat enable yes,哪么你還是可以使用ppp –ddial pppoe命令行來啟動(dòng)ppp 。而且ppp也直接支持nat的功能 。但是也可以能過: ppp –nat –ddial pppoe 命令來手工顯示的啟用ppp的NAT支持 。4.2. 使用IPFW的NATD IPFW/NATD是FreeBSD內(nèi)置的防火墻軟件 ??梢允褂肐PFW來進(jìn)行進(jìn)出包過濾,使用NATD來實(shí)現(xiàn)透明網(wǎng)關(guān) 。4.2.1. 系統(tǒng)配置 4.2.1.1. 在kernel中加入防火墻配置 在kernel配置文件中加入以下選項(xiàng)參數(shù): options IPFIREWALL options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=100 4.2.1.2. 設(shè)置系統(tǒng)啟動(dòng)時(shí)參數(shù) 在/etc/rc.conf中加入以下設(shè)置: ipfirewall_enable="YES" firewall_type="open" 4.2.2. 為ppp設(shè)置natd 為了使ppp具有portmapping這樣的功能哪么使用natd則是必然的了 。對(duì)于ppp,在啟動(dòng)ppp后使用ifconfig會(huì)發(fā)現(xiàn)ppp啟動(dòng)和tun0或是tunx這樣的一個(gè)設(shè)備,它是使用kernel中的: device tun # Packet tunnel. 設(shè)備來形成一個(gè)獨(dú)立的網(wǎng)絡(luò)設(shè)備 。所以在設(shè)備natd之前你需要確認(rèn)你的ppp會(huì)使用到的設(shè)備號(hào) 。通常如果只撥接一次,哪么設(shè)備名就應(yīng)是tun0了 。在/etc/rc.conf中加入以下natd的設(shè)置: natd_enable="YES" natd_interface="tun0" natd_flags="-m –s -f /etc/natd.conf" 同時(shí)別忘記在rc.conf中也需要gateway_enable="YES"這樣的一個(gè)設(shè)置呀 。由于我的portmapping項(xiàng)目比較多,所以我喜歡將所有的設(shè)置放入一個(gè)文件中,也就是/etc/natd.conf 。以下是我的natd.conf的設(shè)置: dynamic yes redirect_port tcp 192.168.10.100:80 8080 redirect_port udp 192.168.10.100:3782 3782 redirect_port udp 192.168.10.100:3783 3783 redirect_port tcp 192.168.10.100:3782 3782 redirect_port tcp 192.168.10.100:3783 3783 由于是使用的ppp,它的ip地址是動(dòng)態(tài)分配的,所以使用的dynamic yes這個(gè)參數(shù) 。redirect_port的作用則是將本機(jī)的tcp或是udp的一個(gè)端口的連接傳發(fā)至內(nèi)網(wǎng)的一個(gè)IP地址的端口之上 。4.2.3. 為mpd設(shè)置natd 在上節(jié)中我們說明了natd需要使用一個(gè)網(wǎng)絡(luò)接口來做外網(wǎng)的網(wǎng)卡界面,在mpd中它使用的是ng0或是ngx ??梢詤⒖寄愕膍pd.conf的設(shè)置 。在本文檔中使用的是ng0,所以我們的/etc/rc.conf中需要加入以下設(shè)置: natd_enable="YES" natd_interface="ng0" natd_flags="-m –s -f /etc/natd.conf" 對(duì)于natd.conf中的設(shè)置見上節(jié)中的設(shè)置,其實(shí)在mpd和ppp下natd除了網(wǎng)卡接口不同外,其它都是一樣的 。由于mpd不能通過/etc/rc.conf來啟動(dòng),通過/usr/local/etc/rc.d中的shell腳本啟動(dòng)又會(huì)晚于natd啟動(dòng)的時(shí)間,所以為了在natd啟動(dòng)前來啟動(dòng)mpd,可以使用以下方法: 在/etc/rc.firewall的 ############ # Flush out the list before we begin. # ${fwcmd} -f flush 后面加入 /usr/local/sbin/mpd -b PPPoE sleep 10 這樣就可以讓natd啟動(dòng)時(shí),mpd已經(jīng)啟動(dòng),并已經(jīng)為ng0網(wǎng)卡動(dòng)態(tài)得到了IP地址 。需要注意的是,不要忘記把/usr/local/etc/rc.d中的mpd.sh刪除喲 。4.3. 使用ipfilter的ipnat 在FreeBSD下最為流行的就是IPFW/NATD及ipfilter/ipnat兩個(gè)安全組合了 。對(duì)于FreeBSD的core team來說,他們更推薦使用IPFW/NATD,而ipfilter/ipnat則是可以運(yùn)行于多種操作系統(tǒng)之上的一個(gè)安全方案 。包括Solaris、HPUX、IBM AIX及各種BSD 。之所以在這里加入了ipfilter/ipnat的說明是因?yàn)槲覀€(gè)人更喜歡ipfilter的實(shí)時(shí)監(jiān)控功能和ipnat的方便更新配置的功能 。4.3.1. 系統(tǒng)配置 4.3.1.1. 在kernel中加入ipfilter的支持 在kernel的配置文件中需要加入以下參數(shù): options IPFILTER options IPFILTER_LOG options RANDOM_IP_ID 需要注意的是,ipfilter與IPFW不能共存,所以請(qǐng)檢查是否也有IPFW的配置參數(shù),如果有將它們注釋或刪除 。4.3.1.2. 設(shè)置啟動(dòng)時(shí)參數(shù) 在/etc/rc.conf中加入以下參數(shù): ipfilter_enable="YES" ipnat_enable="YES" ipfilter的配置文件默認(rèn)使用/etc/ipf.rules,而ipnat的配置文件默認(rèn)使用ipnat.rules 。需要注意的是,和上節(jié)一樣,你需要將rc.conf中所有firewall開頭的行注釋或刪除 。4.3.1.3. 設(shè)置ipfilter參數(shù) 在/etc/ipf.rules中加入以下參數(shù): pass in all pass out all 不要罵我為什么把防火墻全開著,如果你需要對(duì)防火墻做設(shè)置時(shí),請(qǐng)參考ipfilter的設(shè)置罷 。4.3.2. 為ppp設(shè)置ipnat 在/etc/rc.conf中設(shè)置 ipfilter_enable="YES" ipnat_enable="YES" 同時(shí)設(shè)置/etc/ipnat.rules: map tun0 192.168.10.0/24 -> 0/32 portmap tcp/udp 10000:65535 map tun0 192.168.10.0/24 -> 0/32 rdr tun0 0/0 port 8080 -> 192.168.10.100 port 80 tcp 前兩行是做透明網(wǎng)關(guān)的設(shè)置,最后一行的設(shè)置說明了將tun0上的8080端口的tcp訪問轉(zhuǎn)發(fā)至192.168.10.100 。4.3.3. 為mpd設(shè)置ipnat 在/etc/rc.conf中設(shè)置 ipfilter_enable="YES" ipnat_enable="YES" 同時(shí)設(shè)置/etc/ipnat.rules: map ng0 192.168.10.0/24 -> 0/32 portmap tcp/udp 10000:65535 map ng0 192.168.10.0/24 -> 0/32 rdr ng0 0/0 port 8080 -> 192.168.10.100 port 80 tcp 前兩行是做透明網(wǎng)關(guān)的設(shè)置,最后一行的設(shè)置說明了將ng0上的8080端口的tcp訪問轉(zhuǎn)發(fā)至192.168.10.100 。

    推薦閱讀