精華區beta FreeBSD 關於我們 聯絡資訊
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