歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix基礎知識 >> 基於OpenBSD的寬帶上網共享和網絡服務

基於OpenBSD的寬帶上網共享和網絡服務

日期:2017/2/28 10:24:26   编辑:Unix基礎知識
OpenBSD
  前言
  隨著個人計算機的普及,對於家庭用戶來說,擁有一台以上PC的已經不少了,我們希望能夠方便地同時上網。一些規模較小的學校、科研單位、商業機構,由於難以負擔足夠IP地址的費用,對共享IP上網也有迫切的需要。
  
  隨著寬帶上網的逐漸推廣,多台計算機共享一個Internet高帶寬的連接顯得越來越有意義。比較常見的做法一是購買專門的網絡地址翻譯(下簡稱NAT)機,二是在一台網關計算機上安裝NAT軟件或者應用程序代理服務軟件1,其他計算機通過這個網關上網。第一種方法雖然安裝、維護比較簡便,性能好,但是需要進行一定的設備投資,並且NAT機的功能相對比較單一,難以實現其他Internet服務。第二種方法,網關機的操作系統如果使用Windows 95/98則穩定性不佳,不適合長期開機;使用Windows NT/2000則對作為硬件配置要求相對較高。
  
  於是手頭有一台低配置PC機的用戶可能會想到Linux,但是本文要介紹的是BSD。與Linux不同,BSD是AT&T UNIX的“後代”,它不象Linux那樣發行版本眾多,卻有更好的性能、可靠性與安全性。
  
  目前有3個源碼開放的BSD版本:FreeBSD,NetBSD和OpenBSD。FreeBSD是用戶數最多的版本,它的主要特點是性能好,Yahoo、ftp.cdrom.com等知名網站用的就是這個操作系統。NetBSD的特點是對各種硬件平台的廣泛支持,它支持從手持設備到大型服務器的多種平台。OpenBSD的特點是安全性,在OpenBSD的網址,我們可以看到這樣一句話:“三年來沒有發現缺省安裝的OpenBSD的一個遠程安全漏洞!”,另外它支持的硬件平台也不少,不過目前還不支持SMP(對稱多處理器)。
  
  現在我們就以線纜(Cable)寬帶接入為例,談談如何利用基於OpenBSD操作系統的網關機,使多台計算機共享一個線纜調制解調器(Cable Modem,下稱CM)的Internet連接。
  
  安裝OpenBSD
  我們先准備一下硬件:Pentium133 CPU,16M內存,1G硬盤,2塊以太網卡。其實OpenBSD可以在低得多的配置上運行得很好,不過既然我們會開通一些網絡服務,配置還是不要太低了。另外如果共享上網的客戶機很多,可以適當增加內存。顯卡、顯示器、軟驅、CDROM和鍵盤,僅僅在安裝、配置的過程中需要,一旦系統投入運行,就都不需要了。
  
  兩點建議:(1) OpenBSD的分區工具的功能強大,但是易用性不大好(不如Linux),所以建議將整個硬盤全部分配給OpenBSD使用,不要和其他操作系統混用--不是不可以,而是分區比較麻煩。(2)網卡建議用常見的NE2000兼容網卡,比如Realtek RTL8029(AS)芯片的10M PCI卡。OpenBSD支持的網卡並不是很多,用名牌的網卡對於速度等方面並沒有太大的幫助,萬一兼容性有問題還要添麻煩。
  
  OpenBSD有3種安裝方式:CDROM安裝,FTP安裝和硬盤安裝。如果PC的BIOS支持光盤啟動的話,那麼CDROM安裝是最方便的,我們來看一下安裝的主要過程。
  
  從CDROM啟動後選擇(I)nstall,對提示的“Specify terminal type”直接按回車采用默認值,系統會列出當前所有的硬盤並提問“Which disk is the root disk?”。注意對於IDE接口的硬盤,BSD給它的設備名是 wd0,wd1,……;對於SCSI接口的硬盤是 sd0,sd1,……。我們的PC有一個IDE硬盤,輸入wd0並回車。系統提問“Do you want to use the *entire* disk for OpenBSD?”,輸入yes並回車,系統會啟動fdisk並將整個硬盤空間都分給BSD系統。輸入write、quit,系統會保存分區設置並啟動disklabel。Disklabel的作用是在fdisk建立的給BSD用的BIOS分區中,劃分出不同的BSD分區。我們可以在disklabel的命令提示符“>”下,隨時使用?命令顯示幫助信息,使用p命令打印當前的BSD分區劃分情況。為了不搞得太復雜,我們僅把它劃分為一個“/”和一個swap分區。先用z命令把BSD分區清空,再用“a b”命令添加一個新分區,offset直接回車用缺省值,size輸入“128M”(如果任務比較重而有足夠的磁盤空間,也可以大一些比如256M甚至512M),FS type用缺省的“swap”。然後用“a a”命令添加一個新分區,offset用缺省值,size輸入“*”使用全部剩余空間,FS type用缺省的“4.2BSD”。最後用w、q保存並退出disklabel。接著系統會提示更改mount point信息,看看wd0a和wd0b是不是分別mount到了“/”和“swap”,完成後輸入done結束。如果一切正確就一直回車直到看到“Are you really sure that you're ready to proceed?”,輸入“y”回車,系統就開始格式化硬盤了。格式化完畢,先不要進行網絡配置。接著是設置root用戶的口令。下面問要不要運行X Window System,這個圖形用戶界面對我們沒有用,如果硬盤空間夠的話,選上也可以。下一步就是正式開始安裝了,系統會問從什麼地方安裝(我們這裡是CDROM)、CDROM設備名、文件系統種類以及安裝文件位置,全部用缺省值。接著系統列出全部安裝包,可以輸入一個“*”全部選上,再輸入一個“done”開始安裝。安裝完畢後系統問“Extract more sets?”,直接回車跳過。下一步是設置時區,中國是在Asia下面,選擇你所在的城市。最後系統會建立啟動信息等等,直到看到“CONGRATULATIONS! You have successfully installed OpenBSD! ”說明安裝已經成功,系統返回命令提示符下,輸入“reboot”並回車,重新啟動系統。
  
  配置網絡
  重新啟動後,用root用戶和剛才設置的口令進入系統,鍵入“ifconfig -a”查看所有網絡接口,我們會看到有諸如“ne3: …… media: Ethernet ……”這樣的顯示,針對不同的網卡OpenBSD會有不同的接口名,這裡假設用的的是NE2000兼容網卡,命名為“ne”,後面的數字表示它插在第幾號PCI槽(從AGP槽的那面開始數)。現在假設我們的兩塊網卡分別插在3號、4號PCI槽裡,則它們的接口名分別是ne3、ne4。現在我們打算把ne4接到CM上,把ne3接到內部LAN的HUB上。
  
  由於CM是通過DHCP來獲得IP地址的,我們先把ne4設置成通過DHCP獲得IP地址:
  # echo dhcp > /etc/hostname.ne4
  OpenBSD啟動的時候發現hostname.ne4中的內容是“dhcp”,就會啟動dhcp client去請求IP地址、子網掩碼、網關地址、DNS地址等設置。可以手工調整dhcp client的配置,但是這裡沒有必要了。
  
  然後我們設置連接內部LAN的ne3的網絡設置(假設內部網絡使用的是保留的IP地址192.168.0.x,子網掩碼是255.255.255.0):
  # echo "inet 192.168.0.1 255.255.255.0 NONE" > /etc/hostname.ne3
  將ne3的IP地址設置為192.168.0.1,最後的那個NONE表示不指定網卡的media option。
  為了在NAT機上可以正確進行DNS解析,我們還需要配置一下/etc/resolv.conf文件,舉例來說:
  # cat /etc/resolv.conf
  nameserver 210.52.149.2
  nameserver 202.96.209.133
  lookup file bind
  第一、 二行列出了兩個不同的DNS服務器的IP,第三行表示先從/etc/hosts文件中查找,如果失敗再到DNS服務器查找。
  第二、
  NAT大概的運作方式是這樣的:假設內部網絡上的計算機A需要訪問Internet,則A把數據包發送到網關機N,N收到A的數據包後,把請求者的IP地址換成自己,然後發送到目的地去。收到目的地發來的回答後,N再把它轉發到A機。NAT是在低層次起作用的,與在高層次起作用的代理比如應用層代理(常見的有HTTP proxy等)相比,對於A機來說,它不用將自己的應用程序設置成使用代理(有的應用程序並不支持代理),除了無法從外部直接連接到A機之外,所有的使用都和直接連接Internet一樣。
  下面我們來配置NAT:
  修改 /etc/rc.conf
  ipfilter=YES
  ipnat=YES
  修改 /etc/sysctl.conf
  net.inet.ip.forwarding=1
  再修改配置防火牆規則,現在我們先不設置任何復雜規則,僅僅允許所有的信息通過:
  # cat /etc/ipf.rules
  pass in from any to any
  pass out from any to any
  然後是NAT規則:
  # cat /etc/ipnat.rules
  map ne4 192.168.0.0/24 -> ne4/32 portmap tcp/udp 10000:60000
  map ne4 192.168.0.0/24 -> ne4/32
  這些規則表示將內部網的IP地址192.168.0.x 、子網掩碼為255.255.255.0,映射到ne4網絡接口上去。第一行是映射TCP和UDP的,第二行是映射其他協議的。
  
  現在所有的配置都完成了,把CM和ne4連接好,並把內部LAN的HUB連接到ne3上,鍵入reboot重啟動。將內部LAN上的計算機的網卡接口的IP設置成 192.168.0.2,192.168.0.3……,子網掩碼為255.255.255.0,網關為192.168.0.1,DNS服務器為ISP提供的DNS服務器的IP(比如210.52.149.2,202.96.209.133),根據需要可能需要重啟動。試試看是不是已經可以上Internet了?
  
  進一步的配置
  下面介紹一下在我們剛才構築的基於OpenBSD的NAT網關機的基礎上,進一步設置一些網絡服務的方法。值得注意的是:從安全性考慮,不是必要的服務就不要開!
  
  1. 遠程登錄
  OpenBSD缺省安裝後,啟動的服務很少。telnet服務是缺省關閉的,因為telnet是明文的協議,有被竊聽的危險。OpenBSD打開了ssh服務,這是一個加密的遠程登錄服務。為了使用這個服務,必須在客戶機上安裝支持ssh協議的終端軟件。在Windows操作系統下,可以用SecureCRT。安裝完終端軟件後,建立到服務器192.168.0.1的連接,注意使用standard SSH。
  
  2. 串口終端
  對於這個NAT服務器來說,我們可以不要顯卡、顯示器和鍵盤。但是如果配置網絡出了問題,遠程登錄無法連接到服務器就比較麻煩了--因為我們已經把服務器的顯示系統和鍵盤都去掉了。所以有必要建立一個比較保險的連接途徑。我們可以通過串口終端的方式,連接到服務器。
  
  a) echo -P > /boot.config 這個目的是告訴boot模塊,如果發現鍵盤不存在,就進入serial console模式;
Copyright © Linux教程網 All Rights Reserved