歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> BSD

freebsd手工配置網絡


  FreeBSD對網卡的支持是在系統內核中實現的,要使一個網卡工作正常,就需要系統內核擁有這個網卡的驅動,並配置好它占用的硬件資源。為了保證網卡被正確的檢測到,應該使用dmesg來查看系統的檢測信息。
手工配置網絡
  使用sysinstall進行網絡配置的優點是所有的網絡數據將在同一個界面下進行設置,不容易發生錯誤和遺漏現象。但熟練的Unix用戶在平時維護系統的時候更喜歡使用手工配置,因為手工配置有很多優點:
熟悉命令之後,手工配置更快速,並且不需要重新啟動;
能夠使用配置命令的高級特性;
更容易維護配置文件,找出系統故障;
能更深刻的了解系統配置是如何進行的。
  僅僅使用sysinstall進行設置,不可能對系統設置有深刻的了解,因而一旦發生問題,就容易束手無策。對於管理員來講,不能被動的僅僅停留在能夠使用和操作的階段,而是要了解系統是如何進行工作的,才能更好的進行系統維護和管理。因而需要使用命令行方式。一旦熟悉之後,就會發現命令行才能提供全部靈活的操作能力,而全屏幕方式限制很多,過於呆板。
配置計算機名字
  每個系統都應該有一個名字,這個名字通常在系統安裝時確定,可以使用hostname命令來獲得當前系統的名字。同樣設置計算機的名字也需要使用hostname命令,但這需要root權限:
# hostname


配置網絡界面
  網絡界面實際就是網卡的驅動程序,操作系統使用它與網絡硬件打交道,而配置網絡界面的操作應該通過命令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 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


  上圖顯示的信息包括各個網絡界面,如以太網界面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地址。
保存配置
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.254 gateway
192.168.1.253 gateway2
192.168.1.252 gateway3


  因此人們發展了一種分級的方式管理名字與IP地址對應關系,稱為域名解析系統。在這個系統中采用一種分級結構,每個組織負責自己的域及通過這個域內的名字服務器,對域內的計算機名字和IP地址的對應關系進行維護,每個域內還可以劃分為幾個不同的子域,子域由子域內的名字服務器負責解析,這樣就降低了維護任務的復雜程度。通過標准協議DNS,Internet上所有的名字服務器可以相互交換數據,這樣每台計算機都能通過查詢名字服務器來查詢 Internet上所有的計算機名字。
nameserver 192.168.1.250
nameserver 192.168.2.210


  注意,因為此時還不能通過DNS查詢名字,因此這裡要使用IP地址而非主機名來指定名字服務器。
bind
hosts


  系統缺省設置的順序如上,第一行為bind,(Berkeley Internet Name Domain)這是DNS域名系統的標准實現,第二行為hosts,因此這表示先查找DNS服務器,然後再查找本機中的文件hosts。由於從DNS 服務器上查找名字可以得到域名的全部信息,因此如果本機具備DNS名字的情況下,應該設置為查找DNS服務器優先。
  雖然一般DNS名字解析速度並不會造成太大的影響,但如果本地的DNS反應較慢或者這台FreeBSD計算機的名字沒有登記到DNS服務器上,那麼服務器試圖查找本機名字的行動就影響網絡應用程序的連接速度,造成很多依賴於主機名的應用程序啟動非常緩慢,為了加速計算機名字解析速度,可以更改這個文件設置為先查找本機文件優先。
使用基本網絡工具
  當配置好網絡之後,就可以使用系統提供的網絡程序來訪問網絡,如使用ftp來從遠程計算機上下載文件、telnet登錄上遠程系統等。FreeBSD下不但提供了這些普通的網絡應用程序,而且還提供了相當豐富網絡工具,幫助進行判斷網絡狀態,發現網絡故障。
  最基本的查看本地網絡設置的程序,包括前面提到的設置程序ifconfig、route,以及查看網絡狀態的程序netstat。還有另外的一些程序,可以用來判斷網絡連接狀態。
  前面提到的netstat的用法是使用-r參數來獲得路由器的信息,而不使用這個參數啟動netstat將報告當前的連接狀態,包括TCP/IP連接和Unix socket連接。
# netstat
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
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來判斷與遠程計算機是否能夠連通。
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來獲得從本機達到遠程計算機所經過的路由器,以及到達各個路由器的開銷等信息。
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
5 202.97.10.113 (202.97.10.113) 623.421 ms 888.556 ms 794.748 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
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 * * *
14 * * *
15 * 202.112.5.194 (202.112.5.194) 282.973 ms 340.009 ms


  由於traceroute會在網絡上產生大量的數據流,因此一般不要頻繁使用這個命令,以免造成無謂的網絡流量。
  為了獲得從一個計算機名字獲得其IP地址,或者從IP地址得到計算機名字,可以直接使用nslookup來查詢DNS服務器。
Address: 202.102.224.68
Non-authoritative answer:
Address: 209.155.82.18
$ nslookup 209.155.82.18
Address: 202.102.224.68
Address: 209.155.82.18


  nslookup不僅能用於查詢普通的IP地址,還可以查詢其他更復雜的DNS信息,如某個域的名字服務器的地址,郵件服務器地址等
Copyright © Linux教程網 All Rights Reserved