原始文件:Linux IP Masquerade mini HOWTO Ambrose Au, achau@wwonline.com v1.00, 1 January 1997 檔案敘述:IP 偽裝簡易使用說明(偷料版) 文件編號:LRG.LDTP.mHOWTO.002 翻譯日期:1997/04/14 翻譯維護:asdchen@ms1.hinet.net O ---------------------------------------------------------------X--- O 這份文件描述如何在一台 Linux 主機上起動 IP Masquerade 功能 ,允許沒有註冊網際網路 IP 位址的連線電腦經由你的 Linux 機器 連接網際網路。 1. 簡介 1.1. 簡介 這份文件描述如何在一台 Linux 主機上起動 IP Masquerade 功能 ,允許沒有註冊網際網路 IP 位址的連線電腦經由你的 Linux 機器 連接網際網路。你的機器可能是以乙太網路連接 Linux, 也可能是其 它種類,像是撥接的點對點(ppp) 連線。這份文件將會強調乙太網路 連線的情況,因為這應該是最常見的案例。 這份文件傾向給使用 2.0.x 核心的使用者參考,不包含發展中 的 2.1.x 核心。 1.2. 前言,回饋&參考資訊 首先,我想讓你知道我不是對 IP masquerade 了解非常透徹或很有 經驗的人。 我發現新手在較新的核心上,像是 2.x 核心,設定 IP Masguerade 時非常困惑。雖然有份常見問答集(FAQ) 與郵遞列表(mailing list) ,然而沒有一份這方面的專門文件;而且在郵遞列表上有些對於這樣 一份說明文件(HOWTO) 的請求。所以,我決定撰寫它給所有新手作為 一個起點,並且希望能拋磚引玉,作為那些非常了解它的使用者建立 文件的基礎。如果你認為我做的不好,不要在意告訴我,這樣我能把 它做得更好。 這份文件很多是以原先 Ken Eves 的常見問答集以及 ip_masq 郵遞 列表裡許多有幫助的訊息作為基礎。特別感謝 Mr. Matthew Driver 在郵遞列表中的訊息引發我設立 ip_masq 的靈感以及最後撰寫了這 份文件。 如果我的任何資訊有誤或遺漏任何資訊,請別介意把任何回饋或意見 寄到 achau@wwonline.com 來。你的無價回饋將影響未來的這份說明 文件! 這份說明文件是想作為讓你的 IP Masquerade 能在最短時間內運作 的快速指引。最新的消息以及資訊可以在我所維護的 IP Masquerade Resource 網頁上找到。如果你有任何關於 IP Masquerade 的技術 問題,請加入 IP Masquerade 郵遞列表而別寄電子郵件給我,因為 我的時間有限,而且 IP_ Masq 的發展者們更有能力回答你的問題。 這份文件最新的版本可以在 IP Masquerade Resource 上找到,裡面 也有 HTML 以及 postscript 的版本。 。 http://www.wwonline.com/~achau/ipmasq/ 。 http://www.hwy401.com/achau/ipmasq/ 。 http://www.leg.uct.ac.za/mirrors/ipmasq/ 。 http://130.89.230.132/linux/ipmasq/ 1.3. 版權&宣告 這份文件版權屬於 Ambrose Au, 而且是免費的文件。你可以在 GNU 的通用公開授權方式下散播它。 這份文件中的資訊跟其它內容都已經盡了我最大的努力。無論如何, ip_masq 是實驗性的,而且我也可能會犯些錯誤;所以你應該自己決 定是不是要照著這份文件中的資訊做。 沒有人會為使用這份文件中的資訊所造成的電腦損壞或其它損失負責 。i.e. 作者不對依照這份文件內容動作所造成的損害負責。 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 IS 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 仍然在實驗階段。無論如何,核心從 1.3.x 開始已 經內建這項支援。許多個人甚至公司正在使用它,而有滿意的結果。 瀏覽網頁以及遠端簽入(telnet)已經有回報表示可以在 ip_masq 上 運作。檔案傳輸(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 or AS225-stack 的系統。 2.3. 誰可以從 IP Masquerade 中獲益? 。如果你有台連接網際網路的 Linux 主幾,而且 。如果你有一些執行 TCP/IP 連接到 Linux 機器的電腦在區域網路 上,以及/或是 。如果你的 Linux 主機有一個以上的數據機並且作為 PPP 或 SLIP 伺服器連接其它電腦,它們 。這些”其它”機器沒有正式指定的 IP 位址。(這些機器從這裡開 始以後就稱為”其它”機器) 。而且當然,如果你希望這些”其它”機器不必花額外的費用就能連 上網際網路:) 2.4. 誰不需要 IP Masquerade? 。如果你的機器是單獨一台(stand-alone) 連接網際網路的 Linux 主機,那麼執行 ip_masq 沒什麼意義,或者 。如果你的”其它”機器擁有正式指定的 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-> 在這個例子中我們考慮 4 台電腦系統(想必遙遠的右方還有些東西 讓你到網際網路的 IP 連線能夠連接,以及一些(遠超過這一頁)在 網際網路上你有興趣交換資訊的東西)。這個 Linux 系統偽裝閘道 是 abox, bbox, cbox 內部網路機器連接網際網路的偽裝閘道。內部 網路使用指定的私用(private) 網路位址,在這個案例中是 class C 網路 192.168.1.0, linux 機器擁有位址 192.168.1.1 而’其它’ 系統也擁有此網路上的位址。 這三台機器 abox, bbox 以及 cbox (它們可以執行任何作業系統- 像是 Windows95, Macintosh MacTCP 或甚至是另一台 linux 機器 ,只要它們能了解 IP )可以連線到網際網路上的其它機器去,然而 這個偽裝系統閘道轉換它們所有的連線所以這些連線看起來像是原本 即從偽裝閘道本身發出的,而且還安排偽裝連線傳回的資料轉回原先 的系統-所以在內部網路上的系統看到的是直接通往網際網路的遞送 路徑而且不知道他們的資料被偽裝過。 2.6. 在 Linux 2.x 上使用 IP Masquerade 的需求 。核心 2.0.x 的原始程式碼可以從這裡取得 ftp://ftp.funet.fi/pub/Linux/kernel/src/v2.0/ (是的,你將得配合加入一些支援來編譯你的核心.... 建議最新的穩定版本) 。可載入核心模組,最好是 2.0.0 或更新的版本,可以從這裡取得 http://www.pi.se/blox/modules/modules-2.0.0.tar.gz (至少需要 modules-1.3.57 ) 。設定良好的 TCP/IP 網路 涵蓋於 Linux NET-2 HOWTO 及網路 管理者指引(Network Administrator's Guide) 。你的 Linux 主機的網際網路連線 涵蓋於 Linux ISP Hookup HOWTO , Linux PPP HOWTO 以及 Linux PPP-over-ISDN mini-HOWTO 。Ipfwadm 2.3 或更新的版本可以從這裡取得 ftp://ftp.xos.nl/pub/linux/ipfwadm/ipfwadm-2.3.tar.gz 在 Linux Ipfwadm 網頁上有更多關於版本的資訊 。你可以選擇性地應用一些 IP Masquerade 修補檔打開其它功能。 從這裡可以取的更多資訊, IP Masquerade Resources (這些修補檔適用於 所有的 2.0.x 核心) 3. IP Masquerade 的設定 如果你的私用網路裡有任何重要的資訊,在使用 IP Masquerade 之前請三思。這可能成為你通往網際網路的閘道,反之亦然,也 可能成為另一邊的世界進入你私用網路的途徑。 3.1. 編譯核心加入 IP Masquerade 的支援 。首先,你需要核心的原始程式碼(最好是穩定的 2.0.0 版或以上 的核心) 。如果這是你第一次編譯核心,不要害怕。事實上,這非常容易而且 涵蓋於 Linux Kernel HOWTO 。使用指令: tar zxvf linux-2.0.x.tar.gz -C /usr/src 把核心的 原始程式碼解至 /usr/src/ , 其中 x 是 2.0 之後的修補層級 (確定有個稱為 linux 的目錄或符號鏈結) 。加上適當的修補。因為新的修補檔不斷出來,所以細節不會包含在 這裡。最新的資訊請參考 IP Masquerade Resources 。有關編譯核心更進一步的介紹請參考 Kernel HOWTO 以及核心原始 程式碼目錄裡的 README 檔案 。這裡是你要編譯進去的選項: 下列選項要回答 YES * Prompt for development and/or incomplete code/drivers CONFIG_EXPERIMENTAL - 這將讓你能選擇把實驗性的 ip_masq 程式碼編譯到核心裡去 * 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: always defragment CONFIG_IP_ALWAYS_DEFRAG - 高度建議 * Dummy net driver support CONFIG_DUMMY - 建議使用 注意: 這些只是 ip_masq 所需要的,你還需選擇其它任何你的設定 需要的選項。 。編譯核心之後,你應該編譯並安裝模組: 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_masq 之前手動地載入它,但是不要使用 kerneld 來載入,這是不行的! 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.x 分別為網路以及廣播 位址,是保留的。避免在你的機器上使用這些位址。 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 是保留的。 3.3.1. 配置 Windows 95 1.如果你還沒有安裝網路卡以及界面驅動程式,現在做。 2.到’控制台/網路’裡去。 3.如果你的網路配置裡沒有’TCP/IP 協定’則加進去。 4.在’TCP/IP 內容’中,選擇’IP 位址’並且把 IP 位址設定為 192.168.1.x,(1 VDOLive Windows, 配合 vdolive 修補檔 注意: 即使不是由你呼叫別人,使用 ipautofw 套件某些客戶端軟體 像是 IPhone 以及 Powwow 可能還是可以運作(參閱 4.6 節) 其它客戶端軟體 NCSA Telnet 2.3.08 DOS, 包含 telnet, ftp, ping 等等的一組套件。 PC-anywhere for windows 2.0 MS-Windows, 經由 TCP/IP 遠端控制 PC ,只有在作為客戶端 而非主機端的情形下才能運作 Socket Watch 使用 ntp - 網路時間協定 Linux net-acct package Linux, 網路帳號管理套件 4.3.2. 無法使用的客戶端軟體 Intel Internet Phone Beta 2 可以連上但聲音只能單向(往外)傳送 Intel Streaming Media Viewer Beta 1 無法連上伺服器 Netscape CoolTalk 無法連接對方 talk,ntalk 這將不會運作 - 需要撰寫一份核心代理程式。 WebPhone 目前無法運作(它做了不合法的位址假設)。 X 沒有測試過,但我想除非有人建立一套 X 代理程式否則它無 法運作,這可能是 masquerading 程式碼之外的一個外部程式 。一個讓它運作的方式是使用 ssh 作為鏈結並且使用其內部 的 X 代理功能來執行! 4.3.3. 已測試過可以作為”其它”機器的平臺/作業系統 。 Linux 。 Solaris 。 Windows 95 。 Windows NT (both workstation and server) 。 Windows For Workgroup 3.11 (with TCP/IP package) 。 Windows 3.1 (with Chameleon package) 。 Novel 4.01 Server 。 OS/2 (including Warp v3) 。 Macintosh OS (with MacTCP or Open Transport) 。 DOS (with NCSA Telnet package, DOS Trumpet works partially) 。 Amiga (with AmiTCP or AS225-stack) 。 VAX Stations 3520 and 3100 with UCX (TCP/IP stack for VMS) 。 Alpha/AXP with Linux/Redhat 。 SCO Openserver (v3.2.4.2 and 5) 。 IBM RS/6000 running AIX 。 (誰還測試過其它平臺? ) 4.4. IP Firewall Administration(ipfwadm) 這一節提供關於 ipfwadm 更深入的使用指引 這是一個給在固定 PPP 位址之 PPP 連線後面的防火牆/偽裝系統 使用的設定。信賴(trusted) 界面為 192.168.255.1, PPP 界面已經 修改過以避免犯錯 :) 。我分別列出每一個進入(incoming)以及送出 (outgoing)界面來抓出變更遞送路徑(stuffed routing) 以及/或是 偽裝(masquerading)等等這些個 IP spoofing 技巧。同時任何沒有 明確允許的東西都是禁止的。 #!/bin/sh # # /etc/rc.d/rc.firewall, 定義防火牆配置,從 rc.local 執行。 # PATH=/sbin:/bin:/usr/sbin:/usr/bin # 測試用,等待一段時間然後清除所有的防火牆規則。 # 如果你希望防火牆十分鐘之後自動關閉就取消下列幾行的註解。 # (sleep 600; \ # ipfwadm -I -f; \ # ipfwadm -I -p accept; \ # ipfwadm -O -f; \ # ipfwadm -O -p accept; \ # ipfwadm -F -f; \ # ipfwadm -F -p accept; \ # ) & # 進入偽裝閘道的設定,更新以及設定拒絕的策略(policy)。事實上 # 預設的策略沒什麼關係,因為原先就希望拒絕以及記錄所有規則 ipfwadm -I -f ipfwadm -I -p deny # 偽裝閘道的本地(local) 界面,區域網路裡的機器,允許連往任何 # 地方 ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0 # 偽裝閘道的遠端(remote)界面,聲稱是區域網路裡的機器,IP spoofing # 拒絕 ipfwadm -I -a deny -V your.static.PPP.address -S 192.168.0.0/16 -D 0.0.0.0/0 -o # 偽裝閘道的遠端界面,任何來源,允許送往固定 (permanent) PPP # 位址 ipfwadm -I -a accept -V your.static.PPP.address -S 0.0.0.0/0 -D your.static.PPP.address/32 # 回授(loopback)界面是允許的 ipfwadm -I -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0 # 捕捉所有規則,任何其它的進入方式都會被拒絕並記錄。可惜沒有 # 記錄用的選項但這可以代替 ipfwadm -I -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o # 送出偽裝閘道的設定,更新以及設定拒絕的策略(policy)。事實上 # 預設的策略沒什麼關係,因為原先就希望拒絕以及記錄所有規則 ipfwadm -O -f ipfwadm -O -p deny # 本地界面,允許任何來源送出至區域網路 ipfwadm -O -a accept -V 192.168.255.1 -S 0.0.0.0/0 -D 192.168.0.0/16 # 遠端界面送出至區域網路,stuffed routing ,拒絕 ipfwadm -O -a deny -V your.static.PPP.address -S 0.0.0.0/0 -D 192.168.0.0/16 -o # 區域網路的機器從遠端界面送出,stuffed masquerading,拒絕 ipfwadm -O -a deny -V your.static.PPP.address -S 192.168.0.0/16 -D 0.0.0.0/0 -o # 區域網路的機器從遠端界面送出,stuffed masquerading,拒絕 ipfwadm -O -a deny -V your.static.PPP.address -S 0.0.0.0/0 -D 192.168.0.0/16 -o # 任何其它遠端界面送出的東西都是允許的 ipfwadm -O -a accept -V your.static.PPP.address -S your.static.PPP.address/32 -D 0.0.0.0/0 # 回授(loopback)界面是允許的 ipfwadm -O -a accept -V 127.0.0.1 -S 0.0.0.0/0 -D 0.0.0.0/0 # 捕捉所有規則,任何其它的送出方式都會被拒絕並記錄。可惜沒有 # 記錄用的選項但這可以代替 ipfwadm -O -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o # 偽裝閘道的轉送設定,更新以及設定拒絕的策略(policy)。事實上 # 預設的策略沒什麼關係,因為原先就希望拒絕以及記錄所有規則 ipfwadm -F -f ipfwadm -F -p deny # 偽裝區域網路的機器從本地界面送出至任何地方的資料 ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0 # 捕捉所有規則,任何其它的轉送方式都會被拒絕並記錄。可惜沒有 # 記錄用的選項但這可以代替 ipfwadm -F -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o 你可以使用 -I, -O 或是 -F 來控制到某特定節點的流量。記得這些 規則集是由上往下掃描的而 -a 代表”附加(append)”到目前現有的 規則集中所以任何限制必須在全域(global)規則之前出現。例如(沒 測試過):- 使用 -I 規則。可能是速度最快的但是它只能阻止區域網路裡的機器 ,防火牆本身仍然可以存取”禁止”的節點。當然你可能想允許這樣 的組合。 # 拒絕並記錄本地界面,區域網路裡的機器通往 204.50.10.13 ipfwadm -I -a reject -V 192.168.255.1 -S 192.168.0.0/16 -D 204.50.10.13/32 -o # 本地界面,區域網路裡的機器,允許通往任何地方 ipfwadm -I -a accept -V 192.168.255.1 -S 192.168.0.0/16 -D 0.0.0.0/0 使用 -O 規則。最慢,因為封包首先經過偽裝但這個規則阻止防火牆 存取禁止的節點。 # 拒絕並記錄送出至 204.50.10.13 的資料 ipfwadm -O -a reject -V your.static.PPP.address -S your.static.PPP.address/32 -D 204.50.10.13/32 -o # 允許任何其它遠端界面送出的東西 ipfwadm -O -a accept -V your.static.PPP.address -S your.static.PPP.address/32 -D 0.0.0.0/0 # 使用 -F 規則。可能比 -I 慢而這仍然只能阻止偽裝的機器(例如 # 內部的機器),防火牆仍然可以取得禁止的節點。 # 拒絕並記錄 PPP 界面送出從區域網路到 204.50.10.13 的資料。 ipfwadm -F -a reject -W ppp0 -S 192.168.0.0/16 -D 204.50.10.13/32 -o # 偽裝本地界面從區域網路送出至任何地方的資料。 ipfwadm -F -a masquerade -W ppp0 -S 192.168.0.0/16 -D 0.0.0.0/0 不需要有個特定的規則來允許 192.168.0.0/16 通往 204.50.11.0 , 這涵蓋於全域規則中。 有一種以上的方法可以對界面設定上述規則。例如可以使用 -W eth0 來取代 -V 192.168.255.1 ,可以使用 -W ppp0 來取代 -V your.static.PPP.address 。個人的選擇最重要。 4.5. IP Masquerade 以及隨選撥接(Demand-Dial-Up) 1.如果你想把網路設定成自動撥接上網際網路,那麼 diald demand 撥接套件將會是很棒的工具。 2.要設定 diald, 請查看 Setting Up Diald for Linux 網頁 3.一但 diald 以及 IP masq 設定完成,你可以在任何客戶端機器 上啟動 web, telnet 或是 ftp 連線。 4.Diald 將會偵測到進入系統的請求,然後撥接到你的 ISP 並建立 連線。 5.第一次連線將會發生逾時(timeout) 的情形。如果你使用類比式的 數據機那這是無可避免的。建立數據機連結以及 PPP 連線所花費 的時間將會使你的客戶端軟體不耐。如果你使用 ISDN 連線那這是 可以避免的。你得做的只是結束客戶端軟體現行的程序再重新啟動 即可。 4.6. IPautofw 封包轉送程式 IPautofw是 一個給 Linux masquerading 使用的一般性 TCP 及 UDP 轉送程式。 一般使用需要 UDP 的套件的時候,需要載入特定的 ip_masq 模組 ;ip_masq_raudio, ip_masq_cuseeme,... Ipautofw 以更一般化的 方式運作,它將會轉送包含這些應用程式特定模組都不會轉送的任何 資料流型態。如果沒有正確地管理這可能造成安全上的漏洞。 5. 其它 5.1. 獲得協助 。IP Masquerade Resource page 應該有足夠的資訊 設定 IP Masquerade 這一頁的另一個 站臺 。加入 IP masquerade 郵遞列表(建議) 要訂閱的話,寄封標題為 "subscribe"(不包含引號)的郵件到 masq-request@indyramp.com 要取消訂閱的話,寄封標題為 "unsubscribe"(不包含引號)的郵 件到 masq-request@indyramp.com 要使用這個郵遞列表獲得協助的話,寄封標題為 "archive help" 或 "archive dir"(不包含引號)的郵件到 masq-request@indyramp.com 。IP masquerade 郵遞列表檔案 包含所有過去送到這個 郵遞列表的訊息。 。This Linux IP Masquerade mini HOWTO for kernel 2.x(如果你使用 1.3.x or 2.x 的核心) 。IP Masquerade HOWTO for kernel 1.2.x 如果你使用比較舊的核心 。IP masquerade FAQ 有些一般性的資訊 。X/OS Ipfwadm page 包含 關於 ipfwadm 套件的原始程式碼,執行檔,文件,以及其它資訊 。LDP Network Administrator's Guide 這是新手嘗試設定網路的 必要資訊 。Linux NET-2 HOWTO 也有許 多關於 Linux 網路方面有用的資訊 。Linux ISP Hookup HOWTO 以及 Linux PPP HOWTO 給你如何 把 Linux 主機連上網際網路的相關資訊 。Linux Ethernet-Howto 有關設定執行乙太網路的區域網路很棒的資訊來源 。你也可能對 Linux Firewalling and Proxy Server HOWTO 有興趣 。Linux Kernel HOWTO 將會指引你編譯核心的過程 。其它 Linux HOWTOs 像是 Kernel HOWTO 。張貼到這個 USENET 新聞群組: comp.os.linux.networking 5.2. 感謝 。 Gabriel Beitler, gbeitler@aciscorp.com on providing section 3.3.8 (setting up Novel) 。 Ed Doolittle, dolittle@math.toronto.edu on suggestion to -V option in ipfwadm command for improved security 。 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_masq 。 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) 。 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 。 all users sending feedback and suggestion to the mailing list, especially the ones who reported errors in the document and the clients that are supported and not supported 5.3. 參考 。 Ken Eves 的 IP masquerade 常見問答集 。 Indyramp Consulting 之 IP masquerade 郵遞列表 。 X/OS 的 Ipfwadm 網頁 。 各個關於網路的 Linux HOWTOs  -- ※ Origin: 暨南水沙連站 ◆ From: 203.71.127.191