当前位置:Linux教程 - Linux - IP 伪装简易使用说明

IP 伪装简易使用说明



         原始文件:Linux IP Masquerade mini HOWTO
    Ambrose Au, [email protected]
    v1.00, 1 January 1997
    翻译维护:<a href=mailto:[email protected]>asd chen</a>


    这份文件描述如何在一台 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 的灵感以及最後撰写了这
    份文件。

    如果我的任何资讯有误或遗漏任何资讯,请别介意把任何回馈或意见
    寄到 [email protected] 来。你的无价回馈将影响未来的这份说明
    文件!

    这份说明文件是想作为让你的 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
    http://www.caldera.com/LDP/HOWTO/NET-2-HOWTO.html> 及网路
    管理者指引(Network Administrator\"s Guide)
    http://linuxwww.db.erau.edu/NAG/

    。你的 Linux 主机的网际网路连线
    涵盖於 Linux ISP Hookup HOWTO
    http://www.caldera.com/LDP/HOWTO/ISP-Hookup-HOWTO.html>,
    Linux PPP HOWTO <http://www.caldera.com/LDP/HOWTO/PPP-HOWTO.html
    以及 Linux PPP-over-ISDN mini-HOWTO
    http://www.caldera.com/LDP/HOWTO/mini/PPP-over-ISDN

    。Ipfwadm 2.3 或更新的版本可以从这里取得
    ftp://ftp.xos.nl/pub/linux/ipfwadm/ipfwadm-2.3.tar.gz
    在 Linux Ipfwadm 网页上有更多关於版本的资讯
    http://www.xos.nl/linux/ipfwadm/

    。你可以选择性地应用一些 IP Masquerade 修补档打开其它功能。
    从这里可以取的更多资讯, IP Masquerade Resources
    http://www.wwonline.com/~achau/ipmasq/>(这些修补档适用於
    所有的 2.0.x 核心)

    3. IP Masquerade 的设定

    如果你的私用网路里有任何重要的资讯,在使用 IP Masquerade
    之前请三思。这可能成为你通往网际网路的闸道,反之亦然,也
    可能成为另一边的世界进入你私用网路的途径。

    3.1. 编译核心加入 IP Masquerade 的支援

    。首先,你需要核心的原始程式码(最好是稳定的 2.0.0 版或以上
    的核心)

    。如果这是你第一次编译核心,不要害怕。事实上,这非常容易而且
    涵盖於 Linux Kernel HOWTO
    http://www.caldera.com/LDP/HOWTO/Kernel-HOWTO.html

    。使用指令: tar zxvf linux-2.0.x.tar.gz -C /usr/src 把核心的
    原始程式码解至 /usr/src/ , 其中 x 是 2.0 之後的修补层级
    (确定有个称为 linux 的目录或符号链结)

    。加上适当的修补。因为新的修补档不断出来,所以细节不会包含在
    这里。最新的资讯请参考 IP Masquerade Resources
    http://www.wwonline.com/~achau/ipmasq/

    。有关编译核心更进一步的介绍请参考 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<x<255) ,并且把子网路遮罩设为 255.255.255.0

    5.在’通讯闸’中加入 192.168.1.x 作为你的闸道。

    6.在’DNS 配置’/’DNS 伺服器’下加入你的 Linux 主机使用的
    DNS (通常可以在 /etc/resolv.conf 里找到)。你可以选择性地
    加入适当的网域字尾搜寻顺序。

    7.不要变更原先的其它设定,除非你知道自己在做什麽。

    8.在所有的对话盒中按下’确定’并且重新启动系统。

    9.测试网路连线,ping 你的 linux 主机: 从’开始/执行’,输入
    ping 192.168.1.1
    (这只是区域网路连线测试,你现在还不能 ping 外面的世界。)

    10.你可以在 windows 目录下选择性地建立一个 HOSTS 档案,如此
    你可以使用区域网路里的机器名称。在 windows 目录里有个称为
    HOSTS.SAM 的□例。
    ┌—————————————————————————————┐
    │3.3.2. 配置 Windos for Workgroup 3.11 │
    │3.3.3. 配置 Windows NT 3.51 │
    │3.3.4. 配置 UNIX 系列的系统 │
    │3.3.5. 配置使用 NCSA telnet 套件的 DOS │
    │3.3.6. 配置执行 MacTCP 的 MacOS 机器 │
    │3.3.7. 配置执行 Open Transport 的 MacOs 机器 │
    │3.3.8. 配置使用 DNS 的 Novell 网路 │
    │3.3.9. 配置其它像是 OS/2 等系统 │
    └—————————————————————————————┘
    3.4. 配置 IP 转送(Forwarding)的方式

    到目前为止,你应该已经安装好核心以及其它需要的套件,也载入了
    你的模组。同时,”其它”机器的 IP 位址,闸道,以及 DNS 也该
    全都设定完成。

    现在,唯一剩下要做的事是使用 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

    第二行指令也可以加上 -V 192.168.1.1 或是 -W eth0 以确保伪装
    封包从系统中适当的界面进来 - 如果你极端注重安全考量(不然这
    有点过头)的话那麽你将会希望这麽做。

    因为 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_masq 时手动执行之。

    请阅读 4.4 节有关 Ipfwadm 的详细指引

    3.5. 测试 IP Masquerade

    在这些工作完成後,现在是试试看的时候了。确定你的 Linux 主机
    到网际网路的连线是通的。

    你可以在”其它”机器上试著浏览一些’网际网路!!’上的网页,看
    是否能见到。我建议第一次尝试时使用 IP 位址而不要用主机名称,
    因为你的 DNS 设定有可能并不正确。

    例如,你可以使用 http://198.95.249.78 来存取 Netscape\"s 站台
    http://home.netscape.come

    如果你看见那漂亮的帆船,那麽恭喜! 它可以运作了! 接著你可以使
    用主机名称试试看,然後是 telnet, ftp, RealAudio, True Speech
    ,以及任何 IP Masquerade 支援的东西。

    到目前为止,我还不曾在上面的设定上发生过问题,而那些花下时间
    让这个绝妙功能运作的人完全同意这些设定。

    4. 其它 IP Masquerade 的问题及软体支援

    4.1. IP Masquerade 的问题

    首先伪装只能在通讯埠式(ported)协定上运作 - 像是 TCP 或 UDP
    。尤其不能配合 ICMP 使用,所以 ping 以及 traceroute 将无法运
    作(除非你的 ping 以及/或是 traceroute 已经修改成使用不同的
    运作方式)。

    某些协定现在无法配合 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 防火墙工具集是寻找工具及资讯的好地方。

    4.3. 已支援的客户端软体以及其它设定方面的注意事项

    一般说来,使用传输控制协定(TCP) 或是使用者定义资料协定 (UDP)
    的应用程式应该都能运作。如果你有任何关於无法与 IP Masquerade
    相容之应用程式的建议,请 email 给我软体名称以及简短的描述。

    4.3.1. 可以使用的客户端软体

    一般客户端软体

    HTTP
    所有有支援的平台,浏览网页

    POP & SMTP
    所有有支援的平台,电子邮件软体

    Telnet
    所有有支援的平台,远端签入作业

    FTP
    所有有支援的平台,配合 ip_masq_ftp.o 模组(不是所有站
    台都能配合各种客户端软体;例如某些不能使用 ws_ftp32 触
    及的站台却能使用 netscape 进入)

    Archie
    所有有支援的平台,档案搜寻软体(并非所有 archie 客户端
    软体都支援)

    NNTP (USENET)
    所有有支援的平台,网路新闻软体

    VRML
    Windows (可能所有有支援的平台都可以),虚拟实境浏览

    traceroute
    主要是 UNIX 系列的平台,某些变种可能无法运作

    ping
    所有平台,配合 ICMP 修补档

    anything based on IRC
    所有有支援的平台,配合 ip_masq_irc.o 模组

    Gopher client
    所有有支援的平台

    WAIS client
    所有有支援的平台

    多媒体客户端软体

    Real Audio Player
    Windows, 网路资料流音讯,配合载入 ip_masq_raudio 模组

    True Speech Player 1.1b
    Windows, 网路资料流音讯

    Internet Wave Player
    Windows, 网路资料流音讯

    Worlds Chat 0.9a
    Windows, 客户-伺服端立体交谈(3D chat) 程式

    Alpha Worlds
    Windows, 客户-伺服端立体交谈(3D chat) 程式

    Internet Phone 3.2
    Windows, 点对点通话,如果你呼叫别人,人们可以与你交谈
    ,但是他们不能呼叫你。

    Powwow
    Windows, 点对点文字声音白板通讯,如果你呼叫别人,人们
    可以与你交谈,但是他们不能呼叫你。

    CU-SeeMe
    所有有支援的平台,配合载入 cuseeme 模组,详细细节请参
    阅 IP Masqureade Source
    http://www.wwonline.com/~achau/ipmasq/

    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 网页
    http://home.pacific.net.sg/~harish/diald.config.html

    3.一但 diald 以及 IP masq 设定完成,你可以在任何客户端机器
    上启动 web, telnet 或是 ftp 连线。

    4.Diald 将会侦测到进入系统的请求,然後拨接到你的 ISP 并建立
    连线。

    5.第一次连线将会发生逾时(timeout) 的情形。如果你使用类比式的
    数据机那
    发布人:netbull 来自:Unix/Linux技术地带