Linux IP Masquerade mini HOWTO 中譯版 作者: Ambrose Au, [1]ambrose@writeme.com; David Ranch, [2]dranch@trinnet.net 譯者: [3]黃志偉 [4]cwhuang@linux.org.tw v1.50, 7 February 1999 翻譯日期: 17-31 March 1999 _________________________________________________________________ 這份文件描述如何在一台 Linux 主機上起動 IP Masquerade 功能,允許沒有註 冊網際網路 IP 位址的連線電腦經由你的 Linux 機器連接網際網路。 _________________________________________________________________ 1. 簡介 * 1.1 簡介 * 1.2 前言,回饋 & 參考資訊 * 1.3 版權 & 宣告 2. 背景知識 * 2.1 什麼是 IP Masquerade? * 2.2 現況 * 2.3 誰可以從 IP Masquerade 中獲益? * 2.4 誰不需要 IP Masquerade? * 2.5 IP Masquerade 是如何運作的? * 2.6 在 Linux 2.2.x 上使用 IP Masquerade 的需求 * 2.7 在 Linux 2.0.x 上使用 IP Masquerade 的需求 3. IP Masquerade 的設定 * 3.1 編譯核心加入 IP Masquerade 的支援 * 3.2 指定私用網路的 IP 位址 * 3.3 配置其它機器 * 3.4 配置 IP 轉送(Forwarding)的方式 * 3.5 測試 IP Masquerade 4. 其它 IP Masquerade 的問題及軟體支援 * 4.1 IP Masquerade 的問題 * 4.2 進入系統的服務(incoming services) * 4.3 已支援的客戶端軟體以及其它設定方面的注意事項 * 4.4 IP 防火牆管理 (ipfwadm) * 4.5 IP 防火牆鏈 (ipchains) * 4.6 IP Masquerade 以及需求式撥接(Demand-Dial-Up) * 4.7 IPautofw 封包轉送程式 * 4.8 CU-SeeMe 與 Linux IP-Masquerade 的簡短說明 * 4.9 其它相關工具 5. 常見問題解答 * 5.1 IP Masquerade 能否和動態配置的 IP 共同運作? * 5.2 我能使用數據機,DSL, 衛星連線等來連接網際網路並使用 IP Masquerade 嗎? * 5.3 IP Masquerade 支援什麼應用程式? * 5.4 我如何在 Redhat, Debian, Slackware 等使用 IP Masquerade 呢? * 5.5 我升級到 2.2.x 的核心,為什麼 IP Masquerade 不能用了? * 5.6 我已經升級到 2.0.30 後的核心,為什麼 IP Masquerade 還不能用? * 5.7 我無法讓 IP Masquerade 運作! 有 Windows 平台的選擇嗎? * 5.8 我檢查過我所有的設定了,仍無法讓 IP Masquerade 工作。我該怎麼 辦? * 5.9 我如何加入 IP Masquerade 通信論壇? * 5.10 我想協助 IP Masquerade 的發展。我該怎麼做? * 5.11 在那裡可找到更多 IP Masquerade 的資訊? * 5.12 我想翻譯本文件成其它語言,我該怎麼做? * 5.13 這文件有點過時了,你還有在維護嗎? * 5.14 我終於讓 IP Masquerade 能動了,好棒! 我想謝謝你們,我該怎麼 做? 6. 其它 * 6.1 有用的資源 * 6.2 Linux IP Masquerade 資源 * 6.3 感謝 * 6.4 參考資料 _________________________________________________________________ 1. 簡介 1.1 簡介 這份文件描述如何在一台 Linux 主機上起動 IP Masquerade 功能,允許沒有註 冊網際網路 IP 位址的連線電腦經由你的 Linux 機器連接網際網路。你的機器可 能是以乙太網路連接 Linux, 也可能是其它種類,像是撥接的點對點(ppp) 連線 。這份文件將會強調乙太網路連線的情況,因為這應該是最常見的案例。 這份文件目的是給 2.2.x 及 2.0.x 穩定版核心的使用者參考。舊版的核心如 1.2.x 並不包含在內。 1.2 前言,回饋 & 參考資訊 我發現新手在較新的核心上,像是 2.x 核心,設定 IP Masquerade 時非常困惑 。雖然有份常見問答集(FAQ) 與通信論壇(mailing list),然而沒有一份這方面 的專門文件;而且在通信論壇上有些對於這樣一份說明文件(HOWTO) 的請求。所 以,我決定撰寫它給所有新手作為一個起點,並且希望能拋磚引玉,作為那些非 常了解它的使用者建立文件的基礎。如果你認為我做的不好,不要在意告訴我, 這樣我能把它做得更好。 這份文件很多是以原先 Ken Eves 的常見問答集以及 IP Masquerade 通信論壇裡 許多有幫助的訊息作為基礎。特別感謝 Mr. Matthew Driver 在通信論壇中的訊 息引發我設立 IP Masquerade 的靈感以及最後撰寫了這份文件。 如果我的任何資訊有誤或遺漏任何資訊,請別介意把任何回饋或意見寄到 [5]ambrose@writeme.com 及 [6]dranch@trinnet.net 來。你的無價回饋將影響 這份說明文件的未來! 這份說明文件是想作為讓你的 IP Masquerade 能在最短時間內運作的快速指引。 因為我不是一位專門作家,你可能會發現本文件的資訊並非如你想的那麼一般及 客觀。 最新的消息以及資訊可以在我所維護的 [7]IP Masquerade Resource 網 頁上找到。 如果你有任何關於 IP Masquerade 的技術問題,請加入 IP Masquerade 通信論壇而別寄電子郵件給我,因為我的時間有限,而且 IP Masquerade 的發展者們更有能力回答你的問題。 這份文件最新的版本可以在 [8]IP Masquerade Resource 上找到,裡面也有 HTML 以及 postscript 的版本: * [9]http://ipmasq.cjb.net/ * [10]http://ipmasq2.cjb.net/ * 請參考 [11]IP Masquerade Resource 映射站台列表 以找到其它的映射站台 。 1.3 版權 & 宣告 這份文件版權屬於 Ambrose Au 1999, 而且是免費的文件。你可以在 GNU 的通用 公開授權方式下散播它。 這份文件中的資訊跟其它內容都已經盡了我最大的努力。無論如何,IP Masquerade 是實驗性的,而且我也可能會犯些錯誤;所以你應該自己決定是不是 要照著這份文件中的資訊做。 沒有人會為使用這份文件中的資訊所造成的電腦損壞或其它損失負責。也就是說 , 作者及維護者不對依照這份文件內容動作所造成的損害負責。 原文 This document is copyright(c) 1996 Ambrose Au, and it's a free document. You can redistribute it under the terms of the GNU General Public License. The information and other contents in this document are to the best of my knowledge. However, ip_masq is experimental, and there is chance that I make mistakes as well; so you should determine if you want to follow the information in this document. Nobody is responsible for any damage on your computers and any other losses by using the information on this document. i.e. THE AUTHOR AND MAINTAINERS ARE NOT RESPONSIBLE FOR ANY DAMAGES INCURRED DUE TO ACTIONS TAKEN BASED ON THE INFORMATION IN THIS DOCUMENT. 2. 背景知識 2.1 什麼是 IP Masquerade? IP Masquerade 是 Linux 的一項網路功能。如果一台 Linux 主機使用 IP Masquerade 功能連線到網際網路上,那麼接上它的電腦(不論是在同一個區域網 路上或藉由數據機連線)也可以接觸網際網路,即使它們沒有獲得正式指定的 IP 位址。 這使得一些電腦可以隱藏在閘道(gateway) 系統後面存取網際網路而不被發現, 看起來就像只有這個系統在使用網際網路。突破設定良好的偽裝(masquerade)系 統之安全防護應該會比突破良好的封包過濾式防火牆(packet filter firewall) 來得更加困難(假設兩者之中都沒有錯誤)。 2.2 現況 IP Masquerade 已經發展多年而趨於成熟,因此已正式併入 Linux 2.2.x 的核心 中。 從 1.3.x 版的核心開始已經內建這項支援。許多個人甚至公司正在使用它 ,而有滿意的結果。 瀏覽網頁以及遠端簽入(telnet)已經有回報表示可以在 IP Masquerade 上運作。 檔案傳輸(FTP),網路交談(IRC) 以及聆聽 Real Audio 現在可以載入某些模組配 合。其它的網路資料流音訊 (streaming audio) 像是 True Speech 以及 Internet Wave 也能運作。一些通信論壇中的使用夥伴甚至還嘗試過視訊會議軟 體。 Ping 現在配合新近可以取得的網際網路控制訊息協定(ICMP)修補檔也能運 作。 更完整的支援軟體列表請參考 4.3 節。 IP Masquerade 在數種不同的作業系統及平臺上與 '客戶端機器' 配合良好。 成 功的案例有使用 Unix, Windows95, Windows NT, Windows for Workgroup (with TCP/IP package), OS/2, Macintosh System's OS with Mac TCP, Mac Open Transport, DOS with NCSA Telnet package, VAX, Alpha with Linux, 甚 至 Amiga with AmiTCP 或 AS225-stack 的系統。 這列表還在不斷增加當中。重 點就是,只要你的系統使用 TCP/IP 協定,它就應該能和 IP Masquerade 一起工 作。 2.3 誰可以從 IP Masquerade 中獲益? * 如果你有台連接網際網路的 Linux 主機,而且 * 如果你有一些執行 TCP/IP 連接到 Linux 機器的電腦在區域網路上,以及/ 或是 * 如果你的 Linux 主機有一個以上的數據機並且作為 PPP 或 SLIP 伺服器連 接其它電腦,它們 * 這些其它機器沒有正式指定的 IP 位址。(這些機器從這裡開始以後就稱為 其它機器) * 而且當然,如果你希望這些其它機器不必花額外的費用就能連上網際網路 :) 2.4 誰不需要 IP Masquerade? * 如果你的機器是單獨一台(stand-alone) 連接網際網路的 Linux 主機,那麼 執行 IP Masquerade 沒什麼意義,或者 * 如果你的其它機器擁有正式指定的 IP 位址,那麼你就不需要 IP Masquerade * 而且當然,如果你不喜歡免費使用(free ride) 這個主意的話。 2.5 IP Masquerade 是如何運作的? 節自 Ken eves 的 IP Masquerade FAQ: 這是大部分簡單的設定草圖: SLIP/PPP +------------+ +-------------+ to provider | Linux | SLIP/PPP | Anybox | <---------- modem1| |modem2 ----------- modem | | 111.222.333.444 | | 192.168.1.100 | | +------------+ +-------------+ 上面的草圖中一台安裝並執行 ip_masquerading 的 Linux 機器使用 modem1 經由 SLIP/or/PPP 連接網際網路。它有一個 指定的 IP 位址 111.222.333.444。它設定 modem2 允許撥接者 簽入並起始 SLIP/or/PPP 連結。 第二個系統(不必是執行 Linux 的系統)撥接進入 Linux 機器並起始 SLIP/or/PPP 連結。它在網際網路上並沒有指定的 IP 位址所以它使用 192.168.1.100。(參閱下述) 配合 ip_masquerade 及適當遞送配置(routing configured) Anybox 這台機器可以跟網際網路交流就如同它真的連在上面般 (除了少數例外)。 節錄 Pauline Middelink: 別忘記提到 ANYBOX 應該把 Linux 機器當作它的閘道(無論是 預設遞送路徑或只是個子網路都沒關係)。如果 ANYBOX 不能夠 這樣設, Linux 機器應該為所有要遞送的位址做代理位址解析 析協定(proxy arp) 服務,但代理位址解析的設定超過這份文件 的範圍。 下面節錄自 comp.os.linux.networking 的一篇布告並且稍加編輯以 符合上述範例的用詞: 。我告訴 ANYBOX 這台機器跑 slip 的 linux 機器是它的閘道。 。當一個封包從 ANYBOX 進入 linux 機器時,它會指定新的來源埠 號(source port number),把它自己的 ip 位址塞入封包的標頭並 儲存原來的。然後它將會藉由 SLIP/or/PPP 界面把修改過的封包 送上網際網路。 。當一個封包從網際網路來到 linux 機器時,如果埠號是上面指定 的其中一個,它將會取出原來的埠號以及 ip 位址,把它們放回封 包的標頭,並且把封包送往 ANYBOX 。 。送出封包的主機將永遠不知道其中的差別。 一個 IP Masquerading 的例子: 下面的圖示是典型的例子:- +----------+ | | Ethernet | abox |:::::: | |2 :192.168.1.x +----------+ : : +----------+ PPP +----------+ : 1| Linux | link | | ::::| masq-gate|:::::::::// Internet | bbox |:::::: | | | |3 : +----------+ +----------+ : : +----------+ : | | : | cbox |:::::: | |4 +----------+ <-Internal Network-> 在這個例子中我們考慮四台電腦系統(想必遙遠的右方還有些東西讓你到網際網 路的 IP 連線能夠連接,以及一些(遠超過這一頁)在網際網路上你有興趣交換 資訊的東西)。 這個 Linux 系統 masq-gate 是 abox, bbox, cbox 內部網路機 器連接網際網路的偽裝閘道。 內部網路使用指定的私用(private) 網路位址,在 這個案例中是 class C 網路 192.168.1.0, Linux 機器擁有位址 192.168.1.1 而其它系統也擁有此網路上的位址。 這三台機器 abox, bbox 以及 cbox (它們可以執行任何作業系統 - 像是 Windows 95, Macintosh MacTCP 或甚至是另一台 Linux 機器,只要它們能了解 IP)可以連線到網際網路上的其它機器去,然而這個偽裝系統閘道 masq-gate 轉 換它們所有的連線所以這些連線看起來像是原本即從偽裝閘道 masq-gate 本身發 出的,而且還安排偽裝連線傳回的資料轉回原先的系統 - 所以在內部網路上的 系統看到的是直接通往網際網路的遞送路徑而且不知道他們的資料被偽裝過。 2.6 在 Linux 2.2.x 上使用 IP Masquerade 的需求 ** 請參考 [12]IP Masquerade Resource 以獲得最新資訊。** * 2.2.x 版核心的原始程式碼可從 [13]http://www.kernel.org/ 取得。 (大部份現代的發行套件如 Red Hat 5.2 - 配備了 2.0.36 的核心 - 已有了 模組化的核心,且所有 IP Masquerade 所需的選項都已打開。 這種情形下 ,已沒有必要再自行編譯。如果你自己升級核心,你應注意你需要什麼,在 文件稍後會提到。) * 可載入的核心模組,最好是 2.1.121 或以後的版本 * 設定良好的 TCP/IP 網路 相關文件在 [14]Linux NET-3 HOWTO 及 [15]Network Administrator's Guide 也請參考 [16]Trinity OS Doc, 是一份非常完整的 Linux 網路參考指引。 * 將你的 Linux 主機連上網際網路 相關文件有 [17]Linux ISP Hookup HOWTO, [18]Linux PPP HOWTO, [19]Linux DHCP mini-HOWTO 及 [20]Linux Cable Modem mini-HOWTO * IP Chains 1.3.8 或更新的版本。可從 [21]http://www.rustcorp.com/linux/ipchains/ 取得。 版本需求的更多資訊也在 [22]Linux IP Firewalling Chains page。 * 其它的資訊,請見 [23]Linux IP Masquerade Resource 2.7 在 Linux 2.0.x 上使用 IP Masquerade 的需求 ** 請參考 [24]IP Masquerade Resource 以獲得最新資訊。** * 核心 2.0.x 的原始程式碼可以從這裡取得 [25]http://www.kernel.org/ (大部份現代的發行套件如 Red Hat 5.2 - 配備了 2.0.36 的核心 - 已有了 模組化的核心,且所有 IP Masquerade 所需的選項都已打開。 這種情形下 ,已沒有必要再自行編譯。如果你自己升級核心,你應注意你需要什麼,在 文件稍後會提到。) * 可載入核心模組,最好是 2.0.0 或更新的版本,可以從這裡取得 [26]http://www.pi.se/blox/modules/modules-2.0.0.tar.gz (至少需要 modules-1.3.57) * 設定好的 TCP/IP 網路 相關文件在 [27]Linux NET-3 HOWTO 及 [28]Network Administrator's Guide 也請參考 [29]Trinity OS Doc, 是一份非常完整的 Linux 網路參考指引。 * 將你的 Linux 主機連上網際網路 相關文件 [30]Linux ISP Hookup HOWTO, [31]Linux PPP HOWTO, [32]Linux DHCP mini-HOWTO 及 [33]Linux Cable Modem mini-HOWTO * Ipfwadm 2.3 或更新的版本可以從這裡取得 [34]ftp://ftp.xos.nl/pub/linux/ipfwadm/ipfwadm-2.3.tar.gz 在 Linux Ipfwadm 網頁上有更多關於版本的資訊 [35]Linux IPFWADM page * 你可以選擇性地加上一些 IP Masquerade 修補檔以增加其它功能。 從這裡 可以取的更多資訊, [36]IP Masquerade Resources (這些修補檔適用於所 有的 2.0.x 核心) 3. IP Masquerade 的設定 如果你的私用網路裡有任何重要的資訊,在使用 IP Masquerade 之前請三思 。這可能成為你通往網際網路的閘道,反之亦然,也可能成為另一邊的世界進 入你私用網路的途徑。 3.1 編譯核心加入 IP Masquerade 的支援 如果你的 Linux 發行套件已經將下面將提到的所需特性及模組編譯進去的 話(大部份模組化的核心有你所需的東西),那麼你不需要重新編譯核心。 不 過仍十分建議你讀一讀此節,因為它包含了其它有用的資訊。 Linux 2.2.x 版核心 * 首先,你需要 2.2.x 版核心的原始程式碼。 * 如果這是你第一次編譯核心,不要害怕。 事實上,這非常容易而且涵蓋於 [37]Linux Kernel HOWTO。 * 以這個指令: tar xvzf linux-2.2.x.tar.gz -C /usr/src 將核心原始碼解 開至 /usr/src/, 其中 x 是 2.2 之後的修補層級(確定有一叫 linux 的目 錄或符號連結)。 * 加上適當的修補。因為新的修補檔不斷出來,所以細節不會包含在這裡。 最 新的資訊請參考 [38]IP Masquerade Resources。 * 有關編譯核心更進一步的介紹請參考 Kernel HOWTO 以及核心原始程式碼目 錄裡的 README 檔案。 * 這裡是你要編譯進去的選項: 下列選項要回答 YES: * Prompt for development and/or incomplete code/drivers CONFIG_EXPERIMENTAL - 這將讓你能選擇把實驗性的 IP Masquerade 程式碼編譯到核心裡去 * Enable loadable module support CONFIG_MODULES - 讓你能夠載入 ipmasq 相關模組如 ip_masq_ftp.o * Networking support CONFIG_NET * Network firewalls CONFIG_FIREWALL * TCP/IP networking CONFIG_INET * IP: forwarding/gatewaying CONFIG_IP_FORWARD * IP: firewalling CONFIG_IP_FIREWALL * IP: masquerading CONFIG_IP_MASQUERADE * IP: ipportfw masq support CONFIG_IP_MASQUERADE_IPPORTFW - 建議加入 * IP: ipautofw masquerade support CONFIG_IP_MASQUERADE_IPAUTOFW - 可選用 * IP: ICMP masquerading CONFIG_IP_MASQUERADE_ICMP - 支援偽裝 ICMP 封包,建議加入 * IP: always defragment CONFIG_IP_ALWAYS_DEFRAG - 高度建議使用 * Dummy net driver support CONFIG_DUMMY - 建議加入 * IP: ip fwmark masq-forwarding support CONFIG_IP_MASQUERADE_MFW - 可選用 注意: 這只不過是你跑 IP Masquerade 所需的項目,其它的按照你所需的來 選擇。 * 在編譯完核心之後,你需要編譯及安裝模組: make modules; make modules_install * 然後把下面幾行加到你的 /etc/rc.d/rc.local 檔案 (或其它你認為適當的 檔案)中以便於每次重開機時自動載入位於 /lib/modules/2.2.x/ipv4/ 的模 組: . . . /sbin/depmod -a /sbin/modprobe ip_masq_ftp /sbin/modprobe ip_masq_raudio /sbin/modprobe ip_masq_irc (以及其它的模組如 ip_masq_cuseeme, ip_masq_vdolive, 如果你有加上這些修補的話) . . . 重要: IP 轉送功能在 2.2.x 版核心中預設是關閉的,請確定你以此指令將 其打開: echo "1" > /proc/sys/net/ipv4/ip_forwarding 對於 Red Hat 的使用者來說,你可以把 /etc/sysconfig/network 中的 FORWARD_IPV4=false 改成 FORWARD_IPV4=true。 * 重新啟動 Linux 主機。 Linux 2.0.x Kernels * 首先,你需要核心的原始程式碼(最好是最新的 2.0.36 或以上的版本)。 * 如果這是你第一次編譯核心,不要害怕。 事實上,這非常容易而且涵蓋於 [39]Linux Kernel HOWTO。 * 以這個指令: tar xvzf linux-2.0.x.tar.gz -C /usr/src 將核心原始碼解 開至 /usr/src/, 其中 x 是 2.0 之後的修補層級(確定有一叫 linux 的目 錄或符號連結)。 * 加上適當的修補。因為新的修補檔不斷出來,所以細節不會包含在這裡。 最 新的資訊請參考 [40]IP Masquerade Resources。 * 有關編譯核心更進一步的介紹請參考 Kernel HOWTO 以及核心原始程式碼目 錄裡的 README 檔案。 * 這裡是你要編譯進去的選項: 下列選項要回答 YES: * Prompt for development and/or incomplete code/drivers CONFIG_EXPERIMENTAL - 這將讓你能選擇把實驗性的 IP Masquerade 程式碼編譯到核心裡去 * Enable loadable module support CONFIG_MODULES - 讓你能夠載入模組 * Networking support CONFIG_NET * Network firewalls CONFIG_FIREWALL * TCP/IP networking CONFIG_INET * IP: forwarding/gatewaying CONFIG_IP_FORWARD * IP: firewalling CONFIG_IP_FIREWALL * IP: masquerading (EXPERIMENTAL) CONFIG_IP_MASQUERADE - 這雖然是實驗性的,但卻是 *必須* 的 * IP: ipautofw masquerade support (EXPERIMENTAL) CONFIG_IP_MASQUERADE_IPAUTOFW - 建議加入 * IP: ICMP masquerading CONFIG_IP_MASQUERADE_ICMP - 支援偽裝 ICMP 封包,可選用 * IP: always defragment CONFIG_IP_ALWAYS_DEFRAG - 高度建議使用 * Dummy net driver support CONFIG_DUMMY - 建議加入 注意: 這只不過是你跑 IP Masquerade 所需的項目,其它的按照你所需的來 選擇。 * 在編譯完核心之後,你需要編譯及安裝模組: make modules; make modules_install * 然後把下面幾行加到你的 /etc/rc.d/rc.local 檔案 (或其它你認為適當的 檔案)中以便於每次重開機時自動載入位於 /lib/modules/2.0.x/ipv4/ 的模 組: . . . /sbin/depmod -a /sbin/modprobe ip_masq_ftp /sbin/modprobe ip_masq_raudio /sbin/modprobe ip_masq_irc (以及其它的模組如 ip_masq_cuseeme, ip_masq_vdolive, 如果你有加上這些修補的話) . . . 重要: IP 轉送功能在 2.0.34 之後的核心中預設是關閉的,請確定你以此指 令將其打開: echo "1" > /proc/sys/net/ipv4/ip_forwarding 對於 Red Hat 的使用者來說,你可以把 /etc/sysconfig/network 中的 FORWARD_IPV4=false 改成 FORWARD_IPV4=true。 * 重新啟動 Linux 主機。 3.2 指定私用網路的 IP 位址 因為所有其它機器都沒有正式指定的位址,必須有個正確的方式來分配位址給這 些機器。 節自 IP Masquerade FAQ: 有份 RFC (#1597, 現在可能已過時了) 是有關沒有與外界連線的網路該使用什麼 IP 位址。有三個數字區塊是特別為這個目的而保留的。其中一個我使用的是 192.168.1.n 到 192.168.255.n 之間的 255 Class-C 子網路。 節自 RFC 1597: 第三節: 私用位址空間 網際網路位址指定當局(IANA: Internet Assigned Numbers Authority) 已經保留下列三個區塊的 IP 位址空間給私用網路: 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255 我們將稱第一個區塊為 "24位元區塊",第二個為 "20位元區塊", 而第三個則稱為 "16位元區塊"。注意到第一個區塊就只是個 class A 網路號碼,第二個區塊則是連續的 16 個 class B 網路 號碼,而第三個區塊是一組 255 個連續的 class C 網路號碼。 所以,如果你要使用一個 class C 網路的話,那麼你的機器應該以 192.168.1.1, 192.168.1.2, 192.168.1.3, ..., 192.168.1.x 來名之。 192.168.1.1 通常是閘道這台機器,在此即你連上網際網路的 Linux 主機。注意 192.168.1.0 以及 192.168.1.255 分別為網路以及廣播位址,是保留的。避免在 你的機器上使用這些位址。 3.3 配置其它機器 除了為每台機器設定適當的 IP 位址之外,你也應該設定適當的閘道。一般說來 ,這是非常直接了當的。你只需簡單地輸入 Linux 主機的位址(通常是 192.168.1.1)作為閘道位址。 關於領域名稱服務,你可以加入任何 DNS 系統。最可能的應該是你 Linux 使用 的那一個。你也可以選擇性地加上任何網域字尾(domain suffix) 。 在你重新配置這些 IP 位址之後,記得重新啟動適當的服務或是重新開機。 下面的配置範例假設你使用一個 Class C 網路並且以 192.168.1.1 作為 Linux 主機的位址。請注意 192.168.1.0 及 192.168.1.255 是保留的。 配置 Windows 95 1. 如果你還沒有安裝網路卡以及界面驅動程式,現在做。 2. 到 '控制台/網路' 裡去。 3. 如果你的網路配置裡沒有 'TCP/IP 協定' 則加進去。 4. 在'TCP/IP 內容'中,選擇'IP 位址'並且把 IP 位址設定為 192.168.1.x,(1 /proc/sys/net/ipv4/ip_forwarding * 你必須使用 [66]ipchains 來處理 IP 偽裝及防火牆規則。 * 將整個設定配置的過程再做一次! 很多時候只是打錯字或是你忽略了一個愚 蠢的錯誤。 5.6 我已經升級到 2.0.30 後的核心,為什麼 IP Masquerade 還不能用? 假設你的 Linux 主機已經適當地連上網際網路與你的內部網路,有幾件事你必需 檢查: * 確定你已編譯並載入必要的特性與模組。參見前面章節的說明。 * 檢查 /usr/src/linux/Documentation/Changes 並確定你安裝了最低需求的 網路工具。 * 確定你打開了 IP 轉送機制。試著執行 echo "1" > /proc/sys/net/ipv4/ip_forwarding * 你必須使用 [67]ipfwadm 來處理 IP 偽裝及防火牆規則。要在 2.0.x 使用 ipchains 的話你必須加上修補。 * 將整個設定配置的過程再做一次! 很多時候只是打錯字或是你忽略了一個愚 蠢的錯誤。 5.7 我無法讓 IP Masquerade 運作! 有 Windows 平台的選擇嗎? 所以你要放棄一個可在最低硬體需求使用的免費,可靠,高效率的解決方案,而 想花錢在某個需要更高硬體,低效率且不可靠的未來? (嗯,是的,我真的遇過這 樣的經驗 ;-) ) 好吧,那是你的事。用搜尋引擎找找 MS Proxy Server, Wingate, 或看看 www.winfiles.com。 別說是我告訴你。 5.8 我檢查過我所有的設定了,仍無法讓 IP Masquerade 工作。我該怎麼辦? * 冷靜一下。給你自己一杯咖啡並休息一下,然後試試下面的建議。 * 看一下 [68]IP Masquerade Mailing List Archive, 大部份你要的答案已經 在等著你了。 * 把你的問題送到 IP Masquerade 通信論壇上,細節請看下一則問題。 請僅 有在你無法找到答案時才這麼做。 * 在 Linux 的網路相關討論群中發問。 * 寫信到 [69]ambrose@writeme.com 及 [70]dranch@trinnet.net。 同時送信 給我們你會有較佳的機會得到回應。David 回信的情況較佳,至於我的回應 時間嘛,不予置評。 * 再次檢查你的設定 :-) 5.9 我如何加入 IP Masquerade 通信論壇? 要加入 IP Masquerade 通信論壇的話,寫信到 [71]masq-subscribe@indyramp.com。 標題與信件內容將被忽略。這可使得你收到來自論壇的每一個訊息。 如果你需要 的話,歡迎你使用此方式。但如果可以的話,請改用精華區(digest)。 使用精華 區可減輕伺服器的負載。注意你只能使用你用來訂閱的帳號/位址發送信件。 想得到更多指令的說明,寫信到 [72]masq-help@tori.indyramp.com。 5.10 我想協助 IP Masquerade 的發展。我該怎麼做? 寫信到 [73]masq-dev-subscribe@tori.indyramp.com (或是精華區形式,使用 [74]masq-dev-digest-subscribe@tori.indyramp.com)。 加入 IP Masquerading DEVELOPERS 的通信論壇並請教那邊偉大的開發者。 別在那邊詢問與 IP Masquerade 發展無關的問題!!!! 5.11 在那裡可找到更多 IP Masquerade 的資訊? 你可在 David 及我提過的 [75]Linux IP Masquerade Resource 找到更多 IP Masquerade 的資訊。參見 6.2 小節。 你也可在 Indyramp Consulting 維護的 [76]The Semi-Original Linux IP Masquerading Web Site 找到更多資訊。這也是提供 IP Masquerade 通信論壇的 地方。 5.12 我想翻譯本文件成其它語言,我該怎麼做? 請先確定你想翻譯的語言還沒有其它人做過。 一份可取得的翻譯文件列表可從 [77]Linux IP Masquerade Resource 得到。 寫信給我到 [78]ambrose@writeme.com, 我會寄最新版的 SGML 原始檔給你。 5.13 這文件有點過時了,你還有在維護嗎?你能加進更多 ... 的資訊嗎? 有任何改善的計 劃嗎? 是的,本文件有被維護。因為兩份工作使我太忙而沒有太多時間放在這邊使我感 到內疚,我很抱歉。 然而,有了 David Ranch 加入本文件的維護,情況應有改 善。 如果你覺得某一主題應被加到文件中,請寫信給我及 David。 最好你可以提供該 資訊。如果合適的話我及 David 會把這資訊加到文件中。非常感謝你的貢獻。 我們也有一些新的點子與計劃來改進這份文件,像是包含不同網路設定的案例探 討, 更多關於安全性,ipchains 的使用,ipfwadm/ipchains 規則範例,更多的 常見問題與解答, 以及包含更多協定與埠號轉送的工具像是 masqadmin 等等。 如果你覺得你可以幫忙的話,請儘管做。謝謝。 5.14 我終於讓 IP Masquerade 能動了,好棒! 我想謝謝你們,我該怎麼做? 感謝這些發展者並感激他們所投入的時間與努力。寫信給我們並讓我們知道你有 多快樂。 向其它人介紹 Linux 並幫他們解決問題。 6. 其它 6.1 有用的資源 * [79]IP Masquerade Resource page 應有更多建立 IP Masquerade 的資訊。 * [80]IP masquerade mailing list archive 包含最近送到通信論壇上的信件 。 * 給核心 2.2.x 與 2.0.x 的 [81]Linux IP Masquerade mini HOWTO。 * 如果你用更舊的核心,請看 [82]IP Masquerade HOWTO for kernel 1.2.x * [83]IP masquerade FAQ 有某些一般的資訊。 * [84]Linux IPCHAINS HOWTO 及 [85]http://www.rustcorp.com/linux/ipchains/ 有許多關於 ipchains 使 用的資訊,並有 ipchains 的原始碼及二進位執行檔。 * [86]X/OS Ipfwadm page 包含 ipfwadm 套件的原始碼,執行檔,文件及其它 的資訊。 * 由 Lee Nevo 所維護的網頁 [87]可與 Linux IP masquerading 運作的應用 程式 提供提示與技巧使得應用程式能與 IP Masquerade 運作。 * The [88]LDP Network Administrator's Guide 這是新手嘗試設定網路的必 要資訊。 * [89]Trinity OS Doc, 一份關於 Linux 網路相當容易理解的指引。 * [90]Linux NET-3 HOWTO 也有許多關於 Linux 網路方面有用的資訊。 * [91]Linux ISP Hookup HOWTO 以及 [92]Linux PPP HOWTO 給你如何把 Linux 主機連上網際網路的相關資訊。 * [93]Linux Ethernet-Howto 有關設定執行乙太網路的區域網路很棒的資訊來 源。 * 你也可能對 [94]Linux Firewalling and Proxy Server HOWTO 有興趣。 * [95]Linux Kernel HOWTO 將會指引你編譯核心的過程。 * 其它的 [96]Linux HOWTOs 像是 Kernel HOWTO。 * 張貼到這個 USENET 新聞群組: [97]comp.os.linux.networking 6.2 Linux IP Masquerade 資源 [98]Linux IP Masquerade Resource 是一專門用來提供 Linux IP Masquerade 資訊的站台,也是由 David Ranch 及我來維護。 這邊有關於 IP Masquerade 最 新的資訊,可能也有未包含在本文件的其它資訊。 你可在下列地點找到 Linux IP Masquerade Resource: * [99]http://ipmasq.cjb.net/, 主站台,重導至 [100]http://www.tor.shaw.wave.ca/~ambrose/ * [101]http://ipmasq2.cjb.net/, 第二分站, 重導至 [102]http://www.geocities.com/SiliconValley/Heights/2288/ 6.3 感謝 * David Ranch, dranch@trinnet.net 協助維護本文件及 Linux IP Masquerade 資源網頁, ..., 族繁不及備載 :-) * Michael Owings, mikey@swampgas.com 提供關於 CU-SeeMe 的簡短說明文件。 * Gabriel Beitler, gbeitler@aciscorp.com on providing section 3.3.8 (setting up Novel) * Ed Doolittle, dolittle@math.toronto.edu 建議在 ipfwadm 加上 -V 選項以增加安全性。 * Matthew Driver, mdriver@cfmeu.asn.au on helping extensively on this HOWTO, and providing section 3.3.1 (setting up Windows 95) * Ken Eves, ken@eves.com on the FAQ that provides invaluable information for this HOWTO * Ed. Lott, edlott@neosoft.com for a long list of tested system and software * Nigel Metheringham, Nigel.Metheringham@theplanet.net on contributing his version of IP Packet Filtering and IP Masquerading HOWTO, which make this HOWTO a better and technical in-depth document section 4.1, 4.2, and others * Keith Owens, kaos@ocs.com.au on providing an excellent guide on ipfwadm section 4.2 on correction to ipfwadm -deny option which avoids a security hole, and clarified the status of ping over IP Masquerade * Rob Pelkey, rpelkey@abacus.bates.edu on providing section 3.3.6 and 3.3.7 (setting up MacTCP and Open Transport) * Harish Pillay, h.pillay@ieee.org on providing section 4.5 (dial-on-demand using diald) * Mark Purcell, purcell@rmcs.cranfield.ac.uk on providing section 4.6 (IPautofw) * Ueli Rutishauser, rutish@ibm.net on providing section 3.3.9 (setting up OS/2 Warp) * John B. (Brent) Williams, forerunner@mercury.net on providing section 3.3.7 (setting up Open Transport) * Enrique Pessoa Xavier, enrique@labma.ufrj.br on the bootp setup suggestion * developers of IP Masquerade for this great feature + Delian Delchev, delian@wfpa.acad.bg + Nigel Metheringham, Nigel.Metheringham@theplanet.net + Keith Owens, kaos@ocs.com.au + Jeanette Pauline Middelink, middelin@polyware.iaf.nl + David A. Ranch, trinity@value.net + Miquel van Smoorenburg, miquels@q.cistron.nl + Jos Vos, jos@xos.nl + Paul Russell, Paul.Russell@rustcorp.com.au + 還有其它我忘了提的(請讓我知道) * 所有送回饋及建議到通信論壇上的使用者,特別是那些報告文件上的錯誤以 及已支援與未支援的客戶端的。 * 如果我沒有包括某些使用者送給我的資訊我感到抱歉。有如此多的建議與想 法送到我這裡,但我只是沒有足夠的時間去確定或者我不小心丟了。 我正盡 我最大的努力整合所有送給我的資訊到這份文件裡。感謝你的辛勞,而我也 希望你能體諒我的情況。 6.4 參考資料 * Ken Eves 的 IP masquerade 常見問答集 * Indyramp Consulting 之 IP masquerade 通信論壇 * X/OS 的 Ipfwadm 網頁 * 各個關於網路的 Linux HOWTOs References 1. mailto:ambrose@writeme.com 2. mailto:dranch@trinnet.net 3. http://www.phys.ntu.edu.tw/~cwhuang/pub/ 4. mailto:cwhuang@linux.org.tw 5. mailto:ambrose@writeme.com 6. mailto:dranch@trinnet.net 7. http://ipmasq.cjb.net/ 8. http://ipmasq.cjb.net/ 9. http://ipmasq.cjb.net/ 10. http://ipmasq2.cjb.net/ 11. http://ipmasq.cjb.net/index.html#mirror 12. http://ipmasq.cjb.net/ 13. http://www.kernel.org/ 14. http://metalab.unc.edu/mdw/HOWTO/NET-3-HOWTO.html 15. http://metalab.unc.edu/mdw/LDP/nag/nag.html 16. http://www.ecst.csuchico.edu/~dranch/LINUX/TrinityOS.wri 17. http://metalab.unc.edu/mdw/HOWTO/ISP-Hookup-HOWTO.html 18. http://metalab.unc.edu/mdw/HOWTO/PPP-HOWTO.html 19. http://metalab.unc.edu/mdw/HOWTO/mini/DHCP.html 20. http://metalab.unc.edu/mdw/HOWTO/mini/Cable-Modem.html 21. http://www.rustcorp.com/linux/ipchains/ 22. http://www.rustcorp.com/linux/ipchains/ 23. http://ipmasq.cjb.net/ 24. http://ipmasq.cjb.net/ 25. http://www.kernel.org/ 26. http://www.pi.se/blox/modules/modules-2.0.0.tar.gz 27. http://metalab.unc.edu/mdw/HOWTO/NET-3-HOWTO.html 28. http://metalab.unc.edu/mdw/LDP/nag/nag.html 29. http://www.ecst.csuchico.edu/~dranch/LINUX/TrinityOS.wri 30. http://metalab.unc.edu/mdw/HOWTO/ISP-Hookup-HOWTO.html 31. http://metalab.unc.edu/mdw/HOWTO/PPP-HOWTO.html 32. http://metalab.unc.edu/mdw/HOWTO/mini/DHCP.html 33. http://metalab.unc.edu/mdw/HOWTO/mini/Cable-Modem.html 34. ftp://ftp.xos.nl/pub/linux/ipfwadm/ipfwadm-2.3.0.tar.gz 35. http://www.xos.nl/linux/ipfwadm/ 36. http://ipmasq.cjb.net/ 37. file://localhost/tmp/Kernel-HOWTO.html 38. http://ipmasq.cjb.net/ 39. file://localhost/tmp/Kernel-HOWTO.html 40. http://ipmasq.cjb.net/ 41. file://localhost/tmp/zh-sgmltools.18889/ftp.novell.com/pub/updates/unixconn/lwp5 42. mailto:ambrose@writeme.com 43. mailto:dranch@trinnet.net 44. http://metalab.unc.edu/mdw/HOWTO/IPCHAINS-HOWTO.html 45. http://152.19.254.81/mdw/linux.html 46. http://ipmasq.cjb.net/ 47. http://dijon.nais.com/~nevo/masq/ 48. http://ipmasq.cjb.net/ 49. http://dijon.nais.com/~nevo/masq/ 50. http://ipmasq.cjb.net/ 51. http://www.rustcorp.com/linux/ipchains/ 52. http://metalab.unc.edu/mdw/HOWTO/IPCHAINS-HOWTO.html 53. http://home.pacific.net.sg/~harish/diald.config.html 54. ftp://ftp.netis.com/pub/members/rlynch/ipautofw.tar.gz 55. mailto:mikey@swampgas.com 56. http://cu-seeme.cornell.edu/ 57. http://www.wpine.com/ 58. http://www.indyramp.com/masq/ 59. http://ipmasq.cjb.net/ 60. ftp://ftp.swampgas.com/pub/cuseeme/ip_masq_cuseeme.c 61. mailto:mikey@swampgas.com 62. http://www.swampgas.com/vc/vc.htm 63. mailto:ambrose@writeme.com 64. mailto:dranch@trinnet.net 65. http://dijon.nais.com/~nevo/masq/ 66. http://www.rustcorp.com/linux/ipchains/ 67. http://www.xos.nl/ 68. http://home.indyramp.com/lists/masq/ 69. mailto:ambrose@writeme.com 70. mailto:dranch@trinnet.net 71. mailto:masq-subscribe@indyramp.com 72. mailto:masq-help@tori.indyramp.com 73. mailto:masq-dev-subscribe@tori.indyramp.com 74. mailto:masq-dev-digest-subscribe@tori.indyramp.com 75. http://ipmasq.cjb.net/ 76. http://www.indyramp.com/masq/ 77. http://ipmasq.cjb.net/ 78. mailto:ambrose@writeme.com 79. http://ipmasq.cjb.net/ 80. http://www.indyramp.com/masq/list/ 81. http://ipmasq.cjb.net/ipmasq-HOWTO.html 82. http://ipmasq.cjb.net/ipmasq-HOWTO-1.2.x.txt 83. http://www.indyramp.com/masq/ip_masquerade.txt 84. http://metalab.unc.edu/mdw/HOWTO/IPCHAINS-HOWTO.html 85. http://www.rustcorp.com/linux/ipchains/ 86. http://www.xos.nl/linux/ipfwadm/ 87. http://dijon.nais.com/~nevo/masq/ 88. http://metalab.unc.edu/mdw/LDP/nag/nag.html 89. http://www.ecst.csuchico.edu/~dranch/LINUX/TrinityOS.wri 90. http://metalab.unc.edu/mdw/HOWTO/NET-3-HOWTO.html 91. http://metalab.unc.edu/mdw/HOWTO/ISP-Hookup-HOWTO.html 92. http://metalab.unc.edu/mdw/HOWTO/PPP-HOWTO.html 93. http://metalab.unc.edu/mdw/HOWTO/Ethernet-HOWTO.html 94. http://metalab.unc.edu/mdw/HOWTO/Firewall-HOWTO.html 95. http://metalab.unc.edu/mdw/HOWTO/Kernel-HOWTO.html 96. http://metalab.unc.edu/mdw/HOWTO/HOWTO-INDEX-3.html 97. news:comp.os.linux.networking 98. http://ipmasq.cjb.net/ 99. http://ipmasq.cjb.net/ 100. http://www.tor.shaw.wave.ca/~ambrose/ 101. http://ipmasq2.cjb.net/ 102. http://www.geocities.com/SiliconValley/Heights/2288/