在 Linux系统中,TCP/IP 网络是通过若干个文本文件进行配置的,需要编辑这些文件来完成联网工作。系统中重要的有关网络配置文件为:
/etc/sysconfig/network
/etc/hosts
/etc/services
/etc/host.conf
/etc/nsswitch.conf
/etc/resolv.conf
/etc/xinetd.conf
/etc/modules.conf
/etc/sysconfig/network-scripts/ifcfg-ethN
接下来我们将对这些文件逐一讲述, 这些文件都可以在系统运行时进行修改,不用启动或者停止任何守护程序,更改会立刻生效( 除了/etc/sysconfig/network)。 另外,这些文件都支持由"#"开头的注释,每一个文件都有在UNIX手册页中的第5 部分中有一项,可以用man 命令来获取它们。
该文件用来指定服务器上的网络配置信息, 包含了控制和网络有关的文件和守护程序的行为的参数。下面是一个例子文件:
NETWORKING=yes
HOSTNAME=machine1
GATEWAY=210.34.6.2
FORWARD_IPV4=yes
GATEWAYDEV=
其中, NETWORK=yes/no 表示网络是否被配置;
HOSTNAME=hostname hostname 表示服务器的主机名;
GATEWAY=gw-ip gw-ip 表示网络网关的IP 地址;
FORWARD_IPV4=yes/no 是否开启IP 转发功能;
GAREWAYDEV=gw-dev gw-dw 表示网关的设备名,如:eth0 等;
/etc/hosts 中包含了IP 地址和主机名之间的映射还,包括主机名的别名IP,地址的设计使计算机容易识别,但对于人却很难记住它们,为了解决这个问题,创建了/etc/hosts 这个文件。下面是一个例子文件:
127.0.0.1 machine1 localhost.localdomain localhost
192.168.1.100 machine7
192.168.1.101 otherpc otheralias
在这个例子中 ,本机名是machine1, otherpc 还有别名otheralias ,它可以指向otheralias。 一旦配置完机器的网络配置文件,应该重新启动网络以使修改生效,使用下面的命令来重新启动网络:
service network restart
/etc/hosts 文件通常含有主机名、localhost 和系统管理员经常使用的系统别名,有时候telnet 到Linux 机器要等待很长时间,可以通过在"/etc/hosts"加入客户的机器的IP 地址和主机名的匹配项,就可以减少登录等待时间。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP 地址,否则,其他的主机名通常使用DNS 来解决,DNS 客户部分的配置在文件/etc/resolv.conf 中。
/etc/services 中包含了服务名和端口号之间的映射,不少的系统程序要使用这个文件,下面是RedHat 安装时缺省的/etc/services 中的前几行:
tcpmux 1/tcp # TCP port service multiplexer
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
最左边一列是主机服务名 ,中间一列是端口号,“/ ”后面是端口类型, 可以是TCP 也可以是UDP 。任何后面的列都是前面服务的别名。在这个文件中也存在着别名,它们出现在端口号后面,在上述例子中sink 和null 都是discard服务的别名。
有两个文件声明系统到哪里寻找名字信息来配置 UNIX名字解析器的库。文件/etc/host.conf 由版本5 的libc 库所使用,而/etc/nsswitch.conf 由版本6 使用(glibc )。 问题在于一些程序使用其中一个,而一些使用另一个,所以将两个文件都配置正确是必要的。
/etc/host.conf 文件指定如何解析主机名,Linux 通过解析器库来获得主机名对应的IP。 地址下面是RedHat 安装后缺省的"/etc/host.conf"内容:
order hosts bind
multi on
"order " 指定主机名查询顺序,其参数为用逗号隔开的查找方法,支持的查找方法为bind、 hosts 和nis ,分别代表DNS 、/etc/hosts 和NIS, 这里规定先查询"/etc/hosts"文件然后再使用DNS 来解析域名。
"trim" 表明当通过DNS 进行地址到主机名的转换时,域名将从主机名中被裁剪掉,trim 可以被多个域包含多次,对/etc/hosts 和NIS 查询方法不起作用,注意在/etc/hosts 和NIS 表中主机名是被适当地(有或没有全域名)列出的。
"multi" 指定是否"/etc/hosts"文件中指定的主机可以有多个地址,值为on 表示允许,拥有多个IP 地址的主机一般称为具有多个网络界面。
"nospoof " 指是否允许对该服务器进行IP 地址欺骗,值为on 表示不允许。IP欺骗是一种攻击系统安全的手段,通过把IP 地址伪装成别的计算机,来取得其它计算机的信任。
"alert" 当nospoof 指令为on 时,alert 控制欺骗的企图是否用syslog 工具进行记录,值为on 表示使用,缺省值为off。
“rccorder” 如果被设置为on ,所有的查询将被重新排序,所以在同一子网中的主机将首选被返,回缺省值为off。
/etc/nsswitch.conf 文件是由Sun 公司开发并用于管理系统中多个配置文件查找的顺序,它比/etc/host.conf 文件提供了更多的功能。/etc/nsswitch.conf 中的每一行或者是注释(以#号开头)或者是一个关键字后跟冒号和一系列要试用的有顺序的方法。每一个关键字是在/etc/目录可以被/etc/nsswitch.conf 控制的/etc 文件的名字。下面是可以被包含的关键字:
aliases 邮件别名;
passwd 系统用户;
group 用户组;
shadow 隐蔽口令;
hosts 主机名和I P 地址;
networks 网络名和号;
protocols 网络协议;
services 端口号和服务名称;
ethers 以太网号;
rpc 远程进程调用的名称和号;
netgroup 网内组;
文件/etc/resolv.conf 配置DNS 客户,它包含了主机的域名搜索顺序和DNS服务器的地址,每一行应包含一个关键字和一个或多个的由空格隔开的参数。
下面是一个例子文件:
nameserver 192.168.0.36
nameserver 192.168.0.37
search huawei-3com.com
合法的参数及其意义如下:
nameserver 表明DNS 服务器的IP 地址,可以有很多行的nameserver ,每一个带一个I P 地址。在查询时就按nameserver 在本文件中的顺序进行,且只有当第一个nameserver 没有反应时才查询下面的nameserver.
domain 声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS 查询时,也要用到。如果没有域名,主机名将被使,用删除所有在第一个点( . )前面的内容。
search 它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search 声明的域中分别查找。domain 和search 不能共存;如果同时存在,后面出现的将会被使用。
sortlist 允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。Red Hat 中没有提供缺省的/ e t c / r e s o l v. c o n f 文件,它的内容是根据在安装时给出的选项动态创建的。
redhat 7.1 及以后版本计和以往的版本有一个明显的区别,就是用xinetd.conf代替原来的inetd.conf ,并且直接使用了firewall 服务.xinetd(eXtended InterNET services daemon)对inetd 功能进行了扩展,xinetd 的默认配置文件是/etc/xinetd.conf ,它看起来尽管和老版本的/etc/inetd.conf 完全不同,其实只是以一个脚本的形式将inetd 中每一行指定的服务扩展为一个/etc/xinetd.d/下的配置文件,其格式为:
service service-name
{
disabled = yes/no; //是否禁用
socket_type = xxx; //TCP/IP socket type,such as stream,dgram,raw,....
protocol = xxx; //服务使用的协议
server = xxx; //服务daemon 的完整路径
server_args = xxx; //服务的参数
port = xxx; //指定服务的端口号
wait = xxx; //是否阻塞服务即单线程或多线程
user = xxx; //服务进程的uid
group = xxx; //gid
REUSE = xxx; //可重用标志
......
}
示例:
1 )配置ftp 服务
在/etc/xinetd.d 目录下,编辑wu-ftpd
# default: on
# description: The wu-ftpd FTP server serves FTP connections. It uses
# normal, unencrypted usernames and passwords for authentication.
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.ftpd
server_args = -l -a
log_on_success += DURATION
nice = 10
}
2 )配置telnet 服务
在/etc/xinetd.d 目录下,编辑telnet
# default: on
# description: The telnet server serves telnet sessions; it uses
# unencrypted username/password pairs for authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
配置完成后 重新启动服务
#/etc/rc.d/init.d/xinetd restart
该配置文件定义了各种需要在启动时加载的模块的参数信息 ,文件格式如下:
alias eth0 tg3
alias eth1 3c905
系统网络设备的配置文件保存在"/etc/sysconfig/network-scripts”目录下,ifcfg-eth0 包含第一块网卡的配置信息,ifcfg-eth1 包含第二块网卡的配置信息。
下面是“/etc/sysconfig/network-scripts/ifcfg-eth0”文件的示例:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.66
NETMASK=255.255.255.0
GATEWAY=192.168.0.65
若希望手工修改网络地址或在新的接口上增加新的网络界面,可以通过修改对应的文件(ifcfg-ethN) 或创建新的文件来实现。