- 論壇徽章:
- 2
|
任務(wù):辦公室有10臺電腦,組成局域網(wǎng),其中1臺名為gate的機器配有ISDN卡,可撥號上網(wǎng),另外9臺機器也要上網(wǎng),由gate機器
做代理或網(wǎng)關(guān),共享其ISDN設(shè)備。原來的方案是:gate機器上的操作系統(tǒng)是Win98,使用的代理軟件是WinGate。現(xiàn)在,gate機器
的操作系統(tǒng)換成了Linux,怎么讓其它9臺機器也能上網(wǎng)?
經(jīng)過嘗試,我使用IPChains的IP偽裝轉(zhuǎn)發(fā)功能成功地做到了這一點。我的配置為:
藍點Linux 2.0,Kernel-2.2.16,isdn4linux v3.1pre1,上海貝爾生產(chǎn)的ISDN內(nèi)置卡,型號為SBT6021。
下面介紹具體做法。介紹順序為:內(nèi)核->;ipchains的配置->;其它機器的配置。
0、 前提條件
前提條件當然就是這臺配有ISDN卡,安裝了Linux的名為gate的機器,本身必須能夠順利撥號上網(wǎng)。我已做到了,具體操作過程
寫在我的上一篇文章《在Linux下使用ISDN撥號上網(wǎng)》中。
1、 內(nèi)核
這個方案的原理是:由于這臺gate機器建立撥號連接后,具有真正的IP地址,能夠正常地訪問Internet,而局域網(wǎng)內(nèi)其它機器卻
沒有真正的IP地址,不能象gate機器那樣正常地訪問Internet,解決辦法就是由gate機器代勞其它機器的Internet訪問請求,假
裝是它自己的。把這臺gate機器作為局域網(wǎng)的網(wǎng)關(guān),當它收到來自局域網(wǎng)內(nèi)其它機器的請求數(shù)據(jù)包時,進行偽裝,然后再轉(zhuǎn)發(fā)出
去;相應(yīng)地,當偽裝后發(fā)出去的數(shù)據(jù)包得到響應(yīng)返回時,先對該響應(yīng)數(shù)據(jù)包進行還原,再轉(zhuǎn)交給回局域網(wǎng)內(nèi)真正發(fā)出請求的那臺
機器。這種做法叫做IP Masquerade(IP偽裝)。
要Linux內(nèi)核支持IP偽裝這種功能,在編譯內(nèi)核時,必須選中下列選項:
Network firewalls
IP: firewalling
IP: masquerading
IP: ipportfw masq support
IP: ipautofw masquerade support
IP: ip fwmark masq-forwarding support
IP: ICMP masquerading
但我不必急于編譯內(nèi)核,如果現(xiàn)有的內(nèi)核已經(jīng)包含這些選項了,我又何必重復一遍呢。那我怎么知道現(xiàn)有內(nèi)核是否已經(jīng)包含這些
選項了呢?看內(nèi)核編譯配置文件/usr/src/linux/.config(注意:文件名以"."開頭的文件是隱藏文件,要用ls -a才可看到。)
我看到其中有下面這7行內(nèi)容,對應(yīng)于剛才的7個選項:
CONFIG_FIREWALL=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_MASQUERADE=y
CONFIG_IP_MASQUERADE_ICMP=y
CONFIG_IP_MASQUERADE_IPAUTOFW=m
CONFIG_IP_MASQUERADE_IPPORTFW=m
CONFIG_IP_MASQUERADE_MFW=m
"=y"表示內(nèi)核直接支持(代碼已鏈入內(nèi)核中),"=m"表示模塊支持(代碼在另外的內(nèi)核中,可由內(nèi)核載入)。于是這就表明,
藍點Linux 2.0的原有內(nèi)核已包含這些選項了,我就不用重新編譯內(nèi)核啦。
但仍然得做點事情,首先必須命令內(nèi)核,啟動IP轉(zhuǎn)發(fā)功能:
echo 1 >; /proc/sys/net/ipv4/ip_forward
往/proc/sys/net/ipv4/ip_forward里寫入"1"就行了。
有些功能如ftp, irc等的偽裝,需要相應(yīng)的模塊支持,這些模塊放在/lib/modules/2.2.16/ipv4目錄中,裝入它們:
depmod -a
modprobe ip_masq_ftp
modprobe ip_masq_irc
modprobe ip_masq_raudio
2、 ipchains的配置
藍點Linux 2.0包含的ipchains軟件已經(jīng)足夠滿足我的要求了,我就不必安裝新的,只需配置一下即可。Ipchains是一個包過
濾器,功能強大,設(shè)置也復雜,但我只想使用其IP偽裝轉(zhuǎn)發(fā)功能而已,設(shè)置得以簡化。我這臺Linux機器在一個局域網(wǎng)上,局域
網(wǎng)的域名為thalia.com,地址為210.96.100.0,這臺機器的主機名為gate,地址為210.96.100.10。
對ipchains過濾器進行設(shè)置,就是設(shè)置各種鏈及規(guī)則。先看看目前情況如何:
ipchains -L
得到類似下面的信息:
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
沒什么規(guī)則,3條鏈的策略都是接受。
由于只是使用偽裝轉(zhuǎn)發(fā)功能,所以只對forward鏈進行操作。
ipchains -P forward DENY
把forward鏈的策略設(shè)為DENY,拒絕通過。此后增加可通過的規(guī)則,逐漸允許更多的數(shù)據(jù)包通過,這是一種先緊后松的做法。
ipchains -A forward -s 210.96.100.0/255.255.255.0 -j MASQ
增加1條規(guī)則,這條規(guī)則說明:對來自210.96.100.0局域網(wǎng)內(nèi)(網(wǎng)絡(luò)掩碼為255.255.255.0)的數(shù)據(jù)包
(-s 210.96.100.0/255.255.255.0),進行偽裝處理(-j MASQ)。
這時候再看一下情況如何:
ipchains -L
得到類似下面的信息:
Chain input (policy ACCEPT):
Chain forward (policy DENY):
target prot opt source destination ports
MASQ all ------ 210.96.100.0/24 anywhere n/a
Chain output (policy ACCEPT):
forward鏈中多了1條MASQ規(guī)則。
要簡單地實現(xiàn)共享ISDN上網(wǎng),這已經(jīng)足夠了。
3、 其它機器的配置
配置局域網(wǎng)上的其它Win98, Win2000機器,要點是把缺省網(wǎng)關(guān)設(shè)為那臺Linux gate機器,DNS域名服務(wù)器也設(shè)為那臺
Linux gate機器。應(yīng)用軟件如IE,OutlookExpress等不用做任何設(shè)置,想象成ISDN裝在本機上就行。
我現(xiàn)在就去設(shè)置1臺Win98機器試試看。
(1)在“控制面板 | 網(wǎng)絡(luò) | 配置”下,選中“TCP/IP->;3Com PCI Ethernet Adapter”(這臺機器配的是3Com網(wǎng)卡),點
擊“屬性”按鈕,彈出TCP/IP屬性對話框。
(2)到“IP地址”頁中,指定IP地址,IP地址為210.96.100.14,子網(wǎng)掩碼為255.255.255.0;到“網(wǎng)關(guān)”頁中,添加新網(wǎng)關(guān)
210.96.100.10。
(3)機器重啟。
(4)打開IE,瀏覽http://168.160.224.103(即新浪網(wǎng)sina.com.cn),看到了新浪的首頁;
但是瀏覽http://www.sina.com.cn,卻不行。這是域名解析的問題。
(5)重復(1)步驟,彈出TCP/IP屬性對話框,到“DNS配置”頁中,啟用DNS,主機名寫zzh,添加DNS服務(wù)器搜索順
序210.96.100.10。機器重啟。打開IE,再次瀏覽http://www.sina.com.cn,這次好啦。
4、 形成shell文件
上面對內(nèi)核和ipchains的配置是逐條命令進行的,已經(jīng)全部成功通過,現(xiàn)在把它們寫成shell文件。
/etc/ppp/ip-masq-start文件內(nèi)容如下:
# IP masq
echo 1 >; /proc/sys/net/ipv4/ip_forward
depmod -a
modprobe ip_masq_ftp
modprobe ip_masq_irc
modprobe ip_masq_raudio
ipchains -P forward DENY
ipchains -A forward -s 210.96.100.0/255.255.255.0 -j MASQ
讓它成為可執(zhí)行文件:
chmod a+x /etc/ppp/ip-masq-start
以后事情就簡單了。要開啟IP偽裝轉(zhuǎn)發(fā)功能,下命令/etc/ppp/ip-masq-start。 |
|