Linux下架设代理服务器图文讲解(4)

3.3 设置IP的转发规则

  根据LINUX的内核版本不同,LINUX所提供的IP转发规则设置工作也不一样。在早期版本中,用的是ipfwadm,而在新的版本中(LINUX 2.2以后版本)使用的是ipchains。以下就简单地说明如何使用ipchains工具设置IP的转发规则。

  1. 设置思路

  一般来说,我们可以采用以下两种思路进行IP的转发规则设置:

  1) 先全面禁止所有的输入、输出、转发包,然后根据需要逐步打开所要求的各项服务。这种方法相对来说更安全,但是如果你对要实现的服务和功能不能清楚地知道应该打开哪些服务和端口就不太好办了。

  2) 我们也可以先打开所有的输入、输出、转发包。然后禁止一些危险包,IP欺骗包,广播包,ICMP服务类型攻击等。这种方法的缺点就是不够安全。但是比较方便、容易配置。所以本文以这种方法作为设置的思路。

  2. 设置前的准备

  在设置之前,我们应该对自己所要进行设置的网络环境和要求有一个全面的了解,以便在设置的时候做到心中有数。在本例中我们就是以图7-5所示为参考。

  另外,由于IP的转发规则比较多,而且容易变化,所以我们一般建立一个专门的脚本文件(例如:/etc/ipchains.set)来存放这些IP的转发规则。当创建之后,我们要用chmod命令赋予它可执行的权限。然后运行它,这样IP的转发规则就生效了。

  为了让这个IP转发规则能够在一启动就生效,我们必须在/etc/rc.d/rc.local中加上一行:

/etc/ipchains.set

  3. 基础知识

  LINUX内核在一启动时规定了三个规则表,这些表称为链。分别是进入(input),外出(output),中转(forward)。当一个包从网卡进来的时候,核心使用进入(input)链的规则来决定这个包的命运(通过还是丢弃);如果通过了,那么核心将决定包下一步该发往何处,假如它是送往另一台机器的,核心就运用中转(forward)链规则决定这个包的命运;最后,一个包发送出去之前,核心应用外出(output)链决定这个包的命运。

  lo interface:简写为lo,它是一个本地环路接口。假如包是由一个本地的进程为另一个本地进程产生的,那么它们通过lo口进出。

  4. 配置实例

  下面给出一个配置实例,汉字部分就是注解。

  1) 在开始说明一下脚本文件,和设定运行时的显示:

#!/bin/sh echo “Starting ipchains rules….”

  2) 将所有的规则清空:

/sbin/ipchains –F forward

/sbin/ipchains –F input

/sbin/ipchains –F output

  3) 设置链的初始规则,DENY代表丢弃,ACCEPT代表通过:

/sbin/ipchains –P forward DENY

/sbin/ipchains –P input ACCEPT

/sbin/ipchains –P output ACCEPT

  4)设置内部IP变量:

external_interface=192.200.168.1

  5)设置本地环路lo的的规则:

/sbin/ipchains –A input –j ACCEPT –i lo

/sbin/ipchains –A output –j ACCEPT –i lo

  由于,在本地进程之间的包,我们应该让它们顺利地通过,所以在此我们应该将input和output两条链均设置为通过(ACCEPT),注意,由于是本地环路,所以不存在forward(转发链)。

  6)防止IP欺骗:

/sbin/ipchains –A input j DENY –i eth1 –s 192.168.200.0/24

/sbin/ipchains –A input –j DENY –i eth1 –d 192.168.200.0/24

/sbin/ipchains –A output –j DENY –i eth1 –s 192.168.200.0/24

/sbin/ipchains –A output –j DENY –i eth1 –d 192.168.200.0/24

  所谓的IP欺骗就是指在IP包中存在着不可能的IP源地址或目标地址。eth1是一个与外部Internet相连,而192.168.200.0则是内部网的网络号,也就是说,如果有一个包从eth1进入主机,而说自己的源地址是属于192.168.200.0网络,或者说它的目标地址是属于这个网络的,那么这显然是一种IP欺骗,所以我们使用DENY将这个包丢弃(第一、二句)。

  要说明的是,192.168.200.0/24表示网络号是192.168.200.0而子网掩码是255.255.255.0,就代表了所有属于网络192.168.200.0的IP地址。

  同样的,如果有包要通过eth1向Internet,而且它的源地址或目标地址是属于网络192.168.200.0,那么显然也是不可能的。我们仍然使用DENY将它丢弃。

  7)防止广播包从IP代理服务器进入局域网:

/sbin/ipchains –A input –j DENY –i eth0 –s 255.255.255.255

/sbin/ipchains –A input –j DENY –i eth0 –d 0.0.0.0

/sbin/ipchains –A input –j DENY –i eth0 –s 240.0.0.0/3

  当包的源地址是255.255.255.255或目标地址是0.0.0.0,则说明它是一个广播包,当广播包想进入eth0时,我们就应该DENY,丢弃它。而240.0.0.0/3则是国际标准的多目广播地址,当有一个源地址是属于多目广播地址的包,我们将用DENY策略,丢弃它。

  8)设置IP包转发,使得局域网访问Internet的包能够顺利地转发到eth1。

/sbin/ipchains –A forward –j ACCEPT –i eth1 –s 192.168.200.0/24

/sbin/ipchains –A forward –j ACCEPT –i eth1 –d 192.168.200.0/24

  9) 启动IP Masquerading rules:

echo “1” > /proc/sys/net/ipv4_forward

  10) 增加一些专用模块:

/sbin/modprobe ip_masq_ftp

/sbin/modprobe ip_masq_quake

/sbin/modprobe ip_masq_irc

/sbin/modprobe ip_masq_user

/sbin/modprobe ip_masq_raudio

  11)设置eth0的IP转发规则:

/sbin/ipchains –A forword –j MASQ –I eth0 –s 192.168.200.0/24

  12) 假如你想禁止局域网上的一台主机192.168.200.5访问互联网,则可以设置:

/sbin/ipchains –A forward –j DENY –i eth1 –s 192.168.200.5/32

/sbin/ipchains –A forward –j DENY –i eth1 –d 192.168.200.5/32

  5. 客户端设置

  设置了IP代理服务器后,在客户端的设置是十分简单的。只要在网卡的TCP/IP属性中设置网关为192.168.200.1就可以无缝地访问Internet了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wypyfz.html