2009年6月20日 星期六

FreeBSD NAT 設定

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

設定結束。