用linux构建路由器

linux构建路由器

网络结构如图,Linux路由器这台计算机标识为A,它与三个网段相连,192.168.2.0/24192.168.3.0./24192.168.1.0/24

A计算机必须拥有三块网卡,分别与三个网段相连。
 
假设:
eth0192.168.1.0相连,
eth1192.168.2.0相连,
eth2192.168.3.0相连。
备注:
由于这台PC机的网络接口比较多,所以在连接每个段的网络时,注意使用#route命令。
这样可以判断哪个网络接口是对外的。
首先来配置eth0。给这个网络接口分配地址192.168.1.15,运行下列命令:
# ifconfig eth0 192.168.1.15 netmask 255.255.255.0
#ifconfig  eth0  192.168.1.15  broadcast  192.168.1.255  netmask  255.255.255.0
为了使这个地址不再计算机重新启动后消失,编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件
增加一条静态路由:
# route   add   -net   192.168.1.0   netmask  255.255.255.0  dev   eth1
服务器端核心的两句:
打开LINUX的路由功能:
#echo   1   >/proc/sys/net/ipv4/ip_forward

②将局域网中所有机器的数据包都通过eth1所做的透明网关送出去,不做任何限制
或者说:IP伪装,使内部网路的封包经过伪装之后,使用对外的 eth1 网卡当作代表号,对外连线(启动内部对外转址)
#iptables  -t  nat  -A   POSTROUTING  -o  eth1  -s  192.168.2.0/24   -j  SNAT
   --to   192.168.1.15
# ptables  -t  nat  -A   POSTROUTING  -o  eth1  -s  192.168.2.0/24   -j  SNAT
   --to   192.168.1.15
③设置防火墙,增加规则
将会阻止来自某一特定IP范围内(92.168.2.0/24)数据包,因为该IP地址范围被管理员怀疑有大量恶意***者在活动:
#iptables  -t   filter   -A   INPUT   -s   192.168.2.0/24   -j   DROP
若想要取消的话,则删除规则
#iptables  -t   filter   -D  INPUT   -s   192.168.2.0/24   -j   DROP

④缺省的策略(一般不要设,会导致网络不通),最基本的原则是“先拒绝所有的数据包,然后再允许需要的”。下面来为每一个链设置缺省的规则:
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
这样会导致客户端不能访问服务器,服务器也不能上网
或者预设全部接受∶
#iptables -P INPUT ACCEPT
#iptables -P OUTPUT ACCEPT
#iptables -P FORWARD ACCEPT

⑤如果我们的Linux机器配置有防火墙,为防止防火墙将通过177端口(即xdmcp服务)的数据过虑,我们必须加上如下的规则:
#iptables  -A  INPUT  -p  udp  -s 0/0  -d 0/0   --dport   177   -j   ACCEPT
这个命令使iptables增加一条规则到INPUT,用以接受从所有的源(-s 0/0)到所有的目标(-d 0/0)通过端口177的数据包
或者用
#iptables  -I   INPUT   -i   eth0    -p  udp   192.168.2.155   --dport   177   -j  DROP(关闭177端口)
#iptables  -I   INPUT   -i   eth0    -p  udp   192.168.2.155   --dport   177   -j 
ACCEPT(打开177端口)
说明 插入一条规则,原本该位置上的规则将会往后移动一个顺位。
⑥一般被保护的内部网络可分成两部分,一部分是内部通讯区,只允许内部用户访问,绝对禁止外部用户访问,另一部分是停火区DMZ,对外提供有条件的服务。前者是系统的核心子网,后者易受到外部的***,是一个比较危险的子网环境。一方面要求严格保护内部子网,另一方面又要满足DMZ对外提供服务的需要,因此,必须采用分别保护的策略,对上述两个区域进行保护。两个区域要尽量独立,即使DMZ受到外部***,内部子网仍处于防火墙的保护之下。
⑦防火墙规则
#iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p ICMP -j DROP(将所有从外网进来的ping包都统统丢弃,不允许从外网向内网发ping)
#iptables –A INPUT –i eth1 –s 0.0.0.0/0 –p TCP –port ! 80 –j DROP(将所有由外网发起的非80端口的请求都统统丢弃, 只允许外网访问内网的HTTP服务)

 

补充说明:

⑴添加广播路由
#route   add  -host   255.255.255.255   -dev   eth1(内网机器连在eth1网卡上)
若要系统启动后自动添加路由,需要修改/etc/rc.local

⑵配置iptables,设置DNAT功能
# iptables –A PREROUTING  -t  nat   -p   tcp   -s ! 192.168.0.0/24  --dport  4899   -j DNAT  --to   192.168.0.2:4899
此功能是将访问LINUX机器TCP协议4899端口(内网除外)的所有连接转到内网的192.168.0.24899端口上
filter是最常用的表,在filter表中最常用的三个目标是ACCEPTDROPREJECTDROP会丢弃数据包,不再对其进行任何处理。REJECT会把出错信息传送至发送数据包的主机。

⑷增加规则
将会阻止来自某一特定IP范围内的数据包,因为该IP地址范围被管理员怀疑有大量恶意***者在活动:
# iptables -t filter -A INPUT -s 123.456.789.0/24 -j DROP
也可以很轻易地阻止所有流向***者IP地址的数据包,该命令稍有不同:
# iptables -t filter -A OUTPUT -d 123.456.789.0/24 -j DROP
注意这里的A选项,使用它说明是给现有的链添加规则。

⑸删除规则
网络上的恶意***者总是在变化的,因此需要不断改变IP。假设一个网上***者转移到新的IP地址,而其老的IP地址被分配给一些清白的用户,那么这时这些用户的数据包将无法通过你的网络。这种情况下,可以使用带-D选项的命令来删除现有的规则:
# iptables -t filter -D OUTPUT -d 123.456.789.0/24 -j DROP

⑹缺省的策略
创建一个具有很好灵活性、可以抵御各种意外事件的规则需要大量的时间。对于那些没有时间这样做的人,最基本的原则是“先拒绝所有的数据包,然后再允许需要的”。下面来为每一个链设置缺省的规则:
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
这里选项-P用于设置链的策略,只有三个内建的链才有策略。这些策略可以让信息毫无限制地流出,但不允许信息流入。很多时候需要接收外部信息,则可使用以下命令:
# iptables -t filter -A INPUT -s 123.456.789.0/24 -j ACCEPT

⑺清除所有的规则
#iptables –F(清除预设表 filter 中,所有规则链中的规则)
#iptables -F -t nat(清除nat表中,所有规则链中的规则)
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章