Linux系统中网络配置详解.docx
《Linux系统中网络配置详解.docx》由会员分享,可在线阅读,更多相关《Linux系统中网络配置详解.docx(17页珍藏版)》请在冰豆网上搜索。
Linux系统中网络配置详解
Linux系统中网络配置详解
(作者:
佚名出处:
)
从linux诞生的那一天起,就注定了它的网络功能空前地强大.所以在linux系统中如何配置网络,使其高效,安全的工作就显得十分重要.下面我们就从网络设备的安装,网络服务的设置和网络安全性三个方面来介绍一下linux系统中网络的设置.
一.安装和配置网络设备
在安装linux时,如果你有网卡,安装程序将会提示你给出tcp/ip网络的配置参数,如本机的ip地址,缺省网关的ip地址,DNS的ip地址等等.根据这些配置参数,安装程序将会自动把网卡(linux系统首先要支持)驱动程序编译到内核中去.但是我们一定要了解加载网卡驱动程序的过程,那么在以后改变网卡,使用多个网卡的时候我们就会很容易的操作.网卡的驱动程序是作为模块加载到内核中去的,所有linux支持的网卡驱动程序都是存放在目录/lib/modules/(linux版本号)/net/,例如inter的82559系列10/100M自适应的引导网卡的驱动程序是eepro100.o,3COM的3C509ISA网卡的驱动程序是3C509.o,DLINK的pci10网卡的驱动程序是via-hine.o,NE2000兼容性网卡的驱动程序是ne2k-pci.o和ne.o.在了解了这些基本的驱动程序之后,我们就可以通过修改模块配置文件来更换网卡或者增加网卡.
1.修改/etc/conf.modules文件
这个配置文件是加载模块的重要参数文件,大家先看一个范例文件
#/etc/conf.modules
aliaseth0eepro100
aliaseth1eepro100
这个文件是一个装有两块inter82559系列网卡的linux系统中的conf.modules中的内容.alias命令表明以太口(如eth0)所具有的驱动程序的名称,aliaseth0eepro100说明在零号以太网口所要加载的驱动程序是eepro100.o.那么在使用命令modprobeeth0的时候,系统将自动将eepro100.o加载到内核中.对于pci的网卡来说,由于系统会自动找到网卡的io地址和中断号,所以没有必要在conf.modules中使用选项options来指定网卡的io地址和中断号.但是对应于ISA网卡,则必须要在conf.modules中指定硬件的io地址或中断号,如下所示,表明了一块NE的ISA网卡的conf.modules文件.
aliaseth0ne
optionsneio=0x300irq=5
在修改完conf.modules文件之后,就可以使用命令来加载模块,例如要插入inter的第二块网卡:
#insmod/lib/modules/2.2.14/net/eepro100.o
这样就可以在以太口加载模块eepro100.o.同时,还可以使用命令来查看当前加载的模块信息:
[root@ice/etc]#lsmod
ModuleSizeUsedby
eepro100156522(autoclean)
返回结果的含义是当前加载的模块是eepro100,大小是15652个字节,使用者两个,方式是自动清除.
2.修改/etc/lilo.conf文件
在一些比较新的linux版本中,由于操作系统自动检测所有相关的硬件,所以此时不必修改/etc/lilo.conf文件.但是对于ISA网卡和老的版本,为了在系统初始化中对新加的网卡进行初始化,可以修改lilo.conf文件.在/etc/lilo.conf文件中增加如下命令:
append="ether=5,0x240,eth0ether=7,0x300,eth1"
这条命令的含义是eth0的io地址是0x240,中断是5,eth1的io地址是0x300,中断是7.
实际上,这条语句来自在系统引导影像文件时传递的参数,
LILO:
linuxether=5,0x240,eth0ether=7,0x300,eth1
这种方法也同样能够使linux系统配置好两个网卡.类似的,在使用三个以上网卡的时候,也可以依照同样的方法.
在配置好网卡之后,就应该配置TCP/IP的参数,在一般情况下,在安装linux系统的同时就会提示你配置网络参数.但是之后如果我们想要修改网络设置,可以使用如下的命令:
#ifconfigeth0A.B.C.DnetmaskE.F.G.H
A.B.C.D是eth0的IP地址,E.F.G.H是网络掩码.
其实,在linux系统中我们可以给一块网卡设置多个ip地址,例如下面的命令:
#ifconfigeth0:
1202.112.11.218netmask255.255.255.192
然后,使用命令#ifconfig-a就可以看到所有的网络接口的界面:
eth0 Linkencap:
EthernetHWaddr00:
90:
27:
58:
AF:
1A
inetaddr:
202.112.13.204Bcast:
202.112.13.255Mask:
255.255.255.192
UPBROADCASTRUNNINGMULTICASTMTU:
1500Metric:
1
RXpackets:
435510errors:
0dropped:
0overruns:
0frame:
2
TXpackets:
538988errors:
0dropped:
0overruns:
0carrier:
0
collisions:
318683txqueuelen:
100
Interrupt:
10Baseaddress:
0xc000
eth0:
1 Linkencap:
EthernetHWaddr00:
90:
27:
58:
AF:
1A
inetaddr:
202.112.11.218Bcast:
202.112.11.255Mask:
255.255.255.192
UPBROADCASTRUNNINGMULTICASTMTU:
1500Metric:
1
Interrupt:
10Baseaddress:
0xc000
lo Linkencap:
LocalLoopback
inetaddr:
127.0.0.1Mask:
255.0.0.0
UPLOOPBACKRUNNINGMTU:
3924Metric:
1
RXpackets:
2055errors:
0dropped:
0overruns:
0frame:
0
TXpackets:
2055errors:
0dropped:
0overruns:
0carrier:
0
collisions:
0txqueuelen:
0
我们看到网络接口有三个,eth0,eth0:
1,lo,eth0是真实的以太网络接口,eth0:
1和eth0是同一块网卡,只不过绑定了另外的一个地址,lo是会送地址。
eth0和eth0:
1可以使用不同网段的ip地址,这在同一个物理网段却使用不同的网络地址的时候十分有用。
另外,网卡有一种模式是混杂模式(prosimc),在这个模式下,网卡将会接收网络中所有的数据包,一些linux下的网络监听工具例如tcpdump,snort等等都是把网卡设置为混杂模式.
ifconfig命令可以在本次运行的时间内改变网卡的ip地址,但是如果系统重新启动,linux仍然按照原来的默认的设置启动网络接口。
这时候,可以使用netconfig或netconf命令来重新设置默认网络参数。
netconfig命令是重新配置基本的tcp/ip参数,参数包括是否配置为动态获得ip地址(dhcpd和bootp),网卡的ip地址,网络掩码,缺省网关和首选的域名服务器地址。
netconf命令可以详细的配置所有网络的参数,分为客户端任务,服务器端任务和其他的配置三个部分,在客户端的配置中,主要包括基本主机的配置(主机名,有效域名,网络别名,对应相应网卡的ip地址,网络掩码,网络设备名,网络设备的内核驱动程序),DNS地址配置,缺省网关的地址配置,NIS地址配置,ipx接口配置,ppp/slip的配置等等。
在服务器端配置中,主要包括NFS的配置,DNS的配置,ApacheWebServer配置,Samba的配置和Wu-ftpd的配置。
在其他的配置选项中,一个是关于/etc/hosts文件中的主机配置,一个是关于/etc/networks文件中的网络配置信息,最后是关于使用linuxconf配置的信息。
在linuxconf命令下,同样也可以配置网络信息,但是大家可以发现,linuxconf程序是调用netconf来进行网络配置的。
另外,在/etc/sysconfig/network-scripts目录下存放着系统关于网络的配置文件,范例如下:
ifcfg-eth0* ifdown-post* ifup-aliases* ifup-ppp*
ifcfg-eth1* ifdown-ppp* ifup-ipx* ifup-routes*
ifcfg-lo* ifdown-sl* ifup-plip* ifup-sl*
ifdown@ ifup@ ifup-post* network-functions
ifcfg-eth0是以太口eth0的配置信息,它的内容如下:
DEVICE="eth0" /*指明网络设备名称*/
IPADDR="202.112.13.204" /*指明网络设备的ip地址*/
NETMASK="255.255.255.192" /*指明网络掩码*/
NETWORK=202.112.13.192 /*指明网络地址*/
BROADCAST=202.112.13.255 /*指明广播地址*/
ONBOOT="yes" /*指明在系统启动时是否激活网卡*/
BOOTPROTO="none" /*指明是否使用bootp协议*/
所以,我们也可以修改这个文件来进行linux下网络参数的改变。
二网络服务的配置
在这一部分,我们并不是详细的介绍具体的网络服务器(DNS,FTP,WWW,SENDMAIL)的配置(那将是巨大的篇幅),而是介绍一下与linux网络服务的配置相关的文件.
1.LILO的配置文件
在linux系统中,有一个系统引导程序,那就是lilo(linuxloadin),利用lilo可以实现多操作系统的选择启动.它的配置文件是/etc/lilo.conf.在这个配置文件中,lilo的配置参数主要分为两个部分,一个是全局配置参数,包括设置启动设备等等.另一个是局部配置参数,包括每个引导影像文件的配置参数.在这里我就不详细介绍每个参数,特别的仅仅说明两个重要的参数--------password和restricted选项,password选项为每个引导的影像文件加入口令保护.我们都知道,在linux系统中有一个运行模式是单用户模式,在这个模式下,用户是以超级用户的身份登录到linux系统中.人们可以通过在lilo引导的时候加入参数(linuxsingle或linuxinit0)就可以不需要口令直接进入单用户模式的超级用户环境中,这将是十分危险的.所以在lilo.conf中增加了password的配置选项来为每个影像文件增加口令保护.你可以在全局模式中使用password选项(对所有影像文件都加入相同的口令),或者为每个单独的影像文件加入口令.这样一来,在每次系统启动时,都会要求用户输入口令.也许你觉得每次都要输入口令很麻烦,可以使用restricted选项,它可以使lilo仅仅在linux启动时输入了参数(例如linuxsingle)的时候才会检验密码.这两个选项可以极大的增加系统的安全性,建议在lilo.conf文件中设置它们.由于password在/etc/lilo.conf文件是以明文存放的,所以必须要将/etc/lilo.conf文件的属性改为仅仅root可读(0400).
另外,在lilo的早期版本中,存在着引导扇区必须存放到前1024柱面的限制,在lilo的2.51版本中已经突破了这个限制,同时引导界面也变成了图形界面更加直观.最新版本的下载站点:
ftp:
//166.111.136.3/pub/linux/lilo/lilo-2.51.tar.gz
下载解压后,使用命令makeinstall即可完成安装.
注意:
物理安全才是最基本的安全,即使在lilo.conf中增加了口令保护,如果没有物理安全,恶意闯入者可以使用启动软盘启动linux系统.
2.域名服务的配置文件
(1)/etc/HOSTNAME在这个文件中保存着linux系统的主机名和域名.范例文件
这个文件表明了主机名ice,域名是
(2)/etc/hosts和/etc/networks文件在域名服务系统中,有着主机表机制,/etc/hosts和/etc/networks就是主机表发展而来在/etc/hosts中存放着你不需要DNS系统查询而得的主机ip地址和主机名的对应,下面是一个范例文件:
#ip地址主机名别名
127.0.0.1 localhosts loopback
202.117.1.13 www
202.117.1.24 ftp
在/etc/networks中,存放着网络ip地址和网络名称的一一对应.它的文件格式和/etc/hosts是类似的
(3)/etc/resolv.conf这个文件是DNS域名解析器的主要配置文件,它的格式十分简单,每一行由一个主关键字组成./etc/resolv.conf的关键字主要有:
domain 指明缺省的本地域名,
search 指明了一系列查找主机名的时候搜索的域名列表,
nameserver指明了在进行域名解析时域名服务器的ip地址.下面给出一个范例文件:
#/etc/resolv.conf
domain
search
nameserver 202.117.0.20
nameserver 202.117.1.9
(4)/etc/host.conf在系统中同时存在着DNS域名解析和/etc/hosts的主机表机制时,由文件/etc/host.conf来说明了解析器的查询顺序.范例文件如下:
#/etc/host.conf
orderhosts,bind #解析器查询顺序是文件/etc/hosts,然后是DNS
multion #允许主机拥有多个ip地址
nospoofon #禁止ip地址欺骗
3.DHCP的配置文件
/etc/dhcpd.conf是DHCPD的配置文件,我们可以通过在/etc/dhcpd.conf文件中的配置来实现在局域网中动态分配ip地址,一台linux主机设置为dhcpd服务器,通过鉴别网卡的MAC地址来动态的分配ip地址.范例文件如下:
optiondomain-name"";
use-host-decl-namesoff;
subnet210.27.48.0netmask255.255.255.192{
filename"/tmp/image";
hostdial_server{
hardwareethernet00:
02:
b3:
11:
f2:
30;
fixed-address210.27.48.8;
filename"/tmp/image";
}
}
在这个文件中,最主要的是通过设置的硬件地址来鉴别局域网中的主机,并分配给它指定的ip地址,hardwareethernet00:
02:
b3:
11:
f2:
30指定要动态分配ip的主机得网卡的MAC地址,fixed-address210.27.48.8指定分配其ip地址。
filename"/tmp/image"是通过tftp服务,主机所要得到的影像文件,可以通过得到的影像文件来引导主机启动。
4.超级守候进程inetd的配置
在linux系统中有一个超级守候进程inetd,inetd监听由文件/etc/services指定的服务的端口,inetd根据网络连接请求,调用相应的服务进程来相应请求.在这里有两个文件十分重要,/etc/inetd.conf和/etc/services,文件/etc/services定义linu系统中所有服务的名称,协议类型,服务的端口等等信息,/etc/inetd.conf是inetd的配置文件,由它来指定那些服务可以由inetd来监听,以及相应的服务进程的调用命令.首先介绍一下/etc/services文件,/etc/services文件是一个服务名和服务端口对应的数据库文件,如下面所示:
#/etc/services:
#$Id:
services,v1.42000/01/2321:
03:
36nottingExp$
#
#Networkservices,Internetstyle
#
#NotethatitispresentlythepolicyofIANAtoassignasinglewell-known
#portnumberforbothTCPandUDP;hence,mostentriesherehavetwoentries
#eveniftheprotocoldoesn'tsupportUDPoperations.
#UpdatedfromRFC1700,``AssignedNumbers''(October1994).Notallports
#areincluded,onlythemorecommonones.
#名称 端口/协议 别名 注释
tcpmux 1/tcp #TCPportservicemultiplexer
echo 7/tcp
echo 7/udp
discard 9/tcp sinknull
discard 9/udp sinknull
systat 11/tcp users
daytime 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
msp 18/tcp #messagesendprotocol
msp 18/udp #messagesendprotocol
chargen 19/tcp ttytstsource
chargen 19/udp ttytstsource
ftp-data 20/tcp
ftp 21/tcp
fsp 21/udp fspd
ssh 22/tcp #SSHRemoteLoginProtocol
ssh 22/udp #SSHRemoteLoginProtocol
telnet 23/tcp
#24-private
smtp 25/tcp mail
#26-unassigned
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource #resourcelocation
nameserver42/tcp name #IEN116
whois 43/tcp nicname
re-mail-ck 50/tcp #RemoteMailCheckingProtocol
re-mail-ck 50/udp #RemoteMailCheckingProtocol
domain 53/tcp nameserver #name-domainserver
domain 53/udp nameserver
mtp 57/tcp #deprecated
bootps 67/tcp #BOOTPserver
bootps 67/udp
bootpc 68/tcp #BOOTPclient
bootpc 68/udp
tftp 69/udp
gopher 70/tcp#InternetGopher
gopher 70/udp
rje 77/tcpnetrjs
finger 79/tcp
www 80/tcp http #WorldWideWebHTTP
www 80/udp #HyperTextTransferProtocol
link 87/tcp ttylink
kerberos 88/tcp kerberos5krb5 #Kerberosv5
kerberos 88/udp kerberos5krb5 #Kerberosv5
supdup 95/tcp
#100-reserved
hostnames 101/tcp hostname #usuallyfromsri-nic
iso-tsap 102/tcp tsap #partofISODE.