|
藍森林 http://www.lslnet.com 2006年4月6日 20:18
如何在freebsd系統中做nat網關
哪位能賜教:如何在freebsd系統中做nat,不借助其他任何軟件!謝謝 |
如何在freebsd系統中做nat網關
ipfilter就很好啊,論壇很多這方面的資料的,搜索一下 |
如何在freebsd系統中做nat網關
我是說就用freebsd系統自身的功能,能不能實現呢? |
如何在freebsd系統中做nat網關
http://www.freebsd.org.cn/snap/doc/zh_CN.GB2312/books/handbook/network-natd.html
手冊裡用的是ipfw :wink: |
如何在freebsd系統中做nat網關
謝謝了,呵呵!打不開 |
如何在freebsd系統中做nat網關
24.8. 網絡地址轉換
作者:Chern Lee. 譯者:李 鑫.
24.8.1. 概要
FreeBSD 的網絡地址轉換服務, 通常也被叫做 natd(8), 是一個能夠接收連入的未處理 IP 包,將源地址修改為本級地址然後重新將這些包注入到發出 IP 包流中。 natd(8) 同時修改源地址和端口, 當接收到響應數據時,它作逆向轉換以便把數據發回原先的請求者。
NAT 最常見的用途是為人們所熟知的 Internet 連接共享。
24.8.2. 安裝
隨著 IPv4 的 IP 地址空間的日益枯竭, 以及使用如 DSL 和電纜等高速連接的用戶的逐漸增多,越來越多的人開始需要 Internet 連接共享這樣的解決方案。 由於能夠將許多計算機通過一個對外的 IP 地址進行接入, natd(8) 成為了一個理想的選擇。
更為常見的情況, 一個用戶通過電纜或者 DSL 線路 接入,並擁有一個 IP 地址,同時,希望通過這台接入 Internet 的計算機來為 LAN 上更多的計算機提供接入服務。
為了完成這一任務, 接入 Internet 的 FreeBSD 機器必須扮演網關的角色。這台網關必須有兩塊網卡 -- 一塊用於連接 Internet 路由器, 另一塊用來連接 LAN。 所有 LAN 上的機器通過 Hub 或交換機進行連接。
上述配置被廣泛地用於共享 Internet 連接。 LAN 中的一台機器連接到 Internet 中。 其餘的計算機則通過那台 「網關」 機來連接 Internet。
24.8.3. 配置
下面這些選項必須放到內核配置文件中:
options IPFIREWALL
options IPDIVERT
此外,下列是一些可選的選項:
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_VERBOSE
這些配置必須放到 /etc/rc.conf 中:
gateway_enable="YES"
firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="fxp0"
natd_flags=""
將機器配置為網關。 執行 sysctl net.inet.ip.forwarding=1 效果相同。
在啟動時啟用 /etc/rc.firewall 中的防火牆規則。
指定一個預定義的允許所有包進入的防火牆規則集。 參見 /etc/rc.firewall 以瞭解其他類型的規則集。
指定通過哪個網絡接口轉發包 (接入 Internet 的那一個)。
其他希望在啟動時傳遞給 natd(8) 的參數。
在 /etc/rc.conf 中加入上述選項將在系統啟動時運行 natd -interface fxp0。 這一工作也可以手工完成。
Note: 當有太多選項要傳遞時,也可以使用一個 natd(8) 的配置文件來完成。這種情況下,這個配置文件必須通過在 /etc/rc.conf 裡增加下面內容來定義:
natd_flags="-f /etc/natd.conf"
/etc/natd.conf 文件會包含一個配置選項列表,每行一個。在緊跟部分的例子裡將使用下面的文件:
redirect_port tcp 192.168.0.2:6667 6667
redirect_port tcp 192.168.0.3:80 80
關於配置文件的更多信息,參考 natd(8) 手冊頁中關於 -f 選項那一部分。
在LAN後面的每一台機子和接口應該被分配私有地址空間(由RFC 1918定義) 裡的 IP 地址,並且默認網關設成 natd 機子的內連 IP 地址。
例如:客戶端 A 和 B 在 LAN 後面,IP 地址是 192.168.0.2 和 192.168.0.3,同時 natd 機子的 LAN 接口上的 IP 地址是 192.168.0.1。客戶端 A 和 B 的默認網關必須要設成 natd 機子的 IP——192.168.0.1。natd 機子外連,或互聯網接口不需要為了 natd(8) 而做任何特別的修改就可工作。
24.8.4. 端口重定向
使用 natd(8) 的缺點就是 LAN 客戶不能從互聯網訪問。LAN 上的客戶可以進行到外面的連接,而不能接收進來的連接。如果想在 LAN 的客戶端機子上運行互聯網服務,這就會有問題。 對此的一種簡單方法是在 natd 機子上重定向選定的互聯網端口到 LAN 客戶端。
例如:在客戶端 A 上運行 IRC 服務,而在客戶端 B 上運行 web 服務。 想要正確的工作,在端口 6667 (IRC) 和 80 (web) 上接收到的連接就必須重定向到相應的機子上。
-redirect_port 需要使用適當的選項傳送給 natd(8)。語法如下:
-redirect_port proto targetIP:targetPORT[-targetPORT]
[aliasIP:]aliasPORT[-aliasPORT]
[remoteIP[:remotePORT[-remotePORT]]]
在上面的例子中,參數應該是:
-redirect_port tcp 192.168.0.2:6667 6667
-redirect_port tcp 192.168.0.3:80 80
這就會重定向適當的 tcp 端口到 LAN 上的客戶端機子。
-redirect_port 參數可以用來指出端口範圍來代替單個端口。例如, tcp 192.168.0.2:2000-3000 2000-3000 就會把所有在端口 2000 到 3000 上接收到的連接重定向到主機 A 上的端口 2000 到 3000。
當直接運行 natd(8) 時,就可以使用這些選項, 把它們放到 /etc/rc.conf 裡的 natd_flags="" 選項上,或通過一個配置文件進行傳送。
想要更多配置選項,請參考 natd(8)。
24.8.5. 地址重定向
如果有幾個 IP 地址提供,那麼地址重定向就會很有用,然而他們必須在一個機子上。使用它,natd(8) 就可以分配給每一個 LAN 客戶端它們自己的外部 IP 地址。natd(8) 然後會使用適當的處部 IP 地址重寫從 LAN 客戶端外出的數據包,以及重定向所有進來的數據包——一定的 IP 地址回到特定的 LAN 客戶端。這也叫做靜態 NAT。例如,IP 地址 128.1.1.1、 128.1.1.2 和 128.1.1.3 屬於 natd 網關機子。 128.1.1.1 可以用來作 natd 網關機子的外連 IP 地址,而 128.1.1.2 和 128.1.1.3 用來轉發回 LAN 客戶端 A 和 B。
-redirect_address 語法如下:
-redirect_address localIP publicIP
localIP LAN 客戶端的內部 IP 地址。
publicIP 相應 LAN 客戶端的外部 IP 地址。
在這個例子裡,參數是:
-redirect_address 192.168.0.2 128.1.1.2 -redirect_address 192.168.0.3 128.1.1.3
象 -redirect_port 一樣,這些參數也是放在 /etc/rc.conf 裡的 natd_flags="" 選項上,或通過一個配置文件傳送給它。使用地址重定向, 就沒有必要用端口重定向了,因為所有在某個 IP 地址上收到的數據都被重定向了。
在 natd 機子上的外部 IP 地址必須激活並且別名到 (aliased) 外連接口。要這做就看看 rc.conf(5)。 |
如何在freebsd系統中做nat網關
謝謝樓上的大哥! :) |
| |