NAT : Network Address Translation
FreeBSD 預設的 GENERIC 核心並未加入NAT及防火牆功能。
編輯核心設定檔,加入下列設定,並重新編譯核心。
進入此目錄中/usr/src/sys/i386/conf/。
修改GENERIC檔,加入下列設定。
修改/usr/src/sys/i386/conf/GENERIC
# /usr/src/sys/i386/conf/GENERIC
# 防火牆
options IPFIREWALL
# NAT
options IPDIVERT
# 下面這一行是預設允許所有封包通過,如果沒有這一行,
# 就必須在 /etc/rc.firewall 中設定封包的規則。
# 這條規則內定編號是 65535,也就是所有規則的最後一條
# 如果沒有加這一條規則,內定就是拒絕所有封包,
# 只允許規則中允許的封包通過。
options IPFIREWALL_DEFAULT_TO_ACCEPT
# 這一行是讓你可以在 ipfw 中設定要記錄哪些封包,
# 如果沒有這一行,就算設定了要留下記錄也不會有作用。
options IPFIREWALL_VERBOSE
# 這一行是限制每一條規則所要記錄的封包數量,
# 因為同樣的規則可能有許多記錄,加上這一條可以使
# 同樣的記錄重覆數減少,以避免記錄檔爆增。
options IPFIREWALL_VERBOSE_LIMIT=10
# 下面這一行是用來支援封包轉向,
# 當你要使用 fwd 動作時必須要有這一項設定。
options IPFIREWALL_FORWARD
# 如果要使用 pipe 來限制頻寬,必須加入下列選項以支援 dummynet。
options DUMMYNET
# end of BSD configuration
重新編譯安裝核心
config BSD
cd ../compile/BSD
make depend all install
此執行需要一些時間。
設定好第一張網路卡,並確定可以上網後,才開始下列設定。
要修改 /etc/rc.conf 以啟動 NAT 功能。
修改/etc/rc.conf
# /etc/rc.conf
# 設定第二張網路卡的 IP。
ifconfig_eth1="inet 192.168.0.1 netmask 255.255.255.0"
# 設定啟用 gateway 的功能。
gateway_enable="YES"
# 設定啟用防火牆功能,並設定防火牆類型為 OPEN。
# FreeBSD 的防火牆設定檔會自動為 NAT 加入相關的設定。
firewall_enable="YES"
firewall_type="OPEN"
# 設定 NAT 所使用的對外網路卡
natd_interface="eth0"
natd_enable="YES"
# end of rc.conf configuration
設定結束。