FREEBSD手工配置網絡


在FreeBSD系統中,網絡能力十分重要,對於一個標准的FreeBSD系統,至少要有一個網絡界面以便與其他計算機通信。最常見的網絡界面為以太網卡。此外FreeBSD也支持Token Ring和FDDI,以及普通電話撥號連接、ISDN、ATM等廣域網連接方式。在計算機網絡領域內最常使用的連接方式是本地多台計算機使用局域網互聯,再通過一台專用計算機與廣域網連接,因此一個計算機最常使用的是局域網連接方式,並且局域網是永久連接方式,設置十分簡單。
FreeBSD對網卡的支持是在系統內核中實現的,要使一個網卡工作正常,就需要系統內核擁有這個網卡的驅動,並配置好它占用的硬件資源。為了保證網卡被正確的檢測到,應該使用dmesg來查看系統的檢測信息。
使用sysinstall可以完成最基本的網絡配置,可以配置主機名、域名、IP地址、缺省網關、DNS服務器等。配置的這些內容被寫入系統的配置文件rc.conf中保留下來。當系統安裝完成之后,在sysinstall的網絡配置界面下試圖重新配置網絡時,由於網絡正在運行,sysinstall將提示 “Running multi- user, assume that the network is already configured?” 此時需要回答No,表明需要重新設置網絡,才會進入配置界面。

手工配置網絡

  使用sysinstall進行網絡配置的優點是所有的網絡數據將在同一個界面下進行設置,不容易發生錯誤和遺漏現象。但熟練的Unix用戶在平時維護系統的時候更喜歡使用手工配置,因為手工配置有很多優點:

  • 熟悉命令之后,手工配置更快速,並且不需要重新啟動;
  • 能夠使用配置命令的高級特性;
  • 更容易維護配置文件,找出系統故障;
  • 能更深刻的了解系統配置是如何進行的。

  僅僅使用sysinstall進行設置,不可能對系統設置有深刻的了解,因而一旦發生問題,就容易束手無策。對於管理員來講,不能被動的僅僅停留在能夠使用和操作的階段,而是要了解系統是如何進行工作的,才能更好的進行系統維護和管理。因而需要使用命令行方式。一旦熟悉之后,就會發現命令行才能提供全部靈活的操作能力,而全屏幕方式限制很多,過於呆板。

配置計算機名字

  每個系統都應該有一個名字,這個名字通常在系統安裝時確定,可以使用hostname命令來獲得當前系統的名字。同樣設置計算機的名字也需要使用hostname命令,但這需要root權限:

# hostname wb.example.com.cn 
# hostname 
wb.example.com.cn

配置網絡界面

  網絡界面實際就是網卡的驅動程序,操作系統使用它與網絡硬件打交道,而配置網絡界面的操作應該通過命令ifconfig來完成。理解了IP協議之后,使用ifconfig設置網絡界面相當簡單。

# ifconfig xl0 inet 192.168.1.64 netmask 255.255.255.0 up

  其中xl0標識一個3c905B的網絡界面,inet為inetnet的簡寫,標識IP協議,FreeBSD也支持其他幾種協議,如ipx、atalk等。設置本網絡界面地址為192.168.1.64,網絡掩碼為255.255.255.0,up表示將這個網絡界面運行起來。通常不需要這么復雜的寫法,簡單的使用下面命令將使用缺省網絡掩碼配置這個網絡。

# ifconfig xl0 192.168.1.64

  使用down參數可以簡單停止網絡界面的工作:

# ifconfig xl0 down

  此外,還可以在一個網絡界面上捆綁上多個IP地址,第二個及其之后的IP地址可以使用alias參數指定,如果不再想使用這個地址,可以使用delete命令刪除這個ip別名。

# ifconfig xl0 192.168.100.100 alias 
# ifconfig xl0 delete 192.168.100.100

  ifconfig的另一個重要的作用是用來觀察當前網絡的所有界面的配置狀態,-a參數將列出所有界面的配置信息。更改配置之后最好使用這個命令查看效果。

# ifconfig -a 
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> 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 <full-duplex> 100baseTX 10baseT/UTP <full -duplex> 10baseT/UTP 
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 
tun0: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 1500 
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552 
ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500 
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 
        inet 127.0.0.1 netmask 0xff000000

上圖顯示的信息包括各個網絡界面,如以太網界面xl0,並行口界面lp0,用於ppp撥號的tun0和ppp0界面,用於slip撥號的sl0界面等各個網絡界面的設置數據。
對於點對點的PPP界面,ppp0或tun0,通常要求指定另一端的IP地址,如果沒有另一端的IP地址,就不能正常設置網絡,事實上PPP軟件會自動完成這些設置,而不需手工執行ifconfig。

# ifconfig tun0 inet 10.10.1.42 10.10.1.29

配置路由表

  在同一個局域網上的計算機是直接連通的,但是不同的網絡上的計算機並沒有直接相連,只能通過一台特殊的專用計算機-路由器來完成連通。路由器連接有多個網絡界面,每一個網絡界面連接到一個相應的網絡上,有一個相應的IP地址。而網絡內部的計算機要向外連接,必須通過路由器進行轉接,因此計算機必須知道路由器的IP地址。
  缺省網關就是一個網絡中的最基本的路由器,負責幾乎所有的向外連接任務。假設缺省網關的地址為 192.168.1.254,則設置缺省網關的命令為:

# route add default 192.168.1.254

  更復雜的情況下,網絡中可以有多個路由器,每個路由器負責到一些網絡的轉發任務,因此應該在計算機中配置這個網絡上所有路由器及這些路由器負責的網絡的路由數據。可以使用route命令增加到各個網絡的靜態路由數據,其中-net參數是一個可選參數,否則route從所給予的IP地址中判斷它是網絡還是計算機,同樣可以指定 -host參數為一個遠程計算機指定路由。

# route add -net 192.168.10.0/24 192.168.1.253 
# route add -net 192.168.20.0 192.168.1.253

  這個語句將在路由表中增加到網絡192.168.2.0和192.168.3.0的路由,其中ip地址后面的24用於指示網絡掩碼,它代表二進制方式的網絡掩碼前面非0位的長度,24個非0位的掩碼等價於255.255.255.0。如果沒有指定網絡掩碼,route就使用該ip對應的缺省網絡掩碼。
  設置完路由表之后,可以使用netstat -r命令來查看當前的路由表的內容。

# 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

  除了顯示到達其他網絡的路由器之外,路由表中,還能顯示出到達本地網段計算機的方式,例如link#1表示通過第一個網絡界面,也能顯示直接連接的其他主機的MAC地址。

保存配置

  上面的命令都是立即生效的命令,但是並沒有將信息寫入配置文件中,因此要想讓系統重起之后配置仍然有效,就必須更改配置文件/etc/rc.conf。這里可以設置主機名,各個網絡界面的屬性,以及各個路由設置等。

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定義了多個網絡界面的名字,此后相對應的ifconfig_xl0等項的值是相應的 ifconfig的參數。同樣static_routes參數也使用相同方式,來定義多個靜態路由。

配置名字解析

  在Inetnet發展的早期,僅僅使用主機名配置文件來作主機名/IP之間的映射,這對於互連的計算機較少時十分有效,而隨着相連的計算機的增多,hosts文件會越來越大,如果用當前Internet上的計算機數量去衡量的話,使用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

  因此人們發展了一種分級的方式管理名字與IP地址對應關系,稱為域名解析系統。在這個系統中采用一種分級結構,每個組織負責自己的域及通過這個域內的名字服務器,對域內的計算機名字和IP地址的對應關系進行維護,每個域內還可以划分為幾個不同的子域,子域由子域內的名字服務器負責解析,這樣就降低了維護任務的復雜程度。通過標准協議DNS,Internet上所有的名字服務器可以相互交換數據,這樣每台計算機都能通過查詢名字服務器來查詢Internet上所有的計算機名字。
  要使用域名解析系統DNS,當用作普通的DNS客戶時,只需配置/etc/resolv.conf文件,指出所使用的名字服務器。

# cat /etc/resolv.conf 
domain example.com.cn 
nameserver 192.168.1.250 
nameserver 192.168.2.210

  這個配置文件指出本機使用的域為example.com.cn,這樣如果查名字www,將會首先使用 www.example.com.cn作為全名。這里定義了兩個名字服務器,第一個為192.168.1.250,第二個為備用名字服務器192.168.2.210。
  注意,因為此時還不能通過DNS查詢名字,因此這里要使用IP地址而非主機名來指定名字服務器。
  由於可以同時使用/etc/hosts主機文件和/etc/resolv.conf中配置的DNS服務器都能進行計算機名字與IP 地址之間的轉換,就可以規定查找的順序,在/etc/host.conf文件中規定了進行名字轉換時查找的順序。

bind 
hosts

  系統缺省設置的順序如上,第一行為bind,(Berkeley Internet Name Domain)這是DNS域名系統的標准實現,第二行為hosts,因此這表示先查找DNS服務器,然后再查找本機中的文件hosts。由於從DNS 服務器上查找名字可以得到域名的全部信息,因此如果本機具備DNS名字的情況下,應該設置為查找DNS服務器優先。
  雖然一般DNS名字解析速度並不會造成太大的影響,但如果本地的DNS反應較慢或者這台FreeBSD計算機的名字沒有登記到DNS服務器上,那么服務器試圖查找本機名字的行動就影響網絡應用程序的連接速度,造成很多依賴於主機名的應用程序啟動非常緩慢,為了加速計算機名字解析速度,可以更改這個文件設置為先查找本機文件優先。

使用基本網絡工具

  當配置好網絡之后,就可以使用系統提供的網絡程序來訪問網絡,如使用ftp來從遠程計算機上下載文件、telnet登錄上遠程系統等。FreeBSD下不但提供了這些普通的網絡應用程序,而且還提供了相當豐富網絡工具,幫助進行判斷網絡狀態,發現網絡故障。
  最基本的查看本地網絡設置的程序,包括前面提到的設置程序ifconfigroute,以及查看網絡狀態的程序netstat。還有另外的一些程序,可以用來判斷網絡連接狀態。
  前面提到的netstat的用法是使用-r參數來獲得路由器的信息,而不使用這個參數啟動netstat將報告當前的連接狀態,包括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來判斷與遠程計算機是否能夠連通。

$ 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

  要想知道這台計算機是怎樣和遠程計算機相連接的,可以使用traceroute來獲得從本機達到遠程計算機所經過的路由器,以及到達各個路由器的開銷等信息。

$ 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會在網絡上產生大量的數據流,因此一般不要頻繁使用這個命令,以免造成無謂的網絡流量。
 為了獲得從一個計算機名字獲得其IP地址,或者從IP地址得到計算機名字,可以直接使用nslookup來查詢DNS服務器。

$ 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地址,還可以查詢其他更復雜的DNS信息,如某個域的名字服務器的地址,郵件服務器地址等。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM