在Linux下基于路由策略的IP地址控制

1、背景描述
  如图,LINUX是一台网关 服务器,内有3块网卡
  eth1绑定172.17.0.0/16的IP,该网段IP能够经过172.17.1.1 上网
  eth0绑定192.168.10.0/24的IP,该网段IP能够经过192.168.10.1上网
  eth2绑定192.168.1.1,是内网用户的网关
  2、需求分析
  内网用户应该走172.17.1.1这个 路由上网
  但因为工做须要,部分用户应该有访问图中“专用 网络 ”的权限
  也就是说,应该走192.168.10.1这个路由
  另一点,全部人应该能够访问FTP服务器,这个服务器的IP是192.168.10.96
  也就是说,走172.17.1.1路由的人,也应该能访问192.168.10.96,且能够上网。
  3、解决方案
  要解决这个问题,用到了一下几个命令,具体 使用 方法须要另查资料。
  ip route
  ip rule
   arp
  注:关于ip命令的用法,请查阅ip中文手册, [url]www.google.com[/url]上有。
  一、绑定IP
  ifconfig eth1 172.17.3.x netmask 255.255.0.0
  ifconfig eth0 192.168.10.2 netmask 255.255.255.0
  ifconfig eth2 192.168.1.1 netmask 255.255.255.0
  而后分别修改/etc/sysconfig/network-script/ifcfg-ethx文件,以使计算机启动自动设置IP地址。
  二、建立特殊路由表
  vi /etc/iproute2/rt_table
   代码 :
  #
  # reserved values
  #
  255   local
  254   main
  253   default
  0     unspec
  
  200   NET10
  #
  # local
  #
  #1     inr.ruhep
  上面那个200 NET10为新添加,自定义编号为200,名字为NET10
  三、向NET10路由中添加它本身的默认路由
  代码:
  ip route add default via 192.168.10.1 table NET10
  注意,这个table NET10必定不要忘了写,不然写到了主路由表中。
  四、建立特殊路由规则
  用ip rule能够看到 计算机 当前的路由规则。
  引用:
  0: from all lookup local
  32766: from all lookup main
  32767: from all lookup default
  能够看到,规则中走了3个路由表,local、main、default
  咱们日常用route看到的,实际是路由表main
  这些规则是按序号大小顺序走的,一个不一样,则走下一个,知道通路或走完为止。
  开始添加咱们本身的路由NET10到路由表中。
  代码:
  ip rule add from 192.168.1.222 pref 10000 table NET10
  这个意思是说,若是来自IP 地址 为192.168.1.222的访问,则启用NET10的路由表中的路由规则。
  而NET10的路由规则是什么呢?上面已经设置了,走的是192.168.10.1的网段。
  接下来,使LINUX能够NAT(这里再也不细说HOW TO了)。
  五、让全部人能够访问192.168.10.xx(这个IP不便说出来)
  由于其他人都走了172.17.1.1这个路由,因此他们是没法访问192.168.10.xx的。
  怎么才能实现呢?再添加个 策略 就能够了!
  代码:
  ip rule add to 192.168.10.xx pref 10001 table NET10
  这句话的意思是说,全部人,若是目的IP是192.168.10.xx,则临时使用NET10的路由表。
  这样作, 安全会不会有安全 问题 呢?路由变了,他们会不会访问到专用网络呢?
  不会的,由于路由规则是to 192.168.10.xx,也就是目标是96时,才该路由的,访问别的网站仍是走原来的路由。
  若是说访问到专用网络的机器,也就只有10.xx这一台而已。
  这里,咱们还能够作一个小 技巧 ,不告诉别人192.168.10.xx的地址,只告诉他们网关192.168.1.1上有这个服务。
  iptables -t nat -A PREROUTING -d 192.168.1.1/32 --dport 21 -j DNAT --to 192.168.10.xx:21
  六、防止其余人篡改IP地址而得到特殊权限
  arp有个静态功能CM,不是C,你们可能知道。
  若是给一个IP地址强行绑定一个非他本身的MAC,会怎么样呢?双方会话将会失败!
  好,咱们来利用这一点!
  首先,我写了一个文件iproute.c
  代码:
  #include <stdlib.h>
  #include <stdio.h>
  main ()
  {
      int i;
      for(i=2;i<255;i++)
            printf("192.168.1.%d\t\t00:00:00:00:00:00\n",i);
  }
  gcc iproute.c -o iproute
  将编译出一个可执行文件
  注:不该该包括 主机 IP地址自己,因此从2循环到254(255是广播)
  其次,生成一个C的IP地址和全为00的MAC地址
  代码:
  ./iproute > /etc/ethers
  再次,修改IP-MAC匹配列表
  vi /etc/ethers
  具体怎么该我就不用细说了,相信你们都会
  最后,作静态IP-MAC绑定
  arp -f
  七、为了安全,创建 防火墙,修改main路由表
  默认的路由表应该有192.168.10.0/24和172.17.0.0/16网段的内容,为了安全,能够去掉。
  另外,若是是AS3的话,还会有169.254.0.0/16的路由,具体为何我不知道,去掉。
  而后写一个防火墙脚本,利用iptables,把你的机器变得更加坚固!
相关文章
相关标签/搜索