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>
发布人:netbull 来自:歪歪鱼的Linux世界