歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

在Linux系統下基於路由策略的IP地址控制

一、背景描述

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,是內網用戶的網關

二、需求分析

內網用戶應該走172.17.1.1這個路由上網

但由於工作需要,部分用戶應該有訪問圖中“專用網絡”的權限

也就是說,應該走192.168.10.1這個路由

另外一點,所有人應該可以訪問FTP服務器,這個服務器的IP是192.168.10.96

也就是說,走172.17.1.1路由的人,也應該能訪問192.168.10.96,且可以上網。

三、解決方案

要解決這個問題,用到了一下幾個命令,具體使用方法需要另查資料。

ip route

ip rule

arp

注:關於ip命令的用法,請查閱ip中文手冊,www.google.com上有。

1、綁定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地址。

2、創建特殊路由表

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

3、向NET10路由中添加它自己的默認路由

代碼:

ip route add default via 192.168.10.1 table NET10

注意,這個table NET10一定不要忘了寫,否則寫到了主路由表中。

4、創建特殊路由規則

用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了)。

5、讓所有人可以訪問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

6、防止其他人篡改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

7、為了安全,建立防火牆,修改main路由表

默認的路由表應該有192.168.10.0/24和172.17.0.0/16網段的內容,為了安全,可以去掉。

另外,如果是AS3的話,還會有169.254.0.0/16的路由,具體為什麼我不知道,去掉。

然後寫一個防火牆腳本,利用iptables,把你的機器變得更加堅固!



Copyright © Linux教程網 All Rights Reserved