FreeBSD手工配置網(wǎng)絡(luò)完全指南
FreeBSD對(duì)網(wǎng)卡的支持是在系統(tǒng)內(nèi)核中實(shí)現(xiàn)的,要使一個(gè)網(wǎng)卡工作正常,就需要系統(tǒng)內(nèi)核擁有這個(gè)網(wǎng)卡的驅(qū)動(dòng),并配置好它占用的硬件資源。為了保證網(wǎng)卡被正確的檢測(cè)到,應(yīng)該使用dmesg來查看系統(tǒng)的檢測(cè)信息。
使用sysinstall可以完成最基本的網(wǎng)絡(luò)配置,可以配置主機(jī)名、域名、IP地址、缺省網(wǎng)關(guān)、DNS服務(wù)器等。配置的這些內(nèi)容被寫入系統(tǒng)的配置文件rc.conf中保留下來。當(dāng)系統(tǒng)安裝完成之后,在sysinstall的網(wǎng)絡(luò)配置界面下試圖重新配置網(wǎng)絡(luò)時(shí),由于網(wǎng)絡(luò)正在運(yùn)行, sysinstall將提示 “Running multi- user, assume that the network is already configured?” 此時(shí)需要回答No,表明需要重新設(shè)置網(wǎng)絡(luò),才會(huì)進(jìn)入配置界面。
手工配置網(wǎng)絡(luò)
使用sysinstall進(jìn)行網(wǎng)絡(luò)配置的優(yōu)點(diǎn)是所有的網(wǎng)絡(luò)數(shù)據(jù)將在同一個(gè)界面下進(jìn)行設(shè)置,不容易發(fā)生錯(cuò)誤和遺漏現(xiàn)象。但熟練的Unix用戶在平時(shí)維護(hù)系統(tǒng)的時(shí)候更喜歡使用手工配置,因?yàn)槭止づ渲糜泻芏鄡?yōu)點(diǎn):
熟悉命令之后,手工配置更快速,并且不需要重新啟動(dòng);
能夠使用配置命令的高級(jí)特性;
更容易維護(hù)配置文件,找出系統(tǒng)故障;
能更深刻的了解系統(tǒng)配置是如何進(jìn)行的。
僅僅使用sysinstall進(jìn)行設(shè)置,不可能對(duì)系統(tǒng)設(shè)置有深刻的了解,因而一旦發(fā)生問題,就容易束手無策。對(duì)于管理員來講,不能被動(dòng)的僅僅停留在能夠使用和操作的階段,而是要了解系統(tǒng)是如何進(jìn)行工作的,才能更好的進(jìn)行系統(tǒng)維護(hù)和管理。因而需要使用命令行方式。一旦熟悉之后,就會(huì)發(fā)現(xiàn)命令行才能提供全部靈活的操作能力,而全屏幕方式限制很多,過于呆板。
配置計(jì)算機(jī)名字
每個(gè)系統(tǒng)都應(yīng)該有一個(gè)名字,這個(gè)名字通常在系統(tǒng)安裝時(shí)確定,可以使用hostname命令來獲得當(dāng)前系統(tǒng)的名字。同樣設(shè)置計(jì)算機(jī)的名字也需要使用hostname命令,但這需要root權(quán)限:
# hostname wb.example.com.cn
# hostname
wb.example.com.cn
配置網(wǎng)絡(luò)界面
網(wǎng)絡(luò)界面實(shí)際就是網(wǎng)卡的驅(qū)動(dòng)程序,操作系統(tǒng)使用它與網(wǎng)絡(luò)硬件打交道,而配置網(wǎng)絡(luò)界面的操作應(yīng)該通過命令ifconfig來完成。理解了IP協(xié)議之后,使用ifconfig設(shè)置網(wǎng)絡(luò)界面相當(dāng)簡(jiǎn)單。
# ifconfig xl0 inet 192.168.1.64 netmask 255.255.255.0 up
其中xl0標(biāo)識(shí)一個(gè)3c905B的網(wǎng)絡(luò)界面,inet為inetnet的簡(jiǎn)寫,標(biāo)識(shí)IP協(xié)議,F(xiàn)reeBSD也支持其他幾種協(xié)議,如ipx、 atalk等。設(shè)置本網(wǎng)絡(luò)界面地址為192.168.1.64,網(wǎng)絡(luò)掩碼為255.255.255.0,up表示將這個(gè)網(wǎng)絡(luò)界面運(yùn)行起來。通常不需要這么復(fù)雜的寫法,簡(jiǎn)單的使用下面命令將使用缺省網(wǎng)絡(luò)掩碼配置這個(gè)網(wǎng)絡(luò)。
# ifconfig xl0 192.168.1.64
#p#使用down參數(shù)可以簡(jiǎn)單停止網(wǎng)絡(luò)界面的工作:
# ifconfig xl0 down
此外,還可以在一個(gè)網(wǎng)絡(luò)界面上捆綁上多個(gè)IP地址,第二個(gè)及其之后的IP地址可以使用alias參數(shù)指定,如果不再想使用這個(gè)地址,可以使用delete命令刪除這個(gè)ip別名。
# ifconfig xl0 192.168.100.100 alias
# ifconfig xl0 delete 192.168.100.100
ifconfig的另一個(gè)重要的作用是用來觀察當(dāng)前網(wǎng)絡(luò)的所有界面的配置狀態(tài),-a參數(shù)將列出所有界面的配置信息。更改配置之后最好使用這個(gè)命令查看效果。
# ifconfig -a
xl0: flags=8843 mtu 1500
inet 192.168.1.64 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:90:27:4e:f6:67
media: autoselect
supported media: autoselect 100baseTX 100baseTX 10baseT/UTP
-duplex> 10baseT/UTP
lp0: flags=8810 mtu 1500
tun0: flags=8050 mtu 1500
sl0: flags=c010 mtu 552
ppp0: flags=8010 mtu 1500
lo0: flags=8049 mtu 16384
inet 127.0.0.1 netmask 0xff000000
上圖顯示的信息包括各個(gè)網(wǎng)絡(luò)界面,如以太網(wǎng)界面xl0,并行口界面lp0,用于ppp撥號(hào)的tun0和ppp0界面,用于slip撥號(hào)的sl0界面等各個(gè)網(wǎng)絡(luò)界面的設(shè)置數(shù)據(jù)。
對(duì)于點(diǎn)對(duì)點(diǎn)的PPP界面,ppp0或tun0,通常要求指定另一端的IP地址,如果沒有另一端的IP地址,就不能正常設(shè)置網(wǎng)絡(luò),事實(shí)上PPP軟件會(huì)自動(dòng)完成這些設(shè)置,而不需手工執(zhí)行ifconfig。
# ifconfig tun0 inet 10.10.1.42 10.10.1.29
配置路由表
在同一個(gè)局域網(wǎng)上的計(jì)算機(jī)是直接連通的,但是不同的網(wǎng)絡(luò)上的計(jì)算機(jī)并沒有直接相連,只能通過一臺(tái)特殊的專用計(jì)算機(jī)-路由器來完成連通。路由器連接有多個(gè)網(wǎng)絡(luò)界面,每一個(gè)網(wǎng)絡(luò)界面連接到一個(gè)相應(yīng)的網(wǎng)絡(luò)上,有一個(gè)相應(yīng)的IP地址。而網(wǎng)絡(luò)內(nèi)部的計(jì)算機(jī)要向外連接,必須通過路由器進(jìn)行轉(zhuǎn)接,因此計(jì)算機(jī)必須知道路由器的IP地址。
缺省網(wǎng)關(guān)就是一個(gè)網(wǎng)絡(luò)中的最基本的路由器,負(fù)責(zé)幾乎所有的向外連接任務(wù)。假設(shè)缺省網(wǎng)關(guān)的地址為 192.168.1.254,則設(shè)置缺省網(wǎng)關(guān)的命令為:
# route add default 192.168.1.254
更復(fù)雜的情況下,網(wǎng)絡(luò)中可以有多個(gè)路由器,每個(gè)路由器負(fù)責(zé)到一些網(wǎng)絡(luò)的轉(zhuǎn)發(fā)任務(wù),因此應(yīng)該在計(jì)算機(jī)中配置這個(gè)網(wǎng)絡(luò)上所有路由器及這些路由器負(fù)責(zé)的網(wǎng)絡(luò)的路由數(shù)據(jù)。可以使用route命令增加到各個(gè)網(wǎng)絡(luò)的靜態(tài)路由數(shù)據(jù),其中-net參數(shù)是一個(gè)可選參數(shù),否則route從所給予的IP地址中判斷它是網(wǎng)絡(luò)還是計(jì)算機(jī),同樣可以指定 -host參數(shù)為一個(gè)遠(yuǎn)程計(jì)算機(jī)指定路由。
# route add -net 192.168.10.0/24 192.168.1.253
# route add -net 192.168.20.0 192.168.1.253
這個(gè)語句將在路由表中增加到網(wǎng)絡(luò)192.168.2.0和192.168.3.0的路由,其中ip地址后面的24用于指示網(wǎng)絡(luò)掩碼,它代表二進(jìn)制方式的網(wǎng)絡(luò)掩碼前面非0位的長(zhǎng)度,24個(gè)非0位的掩碼等價(jià)于255.255.255.0。如果沒有指定網(wǎng)絡(luò)掩碼,route就使用該ip對(duì)應(yīng)的缺省網(wǎng)絡(luò)掩碼。
設(shè)置完路由表之后,可以使用netstat -r命令來查看當(dāng)前的路由表的內(nèi)容。
# netstat -r
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.1.254 UGSc 1 941 xl0
127.0.0.1 127.0.0.1 UH 1 644 lo0
192.168.1 link#1 UC 0 0 xl0
192.168.1.254 0:e0:1e:ce:85:a9 UHLW 2 0 xl0
192.168.1.64 0:90:27:4e:f6:67 UHLW 1 6 lo0
192.168.1.253 link#1 UHLW 2 0 xl0
192.168.10 192.168.1.253 UGSc 0 0 xl0
192.168.20 192.168.1.253 UGSc 0 0 xl0
#p#除了顯示到達(dá)其他網(wǎng)絡(luò)的路由器之外,路由表中,還能顯示出到達(dá)本地網(wǎng)段計(jì)算機(jī)的方式,例如link#1表示通過第一個(gè)網(wǎng)絡(luò)界面,也能顯示直接連接的其他主機(jī)的MAC地址。
保存配置
上面的命令都是立即生效的命令,但是并沒有將信息寫入配置文件中,因此要想讓系統(tǒng)重起之后配置仍然有效,就必須更改配置文件/etc/rc.conf。這里可以設(shè)置主機(jī)名,各個(gè)網(wǎng)絡(luò)界面的屬性,以及各個(gè)路由設(shè)置等。
hostname="wb.example.com.cn"
network_interfaces="xl0 ppp0 lo0"
ifconfig_xl0="inet 192.168.1.64 netmask 255.255.255.0"
ifconfig_ppp0="inet 10.10.1.42 10.10.1.29"
ifconfig_lo0="inet 127.0.0.1"
defaultrouter=”192.168.1.254”
static_routes=”static_route1 static_route2”
static_route1=”-net 192.168.10.0/24 192.168.1.253”
static_route2=”-net 192.168.20.0/24 192.168.1.253”
其中network_interfaces定義了多個(gè)網(wǎng)絡(luò)界面的名字,此后相對(duì)應(yīng)的ifconfig_xl0等項(xiàng)的值是相應(yīng)的 ifconfig的參數(shù)。同樣static_routes參數(shù)也使用相同方式,來定義多個(gè)靜態(tài)路由。
配置名字解析
在Inetnet發(fā)展的早期,僅僅使用主機(jī)名配置文件來作主機(jī)名/IP之間的映射,這對(duì)于互連的計(jì)算機(jī)較少時(shí)十分有效,而隨著相連的計(jì)算機(jī)的增多,hosts文件會(huì)越來越大,如果用當(dāng)前Internet上的計(jì)算機(jī)數(shù)量去衡量的話,使用hosts文件根本不可能。
# cat /etc/hosts
127.0.0.1 localhost
192.168.1.64 wb.example.com.cn wb
192.168.1.254 gateway
192.168.1.253 gateway2
192.168.1.252 gateway3
202.102.245.49 www.online.ha.cn
因此人們發(fā)展了一種分級(jí)的方式管理名字與IP地址對(duì)應(yīng)關(guān)系,稱為域名解析系統(tǒng)。在這個(gè)系統(tǒng)中采用一種分級(jí)結(jié)構(gòu),每個(gè)組織負(fù)責(zé)自己的域及通過這個(gè)域內(nèi)的名字服務(wù)器,對(duì)域內(nèi)的計(jì)算機(jī)名字和IP地址的對(duì)應(yīng)關(guān)系進(jìn)行維護(hù),每個(gè)域內(nèi)還可以劃分為幾個(gè)不同的子域,子域由子域內(nèi)的名字服務(wù)器負(fù)責(zé)解析,這樣就降低了維護(hù)任務(wù)的復(fù)雜程度。通過標(biāo)準(zhǔn)協(xié)議DNS,Internet上所有的名字服務(wù)器可以相互交換數(shù)據(jù),這樣每臺(tái)計(jì)算機(jī)都能通過查詢名字服務(wù)器來查詢 Internet上所有的計(jì)算機(jī)名字。
要使用域名解析系統(tǒng)DNS,當(dāng)用作普通的DNS客戶時(shí),只需配置/etc/resolv.conf文件,指出所使用的名字服務(wù)器。
# cat /etc/resolv.conf
domain example.com.cn
nameserver 192.168.1.250
nameserver 192.168.2.210
這個(gè)配置文件指出本機(jī)使用的域?yàn)閑xample.com.cn,這樣如果查名字www,將會(huì)首先使用 www.example.com.cn作為全名。這里定義了兩個(gè)名字服務(wù)器,第一個(gè)為192.168.1.250,第二個(gè)為備用名字服務(wù)器192.168.2.210。
注意,因?yàn)榇藭r(shí)還不能通過DNS查詢名字,因此這里要使用IP地址而非主機(jī)名來指定名字服務(wù)器。
由于可以同時(shí)使用/etc/hosts主機(jī)文件和/etc/resolv.conf中配置的DNS服務(wù)器都能進(jìn)行計(jì)算機(jī)名字與IP 地址之間的轉(zhuǎn)換,就可以規(guī)定查找的順序,在/etc/host.conf文件中規(guī)定了進(jìn)行名字轉(zhuǎn)換時(shí)查找的順序。
#p#bind
hosts
系統(tǒng)缺省設(shè)置的順序如上,第一行為bind,(Berkeley Internet Name Domain)這是DNS域名系統(tǒng)的標(biāo)準(zhǔn)實(shí)現(xiàn),第二行為hosts,因此這表示先查找DNS服務(wù)器,然后再查找本機(jī)中的文件hosts。由于從DNS 服務(wù)器上查找名字可以得到域名的全部信息,因此如果本機(jī)具備DNS名字的情況下,應(yīng)該設(shè)置為查找DNS服務(wù)器優(yōu)先。
雖然一般DNS名字解析速度并不會(huì)造成太大的影響,但如果本地的DNS反應(yīng)較慢或者這臺(tái)FreeBSD計(jì)算機(jī)的名字沒有登記到DNS服務(wù)器上,那么服務(wù)器試圖查找本機(jī)名字的行動(dòng)就影響網(wǎng)絡(luò)應(yīng)用程序的連接速度,造成很多依賴于主機(jī)名的應(yīng)用程序啟動(dòng)非常緩慢,為了加速計(jì)算機(jī)名字解析速度,可以更改這個(gè)文件設(shè)置為先查找本機(jī)文件優(yōu)先。
使用基本網(wǎng)絡(luò)工具
當(dāng)配置好網(wǎng)絡(luò)之后,就可以使用系統(tǒng)提供的網(wǎng)絡(luò)程序來訪問網(wǎng)絡(luò),如使用ftp來從遠(yuǎn)程計(jì)算機(jī)上下載文件、telnet登錄上遠(yuǎn)程系統(tǒng)等。FreeBSD下不但提供了這些普通的網(wǎng)絡(luò)應(yīng)用程序,而且還提供了相當(dāng)豐富網(wǎng)絡(luò)工具,幫助進(jìn)行判斷網(wǎng)絡(luò)狀態(tài),發(fā)現(xiàn)網(wǎng)絡(luò)故障。
最基本的查看本地網(wǎng)絡(luò)設(shè)置的程序,包括前面提到的設(shè)置程序ifconfig、route,以及查看網(wǎng)絡(luò)狀態(tài)的程序netstat。還有另外的一些程序,可以用來判斷網(wǎng)絡(luò)連接狀態(tài)。
前面提到的netstat的用法是使用-r參數(shù)來獲得路由器的信息,而不使用這個(gè)參數(shù)啟動(dòng)netstat將報(bào)告當(dāng)前的連接狀態(tài),包括TCP/IP連接和Unix socket連接。
# netstat
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp 0 2 wb.online.ha.cn.telne www.1030 ESTABLISHED
tcp 0 0 wb.online.ha.cn.49157 wcarchive.cdrom..20 ESTABLISHED
tcp 0 0 wb.online.ha.cn.1139 wcarchive.cdrom..ftp ESTABLISHED
tcp 0 0 wb.online.ha.cn.telne www.1029 ESTABLISHED
tcp 56 0 wb.online.ha.cn.1138 wcarchive.cdrom..ftp CLOSE_WAIT
tcp 0 0 wb.online.ha.cn.telne www.1028 ESTABLISHED
tcp 0 0 wb.online.ha.cn.telne www.1027 ESTABLISHED
tcp 0 0 wb.online.ha.cn.1101 email.9999 ESTABLISHED
Active UNIX domain sockets
Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr
f458af00 dgram 0 0 0 f4571fc0 0 f458ae40
f458ae40 dgram 0 0 0 f4571fc0 0 f458af40
f458af40 dgram 0 0 0 f4571fc0 0 f458af80
f458af80 dgram 0 0 0 f4571fc0 0 f458afc0
f458afc0 dgram 0 0 0 f4571fc0 0 0
f4571fc0 dgram 0 0 f45705c0 0 f458af00 0 /var/run/log
可以使用ping來判斷與遠(yuǎn)程計(jì)算機(jī)是否能夠連通。
$ ping ftp.freebsd.org
PING wcarchive.cdrom.com (209.155.82.18): 56 data bytes
64 bytes from 209.155.82.18: icmp_seq=1 ttl=240 time=520.726 ms
64 bytes from 209.155.82.18: icmp_seq=2 ttl=240 time=773.465 ms
^C
要想知道這臺(tái)計(jì)算機(jī)是怎樣和遠(yuǎn)程計(jì)算機(jī)相連接的,可以使用traceroute來獲得從本機(jī)達(dá)到遠(yuǎn)程計(jì)算機(jī)所經(jīng)過的路由器,以及到達(dá)各個(gè)路由器的開銷等信息。
$ traceroute www.pku.edu.cn
traceroute to sun1000e.pku.edu.cn (162.105.254.12), 30 hops max, 40 byte packets
1 202.102.245.1 (202.102.245.1) 1.078 ms 0.862 ms 0.850 ms
2 202.102.235.165 (202.102.235.165) 157.337 ms 157.957 ms 174.054 ms
3 202.97.26.217 (202.97.26.217) 134.037 ms 57.994 ms 55.602 ms
4 1S7-rtr1-r-1-hbwh.cn.net (202.97.26.165) 274.626 ms 120.154 ms 580.097 ms
5 202.97.10.113 (202.97.10.113) 623.421 ms 888.556 ms 794.748 ms
6 6A05-rtr2-c-1-bjbj.cn.net (202.97.1.189) 411.728 ms 247.819 ms 245.688 ms
7 202.97.9.1 (202.97.9.1) 762.538 ms 945.893 ms 920.904 ms
8 202.97.8.254 (202.97.8.254) 1181.508 ms 1107.783 ms 374.649 ms
9 1F0-rtr1-r-1-bjbj.cn.net (202.97.2.14) 960.674 ms 635.770 ms 700.182 ms
10 202.97.16.190 (202.97.16.190) 391.926 ms 214.433 ms 721.839 ms
11 * 202.112.63.100 (202.112.63.100) 313.066 ms *
12 * * *
13 * * beijing-rgw-lan.cernet.net (202.112.1.66) 434.928 ms
14 * * *
15 * 202.112.5.194 (202.112.5.194) 282.973 ms 340.009 ms
16 sun1000e.pku.edu.cn (202.112.7.12) 827.202 ms * *
由于traceroute會(huì)在網(wǎng)絡(luò)上產(chǎn)生大量的數(shù)據(jù)流,因此一般不要頻繁使用這個(gè)命令,以免造成無謂的網(wǎng)絡(luò)流量。
為了獲得從一個(gè)計(jì)算機(jī)名字獲得其IP地址,或者從IP地址得到計(jì)算機(jī)名字,可以直接使用nslookup來查詢DNS服務(wù)器。
$ nslookup ftp.freebsd.org
Server: ns.hazzptt.net.cn
Address: 202.102.224.68
Non-authoritative answer:
Name: wcarchive.cdrom.com
Address: 209.155.82.18
Aliases: ftp.freebsd.org
$ nslookup 209.155.82.18
Server: ns.hazzptt.net.cn
Address: 202.102.224.68
Name: wcarchive.cdrom.com
Address: 209.155.82.18
nslookup不僅能用于查詢普通的IP地址,還可以查詢其他更復(fù)雜的DNS信息,如某個(gè)域的名字服務(wù)器的地址,郵件服務(wù)器地址等
【編輯推薦】