当前位置:Linux教程 - Linux - Linux IP Masquerade mini HOWTO 中译版(2)

Linux IP Masquerade mini HOWTO 中译版(2)

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 封包一切就没问题.
配置其它系统 它们应该按照相同的理论来建立.查阅上述的小节.如果你有兴趣写关於其它的作业系统的配置,请送详细的建立指示到 [email protected].


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 封包一切就没问题.
配置其它系统 它们应该按照相同的理论来建立.查阅上述的小节.如果你有兴趣写关於其它的作业系统的配置,请送详细的建立指示到 [email protected].


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 所有有支援的骑