FreeBSD底下的NAT

由於家裡是用 bridge mode 的 static IP ADSL
所以 NAT 的工作就交給 PPPoE 連線時順便帶起來啦~

簡單的說,
就是一般市面上俗稱”寬頻分享器”或是”Broadband Router”的功能啦~

之前一直沒有認真玩過FreeBSD底下的NAT
直到最近為了專題需求,才真正下了工夫研究…

natd.png


*環境

系統: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)

在〈FreeBSD底下的NAT〉中有 1 則留言

  1. 其實一般的IP分享器所達到的功能不外乎DHCP(自動分配IP)、硬體撥號, etc
    所以等於是上圖中 Hub & ClientB 的集合

    至於Router 是屬於機房端的設備,跟用戶端扯不上關係
    大概就這樣…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *