读书人

freeBsd配备网络

发布时间: 2012-08-09 15:59:21 作者: rapoo

freeBsd配置网络


freebsd手工配置网络

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上所有的计算机名字

读书人网 >操作系统

热点推荐