一、背景描述
如圖,linux是一臺(tái)網(wǎng)關(guān)服務(wù)器,內(nèi)有3塊網(wǎng)卡 
eth1綁定172.17.0.0/16的ip,該網(wǎng)段IP可以通過172.17.1.1上網(wǎng) 
eth0綁定192.168.10.0/24的IP,該網(wǎng)段IP可以通過192.168.10.1上網(wǎng) 
eth2綁定192.168.1.1,是內(nèi)網(wǎng)用戶的網(wǎng)關(guān) 

二、需求分析
內(nèi)網(wǎng)用戶應(yīng)該走172.17.1.1這個(gè)路由上網(wǎng) 
但由于工作需要,部分用戶應(yīng)該有訪問圖中“專用網(wǎng)絡(luò)”的權(quán)限 
也就是說,應(yīng)該走192.168.10.1這個(gè)路由 
另外一點(diǎn),所有人應(yīng)該可以訪問FTP服務(wù)器,這個(gè)服務(wù)器的IP是192.168.10.96 
也就是說,走172.17.1.1路由的人,也應(yīng)該能訪問192.168.10.96,且可以上網(wǎng) 
三、解決方案
要解決這個(gè)問題,用到了一下幾個(gè)命令,具體使用方法需要另查資料 
ip route 
ip rule 
arp 
注:關(guān)于ip命令的用法,請(qǐng)查閱ip中文手冊(cè),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文件,以使計(jì)算機(jī)啟動(dòng)自動(dòng)設(shè)置IP地址 
2、創(chuàng)建非凡路由表 
vi /etc/iPRoute2/rt_table 
代碼: 
# 
# reserved values 
# 
255     local 
254     main 
253     default 
0       unspec 
200     NET10 
# 
# local 
# 
#1      inr.ruhep 
 
上面那個(gè)200 NET10為新添加,自定義編號(hào)為200,名字為NET10
3、向NET10路由中添加它自己的默認(rèn)路由
代碼:
ip route add default via 192.168.10.1 table NET10
注重,這個(gè)table NET10一定不要忘了寫,否則寫到了主路由表中 
4、創(chuàng)建非凡路由規(guī)則
用ip rule可以看到計(jì)算機(jī)當(dāng)前的路由規(guī)則 
引用: 
0: from all lookup local 
32766: from all lookup main 
32767: from all lookup default 
 
可以看到,規(guī)則中走了3個(gè)路由表,local、main、default 
我們平常用route看到的,實(shí)際是路由表main 
這些規(guī)則是按序號(hào)大小順序走的,一個(gè)不同,則走下一個(gè),知道通路或走完為止 
開始添加我們自己的路由NET10到路由表中 
代碼: 
ip rule add from 192.168.1.222 pref 10000 table NET10 
 
這個(gè)意思是說,假如來自IP地址為192.168.1.222的訪問,則啟用NET10的路由表中的路由規(guī)則 
而NET10的路由規(guī)則是什么呢?上面已經(jīng)設(shè)置了,走的是192.168.10.1的網(wǎng)段 
接下來,使LINUX可以NAT(這里不再細(xì)說HOW TO了) 
5、讓所有人可以訪問192.168.10.xx(這個(gè)IP不便說出來)
因?yàn)槠溆嗳硕甲吡?72.17.1.1這個(gè)路由,所以他們是無法訪問192.168.10.xx的 
怎么才能實(shí)現(xiàn)呢?再添加個(gè)策略就可以了! 
代碼: 
ip rule add to 192.168.10.xx pref 10001 table NET10 
 
這句話的意思是說,所有人,假如目的IP是192.168.10.xx,則臨時(shí)使用NET10的路由表 
這樣做,安全會(huì)不會(huì)有安全問題呢?路由變了,他們會(huì)不會(huì)訪問到專用網(wǎng)絡(luò)呢? 
不會(huì)的,因?yàn)槁酚梢?guī)則是to 192.168.10.xx,也就是目標(biāo)是96時(shí),才該路由的,訪問別的網(wǎng)站還是走原來的路由。 
假如說訪問到專用網(wǎng)絡(luò)的機(jī)器,也就只有10.xx這一臺(tái)而已。 
這里,我們還可以做一個(gè)小技巧,不告訴別人192.168.10.xx的地址,只告訴他們網(wǎng)關(guān)192.168.1.1上有這個(gè)服務(wù) 
iptables -t nat -A PREROUTING -d 192.168.1.1/32 --dport 21 -j DNAT --to 192.168.10.xx:21 
            6、防止其他人篡改IP地址而獲得非凡權(quán)限 
arp有個(gè)靜態(tài)功能CM,不是C,大家可能知道 
假如給一個(gè)IP地址強(qiáng)行綁定一個(gè)非他自己的MAC,會(huì)怎么樣呢?雙方會(huì)話將會(huì)失敗! 
好,我們來利用這一點(diǎn)! 
首先,我寫了一個(gè)文件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 
將編譯出一個(gè)可執(zhí)行文件 
注:不應(yīng)該包括主機(jī)IP地址本身,所以從2循環(huán)到254(255是廣播) 
其次,生成一個(gè)C的IP地址和全為00的MAC地址 
代碼: 
./iproute > /etc/ethers 
 
再次,修改IP-MAC匹配列表 
vi /etc/ethers 
具體怎么該我就不用細(xì)說了,相信大家都會(huì) 
最后,做靜態(tài)IP-MAC綁定 
arp -f 
7、為了安全,建立防火墻,修改main路由表
默認(rèn)的路由表應(yīng)該有192.168.10.0/24和172.17.0.0/16網(wǎng)段的內(nèi)容,為了安全,可以去掉 
另外,假如是AS3的話,還會(huì)有169.254.0.0/16的路由,具體為什么我不知道,去掉 
然后寫一個(gè)防火墻腳本,利用iptables,把你的機(jī)器變得更加堅(jiān)固!
 
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注