◎敘述natd簡單的來說就是進行位址轉換,也就是說通常是用在真實ip位址不夠用時.所採取的替代方案. ◎環境概說___________________| |_______________|FreeBSD NATD|-( 對外介面 xl0 真實ip位址)---->|gateway||___________________|| 163.19.203.252 ||-------|--------| ||(對內介面 rl0 虛擬ip位址)||internet|網際網路_ _ _ _ _|_ _ _ _ _|||虛擬ip LAN||_ _ _ _ _ _ _ _ _ _ |依照上圖,FreeBSD伺服器有兩張網卡,(非必要,後面會補充說明)一張(xl0)對外設定真實ip位址(163.19.203.129)一張(rl0)對內設定虛擬ip位址(192.168.10.254)由於FreeBSD已內建natd服務,所以只需要進行一些小設定,讓 FreeBSD 知道兩個區域網路,並且把虛擬ip LAN 的封包轉換過後由真實ip介面轉送出去.有幾個步驟是必須的 0.設定兩張網卡,是基本也是必須!!第一張網卡可以透過安裝時設定.此時並順便注意第二張網卡的代號.第二張用手動設定會比較簡單.修改/etc/rc.confdefaultrouter="163.19.203.252"ifconfig_xl0="inet 163.19.203.129netmask 255.255.255.128"ifconfig_rl0="inet 192.168.10.254netmask 255.255.255.0"真實ip的那張網卡不用特別注意,設定正確可以連上網路即可.我對內的網卡代號為rl0,且我需要把他設定為虛擬的ip位址.為了方便,我設一整個虛擬的區段(192.168.10.0/24).ip依照習慣定義為192.168.10.254比較需要注意的是defaultrouter="163.19.203.252" 要設定為真實ip位址的閘道器ip位址.簡而言之,只有紅色部分是額外加上的.若您只有一張網卡,又不想再買一張... ~"~ (舉例我只有一張xl)ifconfig_xl0_alias0="inet 192.168.10.254 netmask 255.255.255.0"就可以把那一張卡額外再加上一個ip位址. 1.重新編譯 kernel , 並在kernel文字敘述檔,加上以下的參數:options IPFIREWALLoptions IPFIREWALL_DEFAULT_TO_ACCEPToptions IPDIVERT加上這些參數是要讓kernel加上防火牆的功能.(原因在步驟4說明)參照本站更新ports/升級系統 > kernel 更新並請注意 現在版本的LINT敘述檔 必須透過 make LINT 產生.參照本站 FreeBSD改版訊息 > 4.x to 5.x 2.開機時自動啟動 gateway 功能 (也就是轉送封包的功能)在/etc/rc.conf檔案末端新增gateway_enable="YES"# Set to YES if this host will be a gateway.或是 直接採用命令列方式轉送封包 (不建議這樣做,太麻煩)sysctl net.inet.ip.forwarding=1 3.定義natd的對外介面卡.在/etc/rc.conf檔案末端新增natd_interface="xl0"# Public interface or IPaddress to use.請注意 其中 xl0 是我對外的網卡,您可以透過 ifconfig -a 查看系統所抓取到的網卡代號. 4.把流量 導向到(divert)natd 服務.必須透過防火牆把流量導過去,所以你必須完成步驟1的kernel編譯.透過/etc/rc.firewall檔案設定防火牆達到這個目的.不過若你對防火牆沒有太大的興趣. 直接在檔案*最末端*加上這幾行也可以./sbin/ipfw -f flush/sbin/ipfw add divert natd all from any to any via xl0/sbin/ipfw add pass all from any to any說明: 第一行:清空防火牆規則. 第二行:把所有natd的流量透過 xl0 介面導出.請依照自己的實際狀況修改. 第三行:放行所有的封包.只設定這三行,將會造成你的區域網路只要把電腦的gateway(閘道器)設到你這個ip位置就可以把封包透過你這台機器轉送,所以..若有需要請把防火牆規則加上.當你額外再設定相關防火牆規則時,請把第二行加在其他規則之前,以確定natd可以接收到所有的封包.且封包會在natd轉換後 重新進入防火牆規則進行過濾. 5.開機時自動啟動 防火牆 功能在/etc/rc.conf檔案末端新增firewall_enable="YES" # Set to YES to enable firewall functionality若是手動執行 (sh /etc/rc.firewall)防火牆功能,請務必確認你的規則不會把你自己給過濾掉.也就是說 可能的話在本機而非遠端執行此動作. 6.開機時自動啟動 nat 轉換功能在/etc/rc.conf檔案末端新增natd_enable="YES"# Enable natd (if firewall_enable == YES). 7.重新啟動伺服器,natd就完成設定了. Clinet端設定:IP位址: 192.168.10.0~255子網路遮罩: 255.255.255.0閘道器: 192.168.10.254 (指定 natd對內網卡ip位址 作為閘道器位址)這樣就可以節省很多ip位址嚕. ◎總結:上述步驟是為了要把natd的流程寫出來,若只是要快速的建立natd服務.且配合日後可能的防火牆設定.總結如下:a.編譯完kernelb.修改檔案:(請依照您實際狀況修改)/etc/rc.conf最後端加上這些參數:defaultrouter="163.19.203.252"ifconfig_xl0="inet 163.19.203.129netmask 255.255.255.128"ifconfig_rl0="inet 192.168.10.254netmask 255.255.255.0"firewall_enable="YES" # Set to YES to enable firewall functionalityfirewall_type="OPEN"# Firewall type (see /etc/rc.firewall)natd_enable="YES"# Enable natd (if firewall_enable == YES).natd_interface="xl0"# Public interface or IPaddress to use.gateway_enable="YES"# Set to YES if this host will be a gateway. c.並且在 /etc/firewall 找到下方設定,新增紅色部分case ${firewall_type} in[Oo][Pp][Ee][Nn])setup_loopback${fwcmd} -f flush${fwcmd} add 10000 divert natd all from any to any via xl0# 可能擴充的防火牆規則放在這${fwcmd} add 65000 pass all from any to any;; 說明:由於先前firewall_type設定為OPEN所以我在OPEN這個地方加上設定.d.重新啟動伺服器,設定clinet端,就完成了. ◎補充:上述/etc/rc.conf中新增的參數設定 /etc/defaults/rc.conf 中都有養成好習慣用複製的,不要直接修改 /etc/defaults/rc.conf 檔案◎作者: ArchIE Cobbs(divert sockets) Charles Mott
推荐阅读
- 关于服务的古代名言
- FreeBSD openwebmail服务
- FreeBSD DNS服务器补充
- FreeBSD 5.2-Release Note
- 55 FreeBSD连载:Ports Collection
- FreeBSD网站平台建设全过程 第四步
- 49 FreeBSD连载:进入X Window
- FreeBSD Find的介紹
- FreeBSD网站平台建设全过程 第五步
- FreeBSD Biabam 邮件附件