Linux作为一种主要用于网络环境的操作系统,有着空前强大的网络功能。如何在Linux系统中安装、配置、使用网络,使其高效、安全地工作十分重要。本文对Linux主机的网络设备的安装、配置、调试、网络服务的设置以及Linux系统的网络使用进行详细的讲解。最后,还就Linux系统的安全性知识及技巧作简单介绍。
1. Linux下的网络安装、配置及调试
将Linux接入Internet的方法很多,最常见而且快捷方便的方法是以局域网的形式接入。此时就涉及到Linux系统下一块或多块网卡的安装。对于以太网卡,Linux在操作系统的安装过程中会自动检测到并自动配置内核以便系统能使用该网卡。只需根据安装程序的提示给出tcp/ip的配置参数,如本机的ip地址、DNS的ip地址等等,安装程序将会自动把系统支持的网卡驱动程序编译到内核中。
对于非以太网卡或者要在原有的基础上增加网卡的情况下,或者系统本身不支持现有的网卡时,就得自己动手安装网卡了。其实这并不难,只要了解了加载网卡驱动程序的过程。在Linux系统中,网卡的驱动程序是作为模块加载到内核中的,正因为如此,当没有网卡的驱动程序时,可以到网上去下载驱动程序的源文件,甚至可以自己动手编写网卡的驱动程序,然后以模块的形式将其编译到内核中去。所有Linux支持的网卡驱动程序都存放在目录/lib/modules /Linux版本号/net/,我们可以通过修改模块配置文件来更换网卡或增减网卡。
在etc目录下的conf.modules配置文件是加载模块的一个重要的参数文件,在这个文件中,指明了系统要加载的网卡的驱动程序:
#/etc/conf.modules
……
alias eth0 eepro100
alias eth1 ne
options ne io=0x300 irp=5
……
这一段文字说明了该Linux系统装了两块网卡,其中alias命令指出以太网口所具有的驱动程序的名称,即在0号以太网口需要加载的网卡驱动程序是eepro100.o,而1号以太网口要加载的是ne.0。大家一定已经注意到了在1号口下有options一项附加命令,指明了该网卡的io地址和中断号。这是因为对于pci网卡,系统会自动找到网卡的io地址和中断号,所以不必用options选项来指定网卡的io地址和中断号;而对于ISA网卡,则必须要在该配置文件中用options选项指明该网卡的io地址和中断号。
修改完conf.modules配置文件后,用命令inmod就可以以模块的形式将网卡驱动程序加载到内核,加载完后还可以用lsmod命令来查看当前加载的模块的信息。
配置网卡的方法并非只有这一种,用命令netconf或netconfig也能完成网卡的配置工作,netconfig命令是重新配置基本的TCP/IP参数,这些参数包括是否配置为动态获得ip地址(dhcpd和bootp)、子网掩码、缺省网关及域名服务器地址等;netconf命令用于详细配置所有的网络参数,包括客户端任务(主机名、有效域名、网络别名、网卡的ip地址、网络掩码、接口名、网卡驱动程序、DNS地址、缺省网关地址、NIS地址、ipx借口,ppp/slip等),服务器端任务(NFS、DNS、ApacheWebServer、Samba、Wu-ftpd等)和其他配置三部分。在超级用户下键入netconf命令,然后只需根据系统给出的选项填入相应的信息即可,同样,对于PCI网卡,甚至不必填写硬件的io地址和中断号;与此同时,你还可以指定该网卡是否可用,其TCP/IP网络的ip地址及子网掩码等。随着Linux图形界面的发展,同样,在Xwindows下运行该命令,Linux提供了类似于windows的方便简单的图形配置方式。其实,在修改完conf.modules配置文件后,同样需要用命令netconf或ifconfig来配置TCP/IP网络参数,因为,上面的工作只是将网卡的驱动程序加载到内核中使其可用而已。
其实,通过修改lilo.conf文件一样可以将网卡加载到系统内核。但对于一些比较新的Linux版本来说,操作系统能够自动检测到所有相关的硬件,完全没有必要修改lilo.conf文件。如果遇到的是ISA网卡和老的Linux版本。为了使系统初始化时能够对我们新插入的网卡进行初始化,可以修改lilo.conf文件:
用vi命令打开lilo.conf文件,在文件中添加如下语句:
append="ether=5,0x300,eth0 ether=7,0x500,eth1"
这样,系统同样能够配置好网卡(在上面的语句中是两块)。
配置好网卡后,要做的工作就是配置和调试TCP/IP网络了。上面已经讲了,可以用命令netconf来进行TCP/IP的参数配置。
之后,可以用ifconfig命令来调试网络。在Linux系统中,用命令ifconfig -a可以显示系统中所有的网络接口的信息,如:
eth0 link encap:Ethernet Hwaddr 00:0E:5F:1A
inet addr:202.206.19.87 Bcast:202.206.112.3 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
PX packet:435510 errors:0 droped:0 overruns:0 frame:2
TX packet 339781 errors:0 dropped:0 overruns:0 carrier:0
Collisions:228938 txqueuelen:100
Interrupt:10 Base address 0x1800
eth1 link encap:Ethernet Hwaddr 4A:08:3D:00
inet addr:129.1.1.6 Bcast:129.0.0.0 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
PX packet:489 errors:0 droped:0 overruns:0 frame:2
TX packet 34 errors:0 dropped:0 overruns:0 carrier:0
Collisions:2 txqueuelen:100
Interrupt:9 Base address 0x1800
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:3900 Metric:1
PX packets:3880 errors:0 dropped:0 overrun:0 frame:
TX packets:3800 errors:0 dropped:0 overrun:0 carrier:0
Collisions:0 txqueue:0
ifconfig命令不但可以查看系统中网络接口的情况,还可以通过参数来配置网络,其命令格式为:
#ifconfig 接口名 ip地址 netmask子网掩码
只是,ifconfig命令只在本次运行时改变网卡的TCP/IP网络参数,但当系统重新启动后,系统仍然按照默认设置来启动网络接口。实际上,ifconfig命令是调用netconf来进行网络配置的。而且,在Linux系统中,我们可以用ifconfig命令给一块网卡设置多个ip地址,如:
#ifconfig eth0:1 202.206.16.1 netmask 255.255.255.0
然后我们用ifconfig -a命令进行查看,就会发现有两个具有相同的MAC地址但其ip地址却不同的接口,分别为:eth0和eth0:1。
另外,我们可以将网卡设置成混杂模式(prosimc),在这个模式下,网卡接收网络中所有的数据包。
2.常用的网络命令
计算机网络的好处就在于资源和信息共享。Linux系统为大家提供了一组功能强大的网络命令使得用户可以方便地调试网络,查看网络状况和资源使用情况,以及远程登录和文件传输等工作。上面介绍了网络设备的安装及网络环境的设置,下面就向大家介绍一些常用的网络命令。
* ping
ping命令用来检查网络上某台主机是否处于活动状态,它利用TCP/IP协议簇中的ICMP协议的ECHO_REQUEST数据包强制性地要求网络上某台特定的主机作出响应,如果不能ping 通某台主机,证明主机和那台主机之间的网络存在故障。但ping 命令只是经过底层的几个协议,就算能ping 通,但只能说明该条线路正常连接,并不能保证其他高层的服务正常运行,但如果不能ping 通,则这两台主机根本不能进行任何通信。
* traceroute
traceroute命令也是用于检查网络是否能够正常通信,与ping不同的是,ping命令只能测试出从本机到目的host是否能够通信,而traceroute命令则能测试出从本机经过了哪些路由器或主机到达目的主机,如果不能到达,其故障具体是出在什么地方。所以我们常常在ping不通时用该命令在进一步查找原因所在。
*netstat
netstat命令用于显示网络状态信息,其用途很广泛,可以用来察看网络连接状态、接口配置、路由表等,并取得一些统计信息。该命令的主要参数和用途如下:
-a :显示所有配置的接口
-i :显示接口的统计信息
-n :以数字的形式显示ip地址
-r :显示内核的路由表
-s :显示计数器的值
*ifconfig
前面已经讲到了,ifconfig命令用来查看网络接口的配置情况,也用于调试网络设备是否已经正确安装配置,或者用该命令来重新配置网络,只是用ifconfig命令配置的网络不是永久性的,系统一旦重新启动,先前用ifconfig配置的各种参数便不复存在。
*telnet
telnet命令用于远程登录,其命令格式为:telnet 主机名(或ip地址)。通过telnet命令登录远程计算机,就像登录到本机上执行操作一样。当然,要想远程登录到一台计算机上,必须知道该机合法的用户名和密码。要提醒大家的一点是,当用telnet命令登录并结束了远程会话后,一定要使用logout命令退出远程系统,以免造成意想不到的问题。
*rlogin
rlogin是remote login(远程登录的缩写),与telnet命令很相似,最常用的格式为:
rlogin host
rlogin命令还带有一些参数,常用的有:
-8 :始终允许8位输入数据管道,允许发送格式化ANSI字符和其他特殊代码。
-E :禁止把任何字符当成转义字符。当该参数与-8一起使用时,便提供一个完全的透明连接。
-L :允许rlogin会话在litout模式下运行。
-x :为所有通过rlogin会话交互的数据进行DES加密,从而提供安全性。
*ftp
ftp命令是标准的文件传输协议的用户接口,命令格式为:ftp 主机名或ip地址,用于在TCP/IP网络上进行文件传输。ftp命令可以用来传输ASCII文件和二进制文件。同样,要想实现ftp文件传输,你必须知道远程计算机上合法的用户名和口令,并且该用户名具有所要传输的文件的存取权限。