用Linux+IPChains代替Windows+WinGate

 

用Linux+IPChains代替Windows+WinGate

张中华(mike_z@21cn.com),2000.12.02

任务:办公室有10台电脑,组成局域网,其中1台名为gate的机器配有ISDN卡,可拨号上网,另外9台机器也要上网,由gate机器做代理或网关,共享其ISDN设备。原来的方案是:gate机器上的操作系统是Win98,使用的代理软件是WinGate。现在,gate机器的操作系统换成了Linux,怎么让其它9台机器也能上网?

经过尝试,我使用IPChains的IP伪装转发功能成功地做到了这一点。我的配置为:蓝点Linux 2.0,Kernel-2.2.16,isdn4linux v3.1pre1,上海贝尔生产的ISDN内置卡,型号为SBT6021。
下面介绍具体做法。介绍顺序为:内核->ipchains的配置->其它机器的配置。

0、 前提条件
前提条件当然就是这台配有ISDN卡,安装了Linux的名为gate的机器,本身必须能够顺利拨号上网。我已做到了,具体操作过程写在我的另一篇文章《在Linux下使用ISDN拨号上网》中。

1、 内核
这个方案的原理是:由于这台gate机器建立拨号连接后,具有真正的IP地址,能够正常地访问Internet,而局域网内其它机器却没有真正的IP地址,不能象gate机器那样正常地访问Internet,解决办法就是由gate机器代劳其它机器的Internet访问请求,假装是它自己的。把这台gate机器作为局域网的网关,当它收到来自局域网内其它机器的请求数据包时,进行伪装,然后再转发出去;相应地,当伪装后发出去的数据包得到响应返回时,先对该响应数据包进行还原,再转交给回局域网内真正发出请求的那台机器。这种做法叫做IP Masquerade(IP伪装)。
要Linux内核支持IP伪装这种功能,在编译内核时,必须选中下列选项:

Network firewalls
IP: firewalling
IP: masquerading
IP: ipportfw masq support
IP: ipautofw masquerade support
IP: ip fwmark masq-forwarding support
IP: ICMP masquerading

但我不必急于编译内核,如果现有的内核已经包含这些选项了,我又何必重复一遍呢。那我怎么知道现有内核是否已经包含这些选项了呢?看内核编译配置文件/usr/src/linux/.config(注意:文件名以"."开头的文件是隐藏文件,要用ls -a才可看到。)我看到其中有下面这7行内容,对应于刚才的7个选项:

CONFIG_FIREWALL=y 
CONFIG_IP_FIREWALL=y
CONFIG_IP_MASQUERADE=y
CONFIG_IP_MASQUERADE_ICMP=y
CONFIG_IP_MASQUERADE_IPAUTOFW=m
CONFIG_IP_MASQUERADE_IPPORTFW=m
CONFIG_IP_MASQUERADE_MFW=m

"=y"表示内核直接支持(代码已链入内核中),"=m"表示模块支持(代码在另外的内核中,可由内核载入)。于是这就表明,蓝点Linux 2.0的原有内核已包含这些选项了,我就不用重新编译内核啦。
但仍然得做点事情,首先必须命令内核,启动IP转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
往/proc/sys/net/ipv4/ip_forward里写入"1"就行了。
有些功能如ftp, irc等的伪装,需要相应的模块支持,这些模块放在/lib/modules/2.2.16/ipv4目录中,装入它们:
depmod -a
modprobe ip_masq_ftp
modprobe ip_masq_irc
modprobe ip_masq_raudio

2、 ipchains的配置
蓝点Linux 2.0包含的ipchains软件已经足够满足我的要求了,我就不必安装新的,只需配置一下即可。Ipchains是一个包过滤器,功能强大,设置也复杂,但我只想使用其IP伪装转发功能而已,设置得以简化。我这台Linux机器在一个局域网上,局域网的域名为thalia.com,地址为210.96.100.0,这台机器的主机名为gate,地址为210.96.100.10。
对ipchains过滤器进行设置,就是设置各种链及规则。先看看目前情况如何:
ipchains -L
得到类似下面的信息:

Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):

没什么规则,3条链的策略都是接受。
由于只是使用伪装转发功能,所以只对forward链进行操作。
ipchains -P forward DENY
把forward链的策略设为DENY,拒绝通过。此后增加可通过的规则,逐渐允许更多的数据包通过,这是一种先紧后松的做法。
ipchains -A forward -s 210.96.100.0/255.255.255.0 -j MASQ
增加1条规则,这条规则说明:对来自210.96.100.0局域网内(网络掩码为255.255.255.0)的数据包(-s 210.96.100.0/255.255.255.0),进行伪装处理(-j MASQ)。
这时候再看一下情况如何:
ipchains -L
得到类似下面的信息:

Chain input (policy ACCEPT):
Chain forward (policy DENY):
target prot opt source destination ports
MASQ all ------ 210.96.100.0/24 anywhere n/a
Chain output (policy ACCEPT):

forward链中多了1条MASQ规则。
要简单地实现共享ISDN上网,这已经足够了。

3、 其它机器的配置
配置局域网上的其它Win98, Win2000机器,要点是把缺省网关设为那台Linux gate机器,DNS域名服务器也设为那台Linux gate机器。应用软件如IE,OutlookExpress等不用做任何设置,想象成ISDN装在本机上就行。
我现在就去设置1台Win98机器试试看。
(1)在“控制面板 | 网络 | 配置”下,选中“TCP/IP->3Com PCI Ethernet Adapter”(这台机器配的是3Com网卡),点击“属性”按钮,弹出TCP/IP属性对话框。
(2)到“IP地址”页中,指定IP地址,IP地址为210.96.100.14,子网掩码为255.255.255.0;到“网关”页中,添加新网关210.96.100.10。
(3)机器重启。
(4)打开IE,浏览http://168.160.224.103(即新浪网sina.com.cn),看到了新浪的首页;但是浏览http://www.sina.com.cn,却不行。这是域名解析的问题。
(5)重复(1)步骤,弹出TCP/IP属性对话框,到“DNS配置”页中,启用DNS,主机名写zzh,添加DNS服务器搜索顺序210.96.100.10。机器重启。打开IE,再次浏览http://www.sina.com.cn,这次好啦。

4、 形成shell文件
上面对内核和ipchains的配置是逐条命令进行的,已经全部成功通过,现在把它们写成shell文件。
/etc/ppp/ip-masq-start文件内容如下:

# IP masq
echo 1 > /proc/sys/net/ipv4/ip_forward
depmod -a
modprobe ip_masq_ftp
modprobe ip_masq_irc
modprobe ip_masq_raudio

ipchains -P forward DENY
ipchains -A forward -s 210.96.100.0/255.255.255.0 -j MASQ

让它成为可执行文件:
chmod a+x /etc/ppp/ip-masq-start
以后事情就简单了。要开启IP伪装转发功能,下命令/etc/ppp/ip-masq-start。

参考资料:
黄志伟,IP Masquerade HOWTO中文版,http://www.linux.org.tw/CLDP/gb/IP-Masquerade-HOWTO.html

http://zzh-cn.com


相关文件下载

IP伪装转发启动:/etc/ppp/ip-masq-start

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 摘要 4 Abstract 5 引言 6 第1章 绪论 7 1.1Intranet系统以及其安全问题 7 1.2防火墙技术 8 1.2.1 防火墙的定义 9 1.2.2 防火墙的基本类型 9 1.2.3 包过滤防火墙 10 1.2.4 应用网关 11 1.2.4.1 回路层代理 12 1.2.4.2 应用层代理 13 1.3 设计与实现Linux防火墙的缘起与目标 13 第2章 使用防火墙构造安全的解决方案 15 2.1 堡垒主机或双穴主机网关 15 2.2 被屏蔽主机网关 16 2.3 被屏蔽子网 16 第3章 Linux防火墙技术 18 3.1 Linux 防火墙技术的发展 18 3.2 利用Linux 实现路由和包过滤 18 3.2.1 Ipchains原理及简介 18 3.2.1.1 原理简介 18 3.2.1.2 源代码分析 20 3.2.2 Ipchains命令使用简介 23 3.3 Linux下代理的实现 29 3.3.1代理服务器概述 29 3.3.1.1 什么是代理服务器 29 3.3.1.2 代理服务器的功能 30 3.3.2 代理软件的简介和比较 33 结 论 36 致 谢 38 参考文献 39 摘要 随着计算机网络,特别是近年来Internet的飞速发展,各公司、企业、政府机关交流信息的方式正在发生变化。但这些部门面临的最大的问题就是如何用一种有效的安全解决方案来保护网络及信息系统不受攻击。在众多的方案中,防火墙是安全解决策略的关键部分。 防火墙是一类安全防范措施的总称,它是在两个网络之间强制实施访问控制策略的一个系统或一组系统。本文主要是针对有关防火墙的技术和防火墙应用的模型、设计和实现进行研究,通过对各种防火墙技术和防火墙体系结构的分类比较,对明确防火墙相关概念和选择使用防火墙上具有指导意义。同时,介绍了一种在Linux系统下集包过滤与代理于一身的复合防火墙的设计和实现过程。在这里介绍的一些技术细节和实现策略可以为今后的防火墙构造提供借鉴。这种防火墙技术不仅可以使系统更具有灵活性和可扩展性,更使得系统的安全性得到提高。 关键词: 防火墙 包过滤 代理 复合型防火墙 Linux Abstract Recently, with computer network and Internet increasing rapidly, its have changed forever the way of corporations, enterprises, and organizations communicating. But the vital problem that they must face is how to protect their network and information system against attack by setting an effective network security solution. In all of this solution, firewall is one of the important parts. Firewall is a type of network security measure. A firewall is a system or group of systems that enforces an access control policy between two networks. In the dissertation, we study on the modeling, design, and implementation of firewall technologies and firewall application, By the comparing and classifying the all types of firewall technology, we present a whole concept of firewall technology to reader. It is the good guide to choice and building firewall system. In additional, we illustrate a process of designing and implementing a complex firewall system which make packet filter and proxy under Linux operation system, All of the detail of technologies and imple

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值