http://bbs.ee.ntu.edu.tw/cgi-bin/bbs2html_cgi?boards/BSD/D.843381019.A/M.869303
585.A+a1ba205b4641515d20c3f6a9f3204e4154
◇ [FAQ] 關於 NAT
-------------------------------------------------------------------------------
-發信人: Jian-Da Li <[email protected]>, 看板: 386BSD
標 題: [FAQ] 關於 NAT
發信站: NCTU CSIE FreeBSD Server (Sat Jul 19 16:51:06 1997)
轉信站: sobee!netnews.ntu!news.mcu!news.cs.nthu!UUserv.Net.tw!aidebbs!netnews.
[ Already at gopher://freebsd.csie.nctu.edu.tw/ -> 7 -> 36 ]
NAT (Network Address Translation) 可以讓你區域網路中的所有機器
經由一台通往 Internet 的 server 連線出去,而且只需要註冊該 server
一個 IP 就夠了。
在以往沒有 NAT 技術以前,我們必須在 server 上安裝 sockd,並且所有
的 clients 都必須要支援 sockd,才能夠經過 server 的 sockd 連線
出去。這種方式最大的問題是,通常只有 telnet/ftp/www-browser 支援
sockd,其它的程式都不能使用;而且使用 sockd 的速度稍慢。
因此我們現在都使用本篇所提的 NAT,這樣 client 不需要做任何的更動,
只需要把 gateway 設到該 FreeBSD server 上就可以了,而且所有的程式
(例如 kali/kahn 等等) 都可以使用。
首先我們先來談談區域網路的 private IP,依照 RFC 1918 規範,以下的
IP 被預留作為 private network 使用,不會跟別人衝突:
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
因此當你在架設私有的區域網路時,應該根據你的需要使用以上的 IP 當作
區域網路中機器的 IP Address。
再來我們談談所需要的軟硬體:
1. 一台可以連上 internet 網路的 FreeBSD server,並且擁有註冊過的
合法 IP。而且在 /etc/sysconfig 中要把 gateway 設成 ON 以啟動
IP forwarding 的功能。
2. FreeBSD 作業系統版本:
a) FreeBSD-2.1:
* 如果你的 FreeBSD server 是經由 PPP 連上 internet 的,你可以
使用 PPP_Alias (http://www.srv.net/~cmott/alias.html),使用
方法很簡單,只需要把 ppp_alias 替換掉 /usr/sbin/ppp,然後
使用 /usr/sbin/ppp (user mode ppp) 連上網路即可,不需額外設定。
* 如果你的 FreeBSD server 是經由 LAN 以及其他方式連上網路的,
請用 ip_filter (http://coombs.anu.edu.au/~avalon/ip-filter.html)
這套軟體不但具有 NAT 的功能,還可以做 IP Filtering 以及其他
強大的功能。
b) FreeBSD-2.2/3.0:
* 如果你的 FreeBSD server 是經由 PPP 連上 internet 的,你可以
使用 PPP_Alias,由於 cmott 撰寫的 PPP_Alias 已經被加入 2.2/3.0
中,因此你只需要使用 /usr/sbin/ppp -alias 撥接即可。
* 如果你的 FreeBSD server 是經由 LAN 以及其他方式連上網路的,
你有兩種選擇:
1) 使用 IP Divert Interface:
FreeBSD 2.2/3.0 具有 Packet Divert (請 man divert) 的功能,
Divert 可以讓你自由的處理經過 kernel 的 packets,除了 NAT
以外,還有其他如「限制網路頻寬」等功能。如果你要使用 divert
來做 NAT 的話,你需要 ftp://freebsd.csie.nctu.edu.tw/
/pub/jdli/collect/natd/ 軟體,並且依照裡面的說明在 kernel
中加入 IP Firewall 與 IP Divert 的功能。(現在 natd 已經進入
FreeBSD-ports/net/natd/,您可以到 ports/packages 中尋找)
2) 使用 IP Filter:
前面提過的 ip_filter 由於功能強大,現在已經慢慢進入 FreeBSD
2.2/3.0 中,很可能未來會取代掉 FreeBSD 現有的 IP Firewall。
3. 其它的軟體:
你可以在這台 FreeBSD server 上啟動 IP Firewall 或是安裝 Proxy
server (例如 squid) 來充分發揮其 gateway 的功能。
4. 注意事項:
使用 NAT 後,你所有的連線都會被當成是從該 FreeBSD server 上出去
的,也就是說,外面的機器無法直接連上你區域網路中的機器,當然
連上你的 FreeBSD server 是沒有問題的。
PS. 從 1997/6/22 起,natd 已經正式加入了 2.2/3.0 的行列。
==================================================================
淺談 natd 的架設:
0. 你必須使用 FreeBSD-2.2.2+/3.0+ (已內建 natd)
1. man natd 大略看過一遍
2. 系統設定:
a) 在 kernel 設定檔中加入以下 keyword 並重新編譯 kernel
options IPFIREWALL
options IPDIVERT
b) 修改 /etc/rc.conf 啟動 IP forwarding,以及啟動 IP Firewall
gateway_enable=YES
firewall="open"
c) 把以下加入到 /etc/services
natd 6668/divert
d) 重新開機
e) 執行 natd
natd -interface ed0
其中 ed0 是你連上網路的媒介,例如 ed0 ppp0 de0 tun0,這樣封包
會經由該媒介轉送。
f) 執行 ipfw (把 ed0 換成 natd 用的那個)
/sbin/ipfw add divert 6668 all from any to any via ed0
3. 到此大致完成了,你可以把你的 clients 的 router IP 設到這台 FreeBSD
Server,測試看看能不能上網路。
4. 如果成功了,可以把 ipfw 那行加到 /etc/rc.firewall 中,把 natd
那行加到 /etc/rc.local 中,這樣以後就可以自動啟動了。
5. 這只是最基本的設定,natd 還有許多特異功能,請自行 man natd。
--
李 建 達 (Jian-Da Li) !(交大資工)
E-Mail : <[email protected]>
http://www.csie.nctu.edu.tw/~jdli