在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,把你的機器變得更加堅固!
相關文章
相關標籤/搜索