文/圖 海嘯天鳴(Ansty)
現在國內部分大學和企業內部網路都使用了銳捷或港灣認證,最大可能地保證了自身的安全,但是這些認證有許多煩人的限制。例如銳捷官方認證程式在串連的時候會檢測運行平台上是否存在多網卡,是否有安裝代理軟體或者網關之類的軟體,如果發現有,就停止認證。
我們現在的網路環境是有兩條網路,分別為校園網和寬頻。區域網路內有多台機器,通過路由串連寬頻,同時也可以通過一台機器連上校園網,這台機器就是我們對校園網的出口路由了。
前面說了銳捷官方認證程式會檢測運行平台,會嚴查多網卡、代理、共用串連之類的,那麼我們就要想辦法繞過這些限制。對於Windows平台下的繞過,非常簡單就不做介紹了,這裡只說說Linux下的實現。
Linux下實現的基本原理是,區域網路內所有機器通過路由器互聯,路由器負責ADSL撥號,所有機器可以通過路由器上互連網。A機串連校園網並開啟共用串連功能,作為區域網路內機器進入校園網的網關,使用路由表來實現自動擇網。
網路環境
1)系統內容
系統版本:Ubuntu 7.10
ansty@Ansty:~$ sudo uname -a
Linux Ansty 2.6.22-14-generic #1 SMP Tue Dec 18 08:02:57 UTC 2007 i686 GNU/Linux
2)網卡情況
ansty@Ansty:~$ sudo ifconfig -a
eth0 鏈路封裝:乙太網路,硬體地址**:**:**:**:**:*0
inet地址:192.168.1.100,廣播位址:192.168.1.255,掩碼:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500,躍點數:1
接收資料包:62645,錯誤:0,丟棄:0,過載:0,幀數:0
發送資料包:61388,錯誤:0,丟棄:0,過載:0,載波:0
碰撞:0,發送隊列長度:1000
接收位元組:74313331 (70.8MB),發送位元組:4567716 (4.3MB)
中斷:19,基本地址:0x2000
eth1 鏈路封裝:乙太網路,硬體地址**:**:**:**:**:*2
inet地址:172.***.***.***,廣播:172.***.***.255,掩碼:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500,躍點數:1
接收資料包:15314,錯誤:0,丟棄:0,過載:0,幀數:0
發送資料包:6522,錯誤:0,丟棄:0,過載:0,載波:0
碰撞:0,發送隊列長度:1000
接收位元組:17196095 (16.3MB),發送位元組:475199 (464.0KB)
中斷:20
lo 鏈路封裝:本地環回
inet地址:127.0.0.1,掩碼:255.0.0.0
UP LOOPBACK RUNNING MTU:16436,躍點數:1
接收資料包:93,錯誤:0,丟棄:0,過載:0,幀數:0
發送資料包:93,錯誤:0,丟棄:0,過載:0,載波:0
碰撞:0,發送隊列長度:0
接收位元組:11384 (11.1KB),發送位元組:11384 (11.1KB)
其中eth0網卡用於串連到ADSL路由器,IP為192.168.1.100;eth1網卡用於串連到校園網提供的連接埠上,IP為172.***.***.***。
功能實現
在以上網路環境的基礎上,我們開始配置網路,以達到我們的目的。
1)網路設定
eth1這張網卡前面已經介紹過了,是用於串連到校園網的。因為我所在學校的校園網是動態擷取IP的,所以這裡要選擇“自動設定(DHCP)”,1所示。如果你的是固定IP就選固定IP自行輸入。這裡A機分配到的IP是172.***.***.***。
圖1
eth0這張網卡用於通過路由串連到ADSL網路,是通過路由器自動分配得到IP的,所以這裡還是選用動態擷取IP,得到的IP是192.168.1.100。
其他非Ubuntu系統可以上網查相關網卡配置資料,不過一般都可以通過ifconfig命令來對網卡進行配置的,這裡就不闡述了。
2)安裝認證程式
要達到我們的目的,就不能使用銳捷官方的認證程式,而要使用第三方的。這裡使用的是xmuruijie-1.3。相比xrgsu,它不會出現多網卡檢測,因為XMU-Ruijie是不檢測多網卡的,功能上只做一件事,就是完成認證。
這個程式是用Python語言編寫的,安裝非常簡單。
解壓:tar -xvzf xmuruijie-1.3.tar.gz
安裝:$cd xmuruijie-1.3,$sudo ./install.sh install
安裝的時候需要Root許可權,ubuntu終端下一定記得不要sudo,其他版本的Linux自行切換到Root許可權下即可。
3)配置
在終端裡面輸入“sudo gedit /etc/xmuruijie.conf”來配置xmuruijie.conf檔案,其關鍵內容如下。
# this is the configuration file of XMU-Ruijie
# parameters for authentication
[auth]
user: Your-Acount
passwd: Your-Password
interface: eth0
# parameters for daemonize:
[daemon]
logfile: /var/log/xmuruijie.log
pid: /var/run/xmuruijie.pid
將這個檔案裡面的your-Acout改成認證的帳號,Your-Passwor改成密碼,eth0改成串連校園網所用的網卡,這裡我改成了eth1。
因為我們學校需要用xrgsu演算法來認證,所以還需要修改/etc/init.d/xmuruijie,加上“-x”參數來啟動。在終端輸入“sudo gedit /etc/init.d/xmuruijie”,找到下面的部分,在“/usr/sbin/xmuruijie –d”後面加上一個“-x”即可。
case "$1" in
start)
echo "Starting xmuruijie"
/usr/sbin/xmuruijie -d -x
echo "Running dhcp client to get ip address..."
if [ -f "/sbin/dhcpcd" ] ; then
4)使用
在ubuntu系統中,網路操作都需要Root許可權,所以執行的時候不要忘了sudo。
啟動認證:sudo /etc/init.d/xmuruijie start
認證起來以後,程式是在後台啟動並執行。
停止認證:sudo /etc/init.d/xmuruijie stop
5)配置靜態路由表
到了這裡,認證算就搞定了,剩下的就是要配置Linux雙網的擇網了。預設雙網卡啟用連通了以後,系統的靜態路由表會出現兩個預設閘道,Linux下上網有時候會出現問題,所以我們要刪除一個預設閘道。
刪除前運行命令“ansty@Ansty:~/xmuruijie-1.3$ route -n”,得到如下的核心IP路由表。
目標 網關 子網路遮罩 標誌 躍點 引用 使用 介面
172.**.**.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 172.**.**.*** 0.0.0.0 UG 0 0 0 eth1
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
這裡我們要選擇用哪個網關作我們的預設閘道呢?其中172.**.**.***是校園網的網關,192.168.1.1是路由器的網關,連通到ADSL線路。
在ubuntu下,使用命令“sudo route del -net 0.0.0.0 netmask 0.0.0.0 gw 要刪除的網關”就可以刪掉不做預設閘道的地址,剩下的那個就是預設閘道了。我這裡用192.168.1.1路由作為預設閘道,則執行“sudo route del -net 0.0.0.0 netmask 0.0.0.0 172.**.**.***”,將校園網的網關刪除即可。
不過這樣做的話,我們就不能訪問校園網資源了,所有的資料只會從192.168.1.1這個網關出去。為瞭解決訪問校園網的問題,我們就要利用靜態路由表了,讓到某個IP段的資料通過指定網關出去。也就是說,添加一張靜態路由表就可以解決了。
命令格式為:sudo route add -net ip段 netmask 子網路遮罩 gw 網關
我這裡執行“sudo route add -net 202.***.***.0 netmask 255.255.255.0 gw 172.**.**.***”,即可將我所在學校的IP段通過172.**.**.***網關出去。
再運行命令“ansty@Ansty:~/xmuruijie-1.3$ route -n”查看一下核心IP路由表。
目標 網關 子網路遮罩 &nbs