IP Masquerade mini HOWTO(15) # 捕捉所有规则,任何其它的转送方式都会被拒绝并记录.可惜没有 # 记录用的选项但这可以代替 ipfwadm -F -a deny -S 0.0.0.0/0 -D 0.0.0.0/0 -o 你可以使用 -I, -O 或是 -F 来控制到某特定节点的流量.记得这些规则集是由上往下扫描的而 -a 代表"附加(append)"到目前现有的规则集中所以任何限制必须在全域(global)规则之前出现.例如(没测试过) :- 使用 -I 规则.可能是速度最快的但是它只能阻止区域网路里的机器,防火墙本身仍然可以存取"禁止"的节点.当然你可能想允许这样的组合. ... start of -I rules ... # 拒绝并记录本地界面,区域网路里的机器通往 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 ... end of -I rules ... 使用 -O 规则.最慢,因为封包首先经过伪装但这个规则阻止防火墙存取禁止的节点. ... start of -O rules ... # 拒绝并记录送出至 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 ... end of -O rules ... 使用 -F 规则.可能比 -I 慢而这仍然只能阻止伪装的机器(例如内部的机器),防火墙仍然可以取得禁止的节点. ... start of -F rules ... # 拒绝并记录 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 ... end of -F rules ... 不需要有个特定的规则来允许 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) 如果你想把网路设定成自动拨接上网际网路,那麽 diald demand 拨接套件将会是很棒的工具. 要设定 diald, 请查看 Setting Up Diald for Linux Page 网页 一旦 diald 以及 IP masq 设定完成,你可以在任何客户端机器上启动 web, telnet 或是 ftp 连线. Diald 将会侦测到进入系统的请求,然後拨接到你的 ISP 并建立连线. 第一次连线将会发生逾时(timeout) 的情形.如果你使用类比式的数据机那这是无可避免的.建立数据机连结以及 PPP 连线所花费的时间将会使你的客户端软体不耐.如果你使用 ISDN 连线那这是可以避免的.你得做的只是结束客户端软体现行的程序再重新启动即可. 4.6 IPautofw 封包转送程式 IPautofw 是一个给 Linux masquerading 使用的一般性 TCP 及 UDP 转送程式.一般使用需要 UDP 的套件的时候,需要载入特定的 ip_masq 模组;ip_masq_raudio, ip_masq_cuseeme,... Ipautofw 以更一般化的方式运作,它将会转送包含这些应用程式特定模组都不会转送的任何资料流型态.如果没有正确地管理这可能造成安全上的漏洞.