分享
 
 
 

FreeBSD连载(34):手工配置网络

王朝system·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

基本网络设置在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的网络界面,inetinetnet的简写,标识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下不但提供了这些普通的网络应用程序,而且还提供了相当丰富网络工具,帮助进行判断网络状态,发现网络故障。

最基本的查看本地网络设置的程序,包括前面提到的设置程序ifconfig、route,以及查看网络状态的程序netstat。还有另外的一些程序,可以用来判断网络连接状态。

前面提到的netstat的用法是使用-r参数来获得路由器的信息,而不使用这个参数启动netstat将报告当前的连接状态,包括TCP/IP连接和Unix socket连接。

# netstat

Active Inte[1] [url=http://www.chinamx.com.cn/Article/os/FreeBSD/200605/20060530181948_31977_2.html][2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有