由於家裡是用 bridge mode 的 static IP ADSL
所以 NAT 的工作就交給 PPPoE 連線時順便帶起來啦~
簡單的說,
就是一般市面上俗稱”寬頻分享器”或是”Broadband Router”的功能啦~
之前一直沒有認真玩過FreeBSD底下的NAT
直到最近為了專題需求,才真正下了工夫研究…
*環境
系統:FreeBSD 4-STABLE
相關軟體:natd(8)、ipfw(8)、dhcpd(8)
網卡代號:de0
Public IP:140.124.72.6
Private IP:192.168.100.254/24
*前置工作
首先必須確定kernel編譯時有包含以下參數,若沒有則必須重新compile
options IPFIREWALL
options IPDIVERT
也可以依照需求再額外加上以下兩參數
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE
順便提供 DHCP 功能,省去分配IP的麻煩
安裝 DHCPd:
cd /usr/ports/net/isc-dhcp3-server
make install clean
*設定
編輯 /etc/rc.conf:
gateway_enable=”YES”
firewall_enable=”YES”
firewall_type=”OPEN”
natd_enable=”YES”
natd_interface=”de0″
natd_flags=””
此處 natd_flag 是空的,通常可以設成
natd_flags=”-f /etc/natd.conf”
natd.conf 裡面放著其他額外的 NAT 設定。
natd_interface 則因環境而異
設定 DHCPd,編輯 /usr/local/etc/dhcpd.conf
以下是典型的設定值:
option domain-name “your.domain.name”;
option domain-name-servers ns1.your.domain.name, ns2.your.domain.name;
option routers 192.168.100.254;default-lease-time 3600;
max-lease-time 7200;ddns-update-style none;
log-facility local7;subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.100 192.168.100.200;
host venus{
hardware ethernet 11:22:33:44:55:66;
fixed-address 192.168.100.100;
}
}
*參考資料
FreeBSD Handbook
Man Page:natd(8)、ipfw(8)
其實一般的IP分享器所達到的功能不外乎DHCP(自動分配IP)、硬體撥號, etc
所以等於是上圖中 Hub & ClientB 的集合
至於Router 是屬於機房端的設備,跟用戶端扯不上關係
大概就這樣…