Linux IP Masquerade mini HOWTO 中譯版(2)

火星人 @ 2014-03-12 , reply:0
←手機掃碼閱讀

  Linux IP Masquerade mini HOWTO 中譯版(2) -lemon
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
如果你還沒有安裝網路卡以及界面驅動程式,現在做. 到 '控制台/網路' 里去. 如果你的網路配置里沒有 'TCP/IP 協定' 則加進去. 在'TCP/IP 內容'中,選擇'IP 位址'並且把 IP 位址設定為 192.168.1.x,(1在'通訊閘'中加入 192.168.1.x 作為你的閘道. 在'DNS 配置'/'DNS 伺服器'下加入你的 Linux 主機使用的 DNS (通常可以在 /etc/resolv.conf 里找到).你可以選擇性地加入適當的網域字尾搜尋順序. 不要變更原先的其它設定,除非你知道自己在做什麽. 在所有的對話盒中按下'確定'並且重新啟動系統. 測試網路連線,Ping 你的 linux 主機: 從'開始/執行',輸入 ping 192.168.1.1 (這只是區域網路連線測試,你現在還不能 ping 外面的世界.) 你可以在 windows 目錄下選擇性地建立一個 HOSTS 檔案,如此你可以使用區域網路里的機器名稱.在 windows 目錄里有個稱為 HOSTS.SAM 的□例.
配置 Windos for Workgroup 3.11
如果你還沒有安裝網路卡以及界面驅動程式,現在做. 如果你還未安裝 TCP/IP 32b 套件的話就裝吧. 在 'Main'/'Windows Setup'/'Network Setup', 按下 'Drivers'. 將 'Network Drivers' 里的 'Microsoft TCP/IP-32 3.11b' 反白,按下 'Setup'. 設定 IP 位址於 192.168.1.x (1 < x < 255), 然後設定 Subnet Mask 為 255.255.255.0 以及 Default Gateway 為 192.168.1.1. 不要開啟 'Automatic DHCP Configuration' 並在 'WINS Server' 中放入任何東西,除非你在一 Windows NT 網域中而且你知道你在做什麽. 按下 'DNS', 填入在 3.3.1 小節中步驟六提到的資訊,然後在你完成後按下 'OK' 鈕. 按下 'Advanced', 如果你使用類似 3.3.1 小節步驟十中提到主機檔案,勾選 'Enable DNS for Windows Name Resolution' 及 'Enable LMHOSTS lookup'. 在所有對話盒中按 'OK' 並重新啟動系統. Ping 一下你的 Linux 主機以測試網路連接: 在 'File/Run' 輸入: ping 192.168.1.1 (這隻不過是區域網路的連接測試,你還不能 ping 到外面的世界).
Configuring Windows NT
如果你還沒有安裝網路卡以及界面驅動程式,現在做. 到 'Main'/'Control Panel'/'Network'. 如果你還沒裝 TCP/IP 服務的話從 'Add Software' 選單中加入 TCP/IP 協定及相關的部份. 在 'Network Software and Adapter Cards' 里將 'Installed Network Software' 選擇盒中的 'TCP/IP 協定' 反白. 在 'TCP/IP Configuration',選擇適當的界面驅動程式,例如,[1]Novell NE2000 Adapter.然後設定 IP 位址於 192.168.1.x (1 < x < 255),然後設定 Subnet Mask 為 255.255.255.0 以及 Default Gateway 為 192.168.1.1. 不要開啟 'Automatic DHCP Configuration' 並在 'WINS Server' 中放入任何東西,除非你在一 Windows NT 網域中而且你知道你在做什麽. 按下 'DNS', 填入在 3.3.1 小節中步驟六提到的資訊,然後在你完成後按下 'OK' 鈕. 按下 'Advanced', 如果你使用類似 3.3.1 小節步驟十中提到主機檔案,勾選 'Enable DNS for Windows Name Resolution' 及 'Enable LMHOSTS lookup'. 在所有對話盒中按 'OK' 並重新啟動系統. Ping 一下你的 Linux 主機以測試網路連接: 在 'File/Run' 輸入: ping 192.168.1.1 (這隻不過是區域網路的連接測試,你還不能 ping 到外面的世界).
配置 UNIX 系列的系統
如果你還未安裝你的網路卡並以適當的界面驅動程式重新編譯你的核心,現在就做吧. 安裝 TCP/IP 網路,像是 nettools 套件,如果你還沒裝的話. 將 IPADDR 設為 192.168.1.x (1 < x < 255), 然後將 NETMASK 設為 255.255.255.0, GATEWAY 設為 192.168.1.1, 以及 BROADCAST 設為 192.168.1.255. 例如,在 Red Hat Linux 系統上你可以編輯 /etc/sysconfig/network-scripts/ifcfg-eth0,或直接從 Control Panel 里做. (在 SunOS, BSDi, Slackware Linux, 等中都不相同...) 將你的名稱伺服器及領域搜尋字尾加到 /etc/resolv.conf. 依據你的設定你可能要更新你的 /etc/networks 檔案. 重新啟動適當的服務,或簡單的重新開機. 發出 ping 指令: ping 192.168.1.1 以測試到你的 gateway 機器的連接性. (這隻不過是區域網路的連接測試,你還不能 ping 到外面的世界).
配置使用 NCSA Telnet 套件的 DOS 機器
如果你還沒有安裝網路卡,現在做. 載入適當的封包驅動程式.對於 NE2000 卡來說,如果你的卡設定為 IRQ 10 及硬體位址於 0x300,用 nwpd 0x60 10 0x300. 建立一新目錄,然後解開 NCSA Telnet 套件: pkunzip tel2308b.zip 使用文字編輯器打開 config.tel 檔案. 設定 myip=192.168.1.x (1 < x < 255), 以及 netmask=255.255.255.0. 在本例子中,你應該設定 hardware=packet, interrupt=10, ioaddr=60. 你至少要有一單獨的機器設定為 gateway,也就是 Linux 主機: name=default host=yourlinuxhostname hostip=192.168.1.1 gateway=1 還要有另外一個指定領域名稱服務: name=dns.domain.com ; hostip=123.123.123.123; nameserver=1 注意: 用你 Linux 主機使用的 DNS 的適當資訊來取代. 儲存你的 config.tel 檔案. Telnet 到你的 Linux 主機以測試網路連接: telnet 192.168.1.1
配置執行 MacTCP 的 MacOS 機器
如果你還沒為你的乙太網路轉接器安裝適當的驅動程式,最好現在就作. 打開 MacTCP control panel,選擇適當的網路驅動程式(Ethernet, 而非 EtherTalk) 並按下 'More...' 鈕. 在 'Obtain Address:', 按 'Manually'. 在 'IP Address:' 下,從彈出選單中選擇 class C.忽略對話盒中的其它部份. 在 'Domain Name Server Information:' 中填入適當資訊. 在 'Gateway Address:' 中,填入 192.168.1.1. 按下 'OK' 以儲存設定.在 MacTCP control panel 的主視窗中,在 'IP Address:' 盒中填入你 Mac 的 IP 位址 (192.168.1.x, 1 < x < 255). 關閉 MacTCP control panel. 如果有的彈出視窗提醒你重新開機,那就做吧. 你可以 ping 一下你的 Linux 主來來測試網路連線.如果你有 MacTCP Watcher 免費程式,按下 'Ping' 鈕,然後在彈出的對話盒中鍵入你的 Linux 主機的地址(192.168.1.1).(這隻不過是區域網路的連接測試,你還不能 ping 到外面的世界.) 你可選擇性地在 System Folder 中建立一 Hosts 檔案以便你可以使用你區域網路里機器的主機名稱.這個檔案可能已經存在於你的 System Folder 里,而且它應該會包含一些(註解掉的)□例項目而你可以根據你的需要來修改.
配置執行 Open Transport 的 MacOS 系統
如果你還沒為你的乙太網路轉接器安裝適當的驅動程式,最好現在就作. 打開 TCP/IP Control Panel 然後從 Edit 選單中選擇 'User Mode ...'.確定使用者模式至少是 'Advanced' 然後按下 'OK' 鈕. 從 File 選單中選擇 'Configurations...'.選擇 'Default' 配置並按下 'Duplicate...' 鈕.在 'Duplicate Configuration' 對話盒中鍵入 'IP Masq' (或是其它能讓你知道這是個特殊配置的字眼),它可能會說像是 'Deafault copy' 什麽的.然後按下 'OK' 鈕,以及 'Make Active' 鈕. 從 'Connect via:' 彈出式選單中選擇 'Ethernet'. 從 'Configure:' 彈出式選單選擇適當的項目.如果你不知道應該選什麽,你可能應該重新選擇你的 'Default' 配置然後離開.我用的是 'Manually'. 在 'IP Address:' 盒中輸入你的 Mac 的 IP 位址 (192.168.1.x, 1 < x < 255). 在 'Subnet mask:' 盒中輸入 255.255.255.0. 在 'Router address:' 盒中輸入 192.168.1.1 . 在 'Name server addr.:' 盒中輸入你的領域名稱伺服器 IP 位址. 在 'Implicit Search Path:' 里的 'Starting domain name' 輸入你的網際網路領域名稱(例如 'microsoft.com'). 接下來的步驟是選擇性的.不正確的值可能導致嚴重的錯誤行為.如果你不確定,最好留下空白,不要勾選.如果需要的話,除去那些欄位中的任何資訊.就我目前所知沒有辦法在 TCP/IP 對話視窗中告訴系統不要使用以前選過的另一 "Hosts" 檔案.如果你知道的話,我很有興趣了解.如果你的網路需要 802.3 框架的話勾選 '802.3'. 按下 'Options...' 以確定 TCP/IP 有作用.我使用 'Load only when needed' 選項.如果你執行並結束 TCP/IP 應用程式許多次而未重新啟動你的機器,你將發現不選 'Load only when needed' 會抑制/降低你機器的記憶體管理效能.不選此項目將使 TCP/IP 協定總是被載入便於使用.如果勾選了,TCP/IP 協定會自動在需要時載入並在不需要時釋放.載入與釋放的過程可能使你機器的記憶體變的碎裂. 你可以 ping 一下你的 Linux 主來來測試網路連線.如果你有 MacTCP Watcher 免費程式,按下 'Ping' 鈕,然後在彈出的對話盒中鍵入你的 Linux 主機的地址(192.168.1.1).(這隻不過是區域網路的連接測試,你還不能 ping 到外面的世界.) 你可以在 System Folder 中建立一 Hosts 檔案以便你可以使用你區域網路里機器的主機名稱.這個檔案可能已經或還未存在於你的 System Folder 里.如果有的話,它應該會包含一些(註解掉的)□例項目而你可以根據你的需要來修改.如果還沒有的話,你可以從一部正在運作 MacTCP 的系統中取回,或自己建一個(它遵循 Unix 的 /etc/hosts 檔案格式,在 RFC 1035 的第 33 頁中描述).一旦你建立了這個檔案,打開 TCP/IP control panel,按下 'Select Hosts File...' 鈕,然後打開 Hosts 檔案. 關閉對話盒或從 File 選單中選擇 'Close' 或 'Quit' 然後按下 'Save' 以儲存你所做的改變. 這些改變會立刻生效,但重新開機也無害.

配置使用 DNS 的 Novell 網路
如果你還沒為你的乙太網路轉接器安裝適當的驅動程式,最好現在就作. 從 ftp.novell.com/pub/updates/unixconn/lwp5 取回 tcpip16.exe. 編輯 c:
wclientstartnet.bat : (here is a copy of mine) SET NWLANGUAGE=ENGLISH LH LSL.COM LH KTC2000.COM LH IPXODI.COM LH tcpip LH VLM.EXE F: 編輯 c:
wclient
et.cfg : (將驅動程式改為你的, i.e. NE2000) Link Driver KTC2000 Protocol IPX 0 ETHERNET_802.3 Frame ETHERNET_802.3 Frame Ethernet_II FRAME Ethernet_802.2
NetWare DOS Requester FIRST NETWORK DRIVE = F USE DEFAULTS = OFF VLM = CONN.VLM VLM = IPXNCP.VLM VLM = TRAN.VLM VLM = SECURITY.VLM VLM = NDS.VLM VLM = BIND.VLM VLM = NWP.VLM VLM = FIO.VLM VLM = GENERAL.VLM VLM = REDIR.VLM VLM = PRINT.VLM VLM = NETX.VLM
Link Support Buffers 8 1500 MemPool 4096
Protocol TCPIP PATH SCRIPT C:NETSCRIPT PATH PROFILE C:NETPROFILE PATH LWP_CFG C:NETHSTACC PATH TCP_CFG C:NETTCP ip_address xxx.xxx.xxx.xxx ip_router xxx.xxx.xxx.xxx 最後建立 c:in
esolv.cfg : SEARCH DNS HOSTS SEQUENTIAL NAMESERVER 207.103.0.2 NAMESERVER 207.103.11.9 我希望這些某些使用 Novell 網路的人有幫助.還有,這對 Netware 3.1x 或 4.x 都有用.
配置 OS/2 Warp
如果你還沒為你的乙太網路轉接器安裝適當的驅動程式,最好現在就作. 如果你還沒裝 TCP/IP 通訊協定的話現在就裝. 開啟 Programms/TCP/IP (LAN) / TCP/IP 設定 在 'Network' 欄位加上你的 TCP/IP 位址並設定你的 netmask (255.255.255.0) 在 'Routing' 欄位按下 'Add'. 將 Type 欄位設定為 'default' 並在 'Router Address' 欄位中鍵入你的 Linux 主機的 IP 位址 (192.168.1.1). 將 'Hosts' 欄位設定與你的 Linux 主機使用相同的 DNS (名稱伺服器)位址. 關閉 TCP/IP 控制台.在接下來的問題中回答 yes. 重新啟動你的系統 你可以 ping 你的 Linux 主機以測試網路配置.在 'OS/2 命令視窗' 上鍵入 'ping 192.168.1.1'. 如果收到 ping 封包一切就沒問題.
配置其它系統 它們應該按照相同的理論來建立.查閱上述的小節.如果你有興趣寫關於其它的作業系統的配置,請送詳細的建立指示到 ambrose@writeme.com.


3.4 配置 IP 轉送(Forwarding)的方式 到目前為止,你應該已經安裝好核心以及其它需要的套件,也載入了你的模組.同時,其它機器的 IP 位址,閘道,以及 DNS 也該全都設定完成.
現在,唯一剩下要做的事是使用 ipfwadm 轉送適當的封包給適當的機器:

** 這可以用許多不同的方式來達成.下列的建議與例子對我來說能用,但你可能有不同的主意,詳節部份請參考 4.4 節及 ipfwadm 的線上手冊. **

ipfwadm -F -p deny ipfwadm -F -a m -S yyy.yyy.yyy.yyy/x -D 0.0.0.0/0 其中 x 視你的子網路而定,為下列數字之一,而 yyy.yyy.yyy.yyy 則是你的網路位址. netmask | x | Subnet ~~~~~~~~|~~|~~~~~~~~ 255.0.0.0 | 8 | Class A 255.255.0.0 | 16 | Class B 255.255.255.0 | 24 | Class C 255.255.255.255 | 32 | Point-to-point 例如,如果我是在一個 class C 子網路上,我得輸入:
ipfwadm -F -p deny ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0
因為 bootp 請求封包沒有合法的 IP's ,客戶端並不知道它的位址,對於在偽裝/防火牆上執行 bootp 伺服器的人必須在 deny 之前執行下列指令:
ipfwadm -I -a accept -S 0/0 68 -D 0/0 67 -W bootp_clients_net_if_name -P udp
你也可以分別對每台機器設定.例如,如果我想讓 192.168.1.2 及 192.168.1.8 能夠存取網際網路,但不允許其它機器使用的話,我得輸入:

ipfwadm -F -p deny ipfwadm -F -a m -S 192.168.1.2/32 -D 0.0.0.0/0 ipfwadm -F -a m -S 192.168.1.8/32 -D 0.0.0.0/0 另外,你可以輸入網路遮罩以取代該值,例如 192.168.1.0/255.255.255.0

常見的錯誤是像這樣的第一行指令
ipfwadm -F -p masquerade 不要把你的預設方式(policy)定為偽裝(masquerading) - 否則可以操控他們的遞送路徑(routing) 的人將能夠直接穿過(tunnel)你的閘道,以此偽裝他們的身分!
再一次,你可以把這些加入 /etc/rc.local 檔案,任何一個你比較喜歡的 rc 檔案,或是在每次你需要 IP Masquerade 時手動執行之.
請閱讀 4.4 節有關 Ipfwadm 的詳細指引.

3.5 測試 IP Masquerade 在這些工作完成後,現在是試試看的時候了.確定你的 Linux 主機到網際網路的連線是通的.
你可以在其它機器上試著瀏覽一些'網際網路!!!' 上的網頁,看是否能見到.我建議第一次嘗試時使用 IP 位址而不要用主機名稱,因為你的 DNS 設定有可能並不正確.
例如,你可以使用 http://152.2.254.81/mdw/linux.html 來存取 Linux 文件計畫網頁 http://sunsite.unc.edu/mdw/linux.html.
如果你看見那漂亮的帆船(譯註: LDP 網頁好像沒有帆船?),那麽恭喜! 它可以運作了! 接著你可以使用主機名稱試試看,然後是 telnet, ftp, RealAudio, True Speech,以及任何 IP Masquerade 支援的東西.
到目前為止,我還不曾在上面的設定上發生過問題,而那些花下時間讓這個絕妙功能運作的人完全同意這些設定.


4. 其它 IP Masquerade 的問題及軟體支援

4.1 IP Masquerade 的問題 某些協定現在無法配合 masquerading 使用,因為它們不是假設有關埠號的一些事情,就是在位址及埠號的資料流里編碼資料 - 後面這些協定需要在 masquerading 程式碼里建立特定的代理程式使它們能運作.

4.2 進入系統的服務(incoming services) Masquerading 完全不能處理外界的服務請求 (incoming services).只有極少方法能允許它們,但這完全與 masquerading 無關,而且實在是標準的防火牆方式.
如果你並不要求高度的安全性那麽你可以簡單地重導(redirect)這些埠.有幾種不同的方法可以做這件事 - 我使用一隻修改過的 redir 程式(我希望這隻程式很快就能從 sunsite 及其 mirrors 取得).如果你希望能夠對外界進入系統的服務請求有某種程度的身分驗認(authorisation) 那麽你可以在 redir 的?inux IP Masquerade mini HOWTO 中譯版(2) -lemon
Linux IP Masquerade mini HOWTO 中譯版(2) 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
如果你還沒有安裝網路卡以及界面驅動程式,現在做. 到 '控制台/網路' 里去. 如果你的網路配置里沒有 'TCP/IP 協定' 則加進去. 在'TCP/IP 內容'中,選擇'IP 位址'並且把 IP 位址設定為 192.168.1.x,(1在'通訊閘'中加入 192.168.1.x 作為你的閘道. 在'DNS 配置'/'DNS 伺服器'下加入你的 Linux 主機使用的 DNS (通常可以在 /etc/resolv.conf 里找到).你可以選擇性地加入適當的網域字尾搜尋順序. 不要變更原先的其它設定,除非你知道自己在做什麽. 在所有的對話盒中按下'確定'並且重新啟動系統. 測試網路連線,Ping 你的 linux 主機: 從'開始/執行',輸入 ping 192.168.1.1 (這只是區域網路連線測試,你現在還不能 ping 外面的世界.) 你可以在 windows 目錄下選擇性地建立一個 HOSTS 檔案,如此你可以使用區域網路里的機器名稱.在 windows 目錄里有個稱為 HOSTS.SAM 的□例.
配置 Windos for Workgroup 3.11
如果你還沒有安裝網路卡以及界面驅動程式,現在做. 如果你還未安裝 TCP/IP 32b 套件的話就裝吧. 在 'Main'/'Windows Setup'/'Network Setup', 按下 'Drivers'. 將 'Network Drivers' 里的 'Microsoft TCP/IP-32 3.11b' 反白,按下 'Setup'. 設定 IP 位址於 192.168.1.x (1 < x < 255), 然後設定 Subnet Mask 為 255.255.255.0 以及 Default Gateway 為 192.168.1.1. 不要開啟 'Automatic DHCP Configuration' 並在 'WINS Server' 中放入任何東西,除非你在一 Windows NT 網域中而且你知道你在做什麽. 按下 'DNS', 填入在 3.3.1 小節中步驟六提到的資訊,然後在你完成後按下 'OK' 鈕. 按下 'Advanced', 如果你使用類似 3.3.1 小節步驟十中提到主機檔案,勾選 'Enable DNS for Windows Name Resolution' 及 'Enable LMHOSTS lookup'. 在所有對話盒中按 'OK' 並重新啟動系統. Ping 一下你的 Linux 主機以測試網路連接: 在 'File/Run' 輸入: ping 192.168.1.1 (這隻不過是區域網路的連接測試,你還不能 ping 到外面的世界).
Configuring Windows NT
如果你還沒有安裝網路卡以及界面驅動程式,現在做. 到 'Main'/'Control Panel'/'Network'. 如果你還沒裝 TCP/IP 服務的話從 'Add Software' 選單中加入 TCP/IP 協定及相關的部份. 在 'Network Software and Adapter Cards' 里將 'Installed Network Software' 選擇盒中的 'TCP/IP 協定' 反白. 在 'TCP/IP Configuration',選擇適當的界面驅動程式,例如,[1]Novell NE2000 Adapter.然後設定 IP 位址於 192.168.1.x (1 < x < 255),然後設定 Subnet Mask 為 255.255.255.0 以及 Default Gateway 為 192.168.1.1. 不要開啟 'Automatic DHCP Configuration' 並在 'WINS Server' 中放入任何東西,除非你在一 Windows NT 網域中而且你知道你在做什麽. 按下 'DNS', 填入在 3.3.1 小節中步驟六提到的資訊,然後在你完成後按下 'OK' 鈕. 按下 'Advanced', 如果你使用類似 3.3.1 小節步驟十中提到主機檔案,勾選 'Enable DNS for Windows Name Resolution' 及 'Enable LMHOSTS lookup'. 在所有對話盒中按 'OK' 並重新啟動系統. Ping 一下你的 Linux 主機以測試網路連接: 在 'File/Run' 輸入: ping 192.168.1.1 (這隻不過是區域網路的連接測試,你還不能 ping 到外面的世界).
配置 UNIX 系列的系統
如果你還未安裝你的網路卡並以適當的界面驅動程式重新編譯你的核心,現在就做吧. 安裝 TCP/IP 網路,像是 nettools 套件,如果你還沒裝的話. 將 IPADDR 設為 192.168.1.x (1 < x < 255), 然後將 NETMASK 設為 255.255.255.0, GATEWAY 設為 192.168.1.1, 以及 BROADCAST 設為 192.168.1.255. 例如,在 Red Hat Linux 系統上你可以編輯 /etc/sysconfig/network-scripts/ifcfg-eth0,或直接從 Control Panel 里做. (在 SunOS, BSDi, Slackware Linux, 等中都不相同...) 將你的名稱伺服器及領域搜尋字尾加到 /etc/resolv.conf. 依據你的設定你可能要更新你的 /etc/networks 檔案. 重新啟動適當的服務,或簡單的重新開機. 發出 ping 指令: ping 192.168.1.1 以測試到你的 gateway 機器的連接性. (這隻不過是區域網路的連接測試,你還不能 ping 到外面的世界).
配置使用 NCSA Telnet 套件的 DOS 機器
如果你還沒有安裝網路卡,現在做. 載入適當的封包驅動程式.對於 NE2000 卡來說,如果你的卡設定為 IRQ 10 及硬體位址於 0x300,用 nwpd 0x60 10 0x300. 建立一新目錄,然後解開 NCSA Telnet 套件: pkunzip tel2308b.zip 使用文字編輯器打開 config.tel 檔案. 設定 myip=192.168.1.x (1 < x < 255), 以及 netmask=255.255.255.0. 在本例子中,你應該設定 hardware=packet, interrupt=10, ioaddr=60. 你至少要有一單獨的機器設定為 gateway,也就是 Linux 主機: name=default host=yourlinuxhostname hostip=192.168.1.1 gateway=1 還要有另外一個指定領域名稱服務: name=dns.domain.com ; hostip=123.123.123.123; nameserver=1 注意: 用你 Linux 主機使用的 DNS 的適當資訊來取代. 儲存你的 config.tel 檔案. Telnet 到你的 Linux 主機以測試網路連接: telnet 192.168.1.1
配置執行 MacTCP 的 MacOS 機器
如果你還沒為你的乙太網路轉接器安裝適當的驅動程式,最好現在就作. 打開 MacTCP control panel,選擇適當的網路驅動程式(Ethernet, 而非 EtherTalk) 並按下 'More...' 鈕. 在 'Obtain Address:', 按 'Manually'. 在 'IP Address:' 下,從彈出選單中選擇 class C.忽略對話盒中的其它部份. 在 'Domain Name Server Information:' 中填入適當資訊. 在 'Gateway Address:' 中,填入 192.168.1.1. 按下 'OK' 以儲存設定.在 MacTCP control panel 的主視窗中,在 'IP Address:' 盒中填入你 Mac 的 IP 位址 (192.168.1.x, 1 < x < 255). 關閉 MacTCP control panel. 如果有的彈出視窗提醒你重新開機,那就做吧. 你可以 ping 一下你的 Linux 主來來測試網路連線.如果你有 MacTCP Watcher 免費程式,按下 'Ping' 鈕,然後在彈出的對話盒中鍵入你的 Linux 主機的地址(192.168.1.1).(這隻不過是區域網路的連接測試,你還不能 ping 到外面的世界.) 你可選擇性地在 System Folder 中建立一 Hosts 檔案以便你可以使用你區域網路里機器的主機名稱.這個檔案可能已經存在於你的 System Folder 里,而且它應該會包含一些(註解掉的)□例項目而你可以根據你的需要來修改.
配置執行 Open Transport 的 MacOS 系統
如果你還沒為你的乙太網路轉接器安裝適當的驅動程式,最好現在就作. 打開 TCP/IP Control Panel 然後從 Edit 選單中選擇 'User Mode ...'.確定使用者模式至少是 'Advanced' 然後按下 'OK' 鈕. 從 File 選單中選擇 'Configurations...'.選擇 'Default' 配置並按下 'Duplicate...' 鈕.在 'Duplicate Configuration' 對話盒中鍵入 'IP Masq' (或是其它能讓你知道這是個特殊配置的字眼),它可能會說像是 'Deafault copy' 什麽的.然後按下 'OK' 鈕,以及 'Make Active' 鈕. 從 'Connect via:' 彈出式選單中選擇 'Ethernet'. 從 'Configure:' 彈出式選單選擇適當的項目.如果你不知道應該選什麽,你可能應該重新選擇你的 'Default' 配置然後離開.我用的是 'Manually'. 在 'IP Address:' 盒中輸入你的 Mac 的 IP 位址 (192.168.1.x, 1 < x < 255). 在 'Subnet mask:' 盒中輸入 255.255.255.0. 在 'Router address:' 盒中輸入 192.168.1.1 . 在 'Name server addr.:' 盒中輸入你的領域名稱伺服器 IP 位址. 在 'Implicit Search Path:' 里的 'Starting domain name' 輸入你的網際網路領域名稱(例如 'microsoft.com'). 接下來的步驟是選擇性的.不正確的值可能導致嚴重的錯誤行為.如果你不確定,最好留下空白,不要勾選.如果需要的話,除去那些欄位中的任何資訊.就我目前所知沒有辦法在 TCP/IP 對話視窗中告訴系統不要使用以前選過的另一 "Hosts" 檔案.如果你知道的話,我很有興趣了解.如果你的網路需要 802.3 框架的話勾選 '802.3'. 按下 'Options...' 以確定 TCP/IP 有作用.我使用 'Load only when needed' 選項.如果你執行並結束 TCP/IP 應用程式許多次而未重新啟動你的機器,你將發現不選 'Load only when needed' 會抑制/降低你機器的記憶體管理效能.不選此項目將使 TCP/IP 協定總是被載入便於使用.如果勾選了,TCP/IP 協定會自動在需要時載入並在不需要時釋放.載入與釋放的過程可能使你機器的記憶體變的碎裂. 你可以 ping 一下你的 Linux 主來來測試網路連線.如果你有 MacTCP Watcher 免費程式,按下 'Ping' 鈕,然後在彈出的對話盒中鍵入你的 Linux 主機的地址(192.168.1.1).(這隻不過是區域網路的連接測試,你還不能 ping 到外面的世界.) 你可以在 System Folder 中建立一 Hosts 檔案以便你可以使用你區域網路里機器的主機名稱.這個檔案可能已經或還未存在於你的 System Folder 里.如果有的話,它應該會包含一些(註解掉的)□例項目而你可以根據你的需要來修改.如果還沒有的話,你可以從一部正在運作 MacTCP 的系統中取回,或自己建一個(它遵循 Unix 的 /etc/hosts 檔案格式,在 RFC 1035 的第 33 頁中描述).一旦你建立了這個檔案,打開 TCP/IP control panel,按下 'Select Hosts File...' 鈕,然後打開 Hosts 檔案. 關閉對話盒或從 File 選單中選擇 'Close' 或 'Quit' 然後按下 'Save' 以儲存你所做的改變. 這些改變會立刻生效,但重新開機也無害.

配置使用 DNS 的 Novell 網路
如果你還沒為你的乙太網路轉接器安裝適當的驅動程式,最好現在就作. 從 ftp.novell.com/pub/updates/unixconn/lwp5 取回 tcpip16.exe. 編輯 c:
wclientstartnet.bat : (here is a copy of mine) SET NWLANGUAGE=ENGLISH LH LSL.COM LH KTC2000.COM LH IPXODI.COM LH tcpip LH VLM.EXE F: 編輯 c:
wclient
et.cfg : (將驅動程式改為你的, i.e. NE2000) Link Driver KTC2000 Protocol IPX 0 ETHERNET_802.3 Frame ETHERNET_802.3 Frame Ethernet_II FRAME Ethernet_802.2
NetWare DOS Requester FIRST NETWORK DRIVE = F USE DEFAULTS = OFF VLM = CONN.VLM VLM = IPXNCP.VLM VLM = TRAN.VLM VLM = SECURITY.VLM VLM = NDS.VLM VLM = BIND.VLM VLM = NWP.VLM VLM = FIO.VLM VLM = GENERAL.VLM VLM = REDIR.VLM VLM = PRINT.VLM VLM = NETX.VLM
Link Support Buffers 8 1500 MemPool 4096
Protocol TCPIP PATH SCRIPT C:NETSCRIPT PATH PROFILE C:NETPROFILE PATH LWP_CFG C:NETHSTACC PATH TCP_CFG C:NETTCP ip_address xxx.xxx.xxx.xxx ip_router xxx.xxx.xxx.xxx 最後建立 c:in
esolv.cfg : SEARCH DNS HOSTS SEQUENTIAL NAMESERVER 207.103.0.2 NAMESERVER 207.103.11.9 我希望這些某些使用 Novell 網路的人有幫助.還有,這對 Netware 3.1x 或 4.x 都有用.
配置 OS/2 Warp
如果你還沒為你的乙太網路轉接器安裝適當的驅動程式,最好現在就作. 如果你還沒裝 TCP/IP 通訊協定的話現在就裝. 開啟 Programms/TCP/IP (LAN) / TCP/IP 設定 在 'Network' 欄位加上你的 TCP/IP 位址並設定你的 netmask (255.255.255.0) 在 'Routing' 欄位按下 'Add'. 將 Type 欄位設定為 'default' 並在 'Router Address' 欄位中鍵入你的 Linux 主機的 IP 位址 (192.168.1.1). 將 'Hosts' 欄位設定與你的 Linux 主機使用相同的 DNS (名稱伺服器)位址. 關閉 TCP/IP 控制台.在接下來的問題中回答 yes. 重新啟動你的系統 你可以 ping 你的 Linux 主機以測試網路配置.在 'OS/2 命令視窗' 上鍵入 'ping 192.168.1.1'. 如果收到 ping 封包一切就沒問題.
配置其它系統 它們應該按照相同的理論來建立.查閱上述的小節.如果你有興趣寫關於其它的作業系統的配置,請送詳細的建立指示到 ambrose@writeme.com.


3.4 配置 IP 轉送(Forwarding)的方式 到目前為止,你應該已經安裝好核心以及其它需要的套件,也載入了你的模組.同時,其它機器的 IP 位址,閘道,以及 DNS 也該全都設定完成.
現在,唯一剩下要做的事是使用 ipfwadm 轉送適當的封包給適當的機器:

** 這可以用許多不同的方式來達成.下列的建議與例子對我來說能用,但你可能有不同的主意,詳節部份請參考 4.4 節及 ipfwadm 的線上手冊. **

ipfwadm -F -p deny ipfwadm -F -a m -S yyy.yyy.yyy.yyy/x -D 0.0.0.0/0 其中 x 視你的子網路而定,為下列數字之一,而 yyy.yyy.yyy.yyy 則是你的網路位址. netmask | x | Subnet ~~~~~~~~|~~|~~~~~~~~ 255.0.0.0 | 8 | Class A 255.255.0.0 | 16 | Class B 255.255.255.0 | 24 | Class C 255.255.255.255 | 32 | Point-to-point 例如,如果我是在一個 class C 子網路上,我得輸入:
ipfwadm -F -p deny ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0
因為 bootp 請求封包沒有合法的 IP's ,客戶端並不知道它的位址,對於在偽裝/防火牆上執行 bootp 伺服器的人必須在 deny 之前執行下列指令:
ipfwadm -I -a accept -S 0/0 68 -D 0/0 67 -W bootp_clients_net_if_name -P udp
你也可以分別對每台機器設定.例如,如果我想讓 192.168.1.2 及 192.168.1.8 能夠存取網際網路,但不允許其它機器使用的話,我得輸入:

ipfwadm -F -p deny ipfwadm -F -a m -S 192.168.1.2/32 -D 0.0.0.0/0 ipfwadm -F -a m -S 192.168.1.8/32 -D 0.0.0.0/0 另外,你可以輸入網路遮罩以取代該值,例如 192.168.1.0/255.255.255.0

常見的錯誤是像這樣的第一行指令
ipfwadm -F -p masquerade 不要把你的預設方式(policy)定為偽裝(masquerading) - 否則可以操控他們的遞送路徑(routing) 的人將能夠直接穿過(tunnel)你的閘道,以此偽裝他們的身分!
再一次,你可以把這些加入 /etc/rc.local 檔案,任何一個你比較喜歡的 rc 檔案,或是在每次你需要 IP Masquerade 時手動執行之.
請閱讀 4.4 節有關 Ipfwadm 的詳細指引.

3.5 測試 IP Masquerade 在這些工作完成後,現在是試試看的時候了.確定你的 Linux 主機到網際網路的連線是通的.
你可以在其它機器上試著瀏覽一些'網際網路!!!' 上的網頁,看是否能見到.我建議第一次嘗試時使用 IP 位址而不要用主機名稱,因為你的 DNS 設定有可能並不正確.
例如,你可以使用 http://152.2.254.81/mdw/linux.html 來存取 Linux 文件計畫網頁 http://sunsite.unc.edu/mdw/linux.html.
如果你看見那漂亮的帆船(譯註: LDP 網頁好像沒有帆船?),那麽恭喜! 它可以運作了! 接著你可以使用主機名稱試試看,然後是 telnet, ftp, RealAudio, True Speech,以及任何 IP Masquerade 支援的東西.
到目前為止,我還不曾在上面的設定上發生過問題,而那些花下時間讓這個絕妙功能運作的人完全同意這些設定.


4. 其它 IP Masquerade 的問題及軟體支援

4.1 IP Masquerade 的問題 某些協定現在無法配合 masquerading 使用,因為它們不是假設有關埠號的一些事情,就是在位址及埠號的資料流里編碼資料 - 後面這些協定需要在 masquerading 程式碼里建立特定的代理程式使它們能運作.

4.2 進入系統的服務(incoming services) Masquerading 完全不能處理外界的服務請求 (incoming services).只有極少方法能允許它們,但這完全與 masquerading 無關,而且實在是標準的防火牆方式.
如果你並不要求高度的安全性那麽你可以簡單地重導(redirect)這些埠.有幾種不同的方法可以做這件事 - 我使用一隻修改過的 redir 程式(我希望這隻程式很快就能從 sunsite 及其 mirrors 取得).如果你希望能夠對外界進入系統的服務請求有某種程度的身分驗認(authorisation) 那麽你可以在 redir 的頂層(0.7 or above) 使用 TCP wrappers 或是 Xinetd 來允許特定 IP 位址通過,或使用其它的工具.TIS 防火牆工具集是尋找工具及資訊的好地方.
更多的詳節可在 IP Masquerade Resource 找到.

4.3 已支援的客戶端軟體以及其它設定方面的注意事項
** 下面的列表將不再被維護了.可經由 Linux IP masquerading 運作的應用程式請參考 這裡 和 IP Masquerade Resource 以取得進一步的細節. ** 一般說來,使用傳輸控制協定(TCP) 或是使用者定義資料協定 (UDP)的應用程式應該都能運作.如果你有任何關於應用程式與 IP Masquerade 相容的建議,提示或問題,請拜訪由 Lee Nevo 維護的 可與 Linux IP masquerading 運作的應用程式 網頁.

可以使用的客戶端軟體 一般客戶端軟體
HTTP 所有有支援的平台,瀏覽網頁
POP & SMTP 所有有支援的平台,電子郵件軟體
Telnet 所有有支援的平台,遠端簽入作業
FTP 所有有支援的騎





[火星人 via ] Linux IP Masquerade mini HOWTO 中譯版(2)已經有270次圍觀

http://www.coctec.com/docs/linux/show-post-69866.html