实 验 报 告
题 目: 院 系: 专 业: 班 级: 姓 名: 学 号: 指导教师:
项目四、Linux网络配置与DNS服务
计算机系 软件工程 2010级?班 ?? 2010???? 何东彬 2012 年 4 月 11 日
实训项目4 Linux网络配置与DNS服务
一、实训目的
● 掌握Linux网络相关配置的方法; ● 安装bind,并配置DNS服务。 Linux
二、实训内容
1、 以链接克隆方式,获得已经安装服务器的克隆备份。并在克隆机上进行练习。 2、 修改克隆机网卡名称。
3、 配置网络参数(练习使用命令或图形方式)。 4、 安装bind,并配置及测试DNS服务。
三、实训步骤
子项目1.链接克隆当前已经安装好的RHEL6系统。
(1)在系统关闭的状态下克隆。 (2)登录后查看系统网络设置。
[root@hlinux6 Desktop]# ifconfig (注意,加粗字体为学习者录入) eth1 Link encap:Ethernet HWaddr 00:0C:29:BF:AC:2E
inet addr:192.168.0.104 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:febf:ac2e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:34 errors:0 dropped:0 overruns:0 frame:0 TX packets:33 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
RX bytes:14976 (14.6 KiB) TX bytes:5044 (4.9 KiB) Interrupt:19 Base address:0x2024
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
RX bytes:480 (480.0 b) TX bytes:480 (480.0 b) (3)修改eth1为eth0。
装了虚拟机系统REHL6,为了以后使用方便对虚拟机进行克隆或复制。当使用克隆后的虚拟机时发现原来在基本系统中的网 卡eth0到了新系统却没有了,使
用ifconfig -a会发现只有eth1。因为基本系统的网络相关配置都是基于eth0的,eth1没有网络相关的配置,此时要正常该虚拟机中的网络,只有添加eth1的网络配置,这样每次都要修改网卡配置在做多Linux系统测试的时候很不方便。更进一步,如果基于此克隆虚拟机继续克隆或复制新的虚拟机,网卡的标识每一次都会自动加1(第二次克隆会变成eth2),dmesg却显示内核只识别到网卡eth0。
具体原因在于很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。例如在 Debian etch中,udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。而VMware会自动生 成虚拟机的mac地址。这样,由于基本系统的虚拟机已经记录了该虚拟机的网卡mac地址对应于网卡eth0,在克隆出的虚拟机中由于mac地址发生改 变,udev会自动将该mac对应于网卡eth1。以此类推,udev会记录所有已经识别的mac与网卡名的关系,所以每次克隆网卡名称会自动加1,而其 实kernel仅仅只识别到一张网卡,跟网卡名相关的网络配置也未发生任何变化。 解决方案: 在RHEL6系统中修改/etc/udev/rules.d 下的 70-persistent-net.rules 文件。 删除# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda) SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:0c:29:ad:06:2a”, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″等内容(如果存在的话) 然后把eth1对应的哪一行的”eth1″修改为”eth0″即可。 RHEL6 或Fedora下另外一种方法是:把里面的内容都删除,然后重新启动,系统也会重新发现网卡硬件,重新产生该文件。
子项目2.网络参数设置
(1)使用ifconfig 修改eth0的ip地址。
# ifconfig eth0 192.168.0.200 netmask 255.255.255.0
(2)查看网卡的配置参数文件。
# vim /etc/sysconfig/network-scripts/ifcfg-eth0 NAME=\"eth0\" TYPE=Ethernet
BOOTPROTO=none IPADDR=192.168.0.111 PREFIX=24
GATEWAY=192.168.0.1 DEFROUTE=yes
IPV4_FAILURE_FATAL=yes IPV6INIT=no
UUID=1dd1cfd5-9385-4987-afa1-6b8ccb5af28d ONBOOT=yes
HWADDR=00:0C:29:BF:AC:2E
DEVICE=\"eth0\"
NM_CONTROLLED=\"yes\" ONBOOT=\"no\" HWADDR=00:0C:29:0C:80:E7 TYPE=Ethernet BOOTPROTO=none IPADDR=192.168.0.200 PREFIX=24 GATEWAY=192.168.0.103 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME=\"System eth0\" UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 注释: DEVICE= Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 上面并没有网关的设置 Route命令显示结果每列含义解释: Destination Gateway 目标网络IP地址,可以是一个网络地址或一个主机地址。 网关地址,即该路由条目中下一跳的路由器IP地址(路由字段可以是星号*或是默认网关;星号表示Destination是在主机所属的网络,因此不需要路由;默认网关指的是将所有非本地的流量都发送到的一个指定IP。 路由项的子网掩码,与Destination信息进行“与”运算得出目标地址。 路由标志: U表示路由项是活动的;G表示路由指向网关;R表示对动态路由进行复位;D表示路由项是动态安装的;M表示动态修改路由;!表示拒绝路由;H表示目标是单个主机。 到达目标网络地址所需的中转数,也就是路由开销,用于衡量路径的代价。 对该路由项的引用次数(依赖于本路由的其他路由条目数量) 该路由项被使用的次数。 该路由项发送数据包所使用的网络接口(网络设备) ① 添加到达目标网络192.168.2.0/24的网络路由,经由eth0接口,由192.168.0.103转 Genmask Flags Metric Ref Use Iface 发。 # route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.103 dev eth0 ② 添加到达192.168.11.8的主机路由,经由eth0接口,由192.168.0.103转发。 # route add -host 192.168.11.8 gw 192.168.0.103 dev eth0 ③ 删除到达目标网络192.168.2.0/24的路由条目 # route del -net 192.168.2.0 netmask 255.255.255.0 ④删除到达目标主机192.168.11.8/24的路由条目 # route del -host 192.168.11.8 (4)设置默认网关和主机名。 # route add default gw 192.168.0.1 # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 1 0 0 eth0 default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 #hostname newHostName 想永久修改hostname,需要修改文件/etc/sysconfig/network 注意:虚拟机下配置Linux系统的网关地址应与其宿主机host的网关地址一致(其宿主机所在局域网的网关地址),这样虚拟机才能和外网通信 (5)修改客户机端的DNS地址的设置文件 # vim /etc/resolv.conf # Generated by NetworkManager 此行被注释,下面是第一、二DNS地址 nameserver 192.168.0.1 nameserver 202.207.122.125 (6)查看DNS解析顺序 # vim /etc/host.conf multi on order hosts,bind 子项目3.启动和停止守护进程(服务称为守护进程) # service sshd status 查看状态 openssh-daemon (pid 1795) is running... # service sshd start 没有启动则可以启动服务 # service sshd restart 启动后可以重新启动服务 # service sshd stop 启动后,可以停止服务 # chkconfig --list sshd 查询该服务在不同启动级别下的启动情况 sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off # chkconfig --level 3 sshd off 关闭ssh服务在启动级别3下的启动 # chkconfig --list sshd 查询ssh该服务的修改情况 sshd 0:off 1:off 2:on 3:off 4:o n 小练习:#ssh 主机名或地址 5:on 6:off 子项目4. 软件的安装 (1) 使用yum安装软件 简介: yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载 RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至 全部软件包的命令,而且命令简洁而又好记。 yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个 distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了 Linux 用户一直头痛的 dependencies 的问题。 一般这类软件通过一个或者多个配置文件描述对应的 repository 的网络地址,通过 http 或者 ftp 协议在需要的时候从 repository 获得必要的信息,下载相关的软件包。这样,本地用户通过建立不同的 repository 的描述说明,在有 Internet 连接时就能方便进行系统的升级维护工作。 (2) 使用createrepo来创建repository (yum仓库) #mkdir /mnt/cdrom #mkdir /var/yumDisk #mount –t iso9660 /dev/sr0 /mnt/cdrom #cp –rf /mnt/cdrom/Packages /var/yumdisk #cd /var/yumDisk #createrepo . //这时如果提示有错,则需要安装createrepo,进入Packages目录 #cd Packages #rpm –ivh createrepo-0.9.8-4.el6.noarch.rpm 这时会提示: error: Failed dependencies: deltarpm is needed by createrepo-0.9.8-4.el6.noarch python-deltarpm is needed by createrepo-0.9.8-4.el6.noarch 这说明需要先安装下面两个rpm包 # rpm -ivh deltarpm-3.5-0.5.20090913git.el6.i686.rpm # rpm -ivh python-deltarpm-3.5-0.5.20090913git.el6.i686.rpm 最后 # rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm # createrepo . (3) 新建本地yum源的配置文件local.repo (使用图形化安装时必须要配置该项目) 首先保证RHEL6的安装光盘已经在光驱中(在虚拟机中安装时,注意iso文件是否已经放入虚拟光驱) # mount /dev/cdrom /mnt/cdrom/ mount: block device /dev/sr0 is write-protected, mounting read-only #vim /etc/yum.repos.d/local.repo 编写文件内如如下: [InstallMdediaOfHedb] //中括号内的名称随便起,不要重复就可以 baseurl=file:///mnt/cdrom //yum安装源位置 enable=1 gpgcheck=0 然后使用 yum search bind 来测试,如果找到很多那就ok了! 子项目5.DNS的安装与配置 伯克利开发的bind,rh6.0不用安装caching包了。 #yum install bind* #vim /etc/named.conf //这是DNS的主配置文件 options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory \"/var/named\"; … … allow-query { any; }; … …. include \"/etc/named.rfc1912.zones\"; 修改内容一般只有两处,修改为any;上文中红色标注。 注意,如果我们做的是独立DNS的话,则需要删除named.conf文件中的forwarder语句 最后存盘退出,退出后需要修改named.conf文章中最后提到的那个配置文件,如下 # vim /etc/named.rfc1912.zones 从其他部分拷贝正向和反向解析的文本,添加在文件后部,内容如下 (注意: 正向: zone “localhost” IN {… …}; 反向: zone “0.in-addr.arpa” IN {... ...}; ) zone \"example.com\" IN { //正向解析文件 type master; file \"example.com.zone\"; allow-update { none; }; }; zone \"122.207.202.in-addr.arpa\" IN { //注意此处设置自己的ip type master; file \"202.207.122.zone\"; allow-update { none; }; }; # cp /var/named/named.localhost /var/named/example.com.zone //注意与前面文件名一致 # cp /var/named/named.loopback /var/named/202.207.122.zone 首先编辑正向解析文件 # vim /var/named/example.com.zone 内容如下: 千万别忘了,结束处要加一个点 (一定要注意域名结尾要有dot,红色部分为新添加或修改) $TTL 1D @ IN SOA dns.example.com. root.example.com. ( //注意域名后有点 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 dns IN A 202.207.122.160 server IN A 202.207.122.160 wwww IN A 202.207.122.160 clone IN A 202.207.122.170 ftp IN CNAME dns 解释: 1. $TTL 1D TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS 服务器上缓存时间。本条记录的意思是:#更新为最长1天 2. @ 代表example.com 域 IN SOA 意义见下行 再后面是dns服务器的域名 和 管理员的邮件地址 每个区在取的开始都包含了一个起始授权记录(Start of Authority Record),简称SOA记录。SOA定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA记录。 3. serial号码是为了给辅助域名服务器同步用的,如果辅助域名服务器比这个小则要更新 了。注意修改zone文件后,一定要增加这个值,否则辅助域名服务器不知道你已经更新了。 4. refresh每隔多长时间与主域名服务器联系一下 这里是1天。 5. retry 如果主服务器没理我,则每隔1H(1小时)再访问一下 6. expiry如果一直retry没人理睬的话,则最多坚持1W(1星期)期限 7. minimum代表 最少在缓存中保存一天 8. 这一行中的NS @ 低版本中不这么写!写成如下: IN NS dns.example.com. 也有写成 @ IN NS dns1.example.com. @ IN NS dns2.example.com. NS表示Name Server,该zone的查询将提交给主机 dns.example.com DNS文件参数定义表 总结: NS资源记录表示该区的授权服务器,它们表示SOA资源记录中指定的该区的主和辅助服务器,也表示了任何授权区的服务器。每个区在区根处至少包含一个NS记录。 Parameter $TTL IN SOA NS Definition Time To Live for the zone file The Internet system Start Of Authority to administer zone Name Server for the zone Mail Exchange for the zone (needs a priority value) 也叫做邮件路由记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操控所有的邮箱设置。您只需在线填写您服务器的IP地址,即可将您域名下的邮件全部转到您自己设定相应的邮件服务器上。简单的说,通过操作MX记录,您才可以得到以您域名结尾的邮局。 Address records for hosts / network equipment A (Address)记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的子域名。通俗来说A记录就是服务器的IP,域名绑定A记录就是告诉DNS,当你输入域名的时候给你引导向设置在DNS的A记录所对应的服务器。 Canonical name for an alias (points to \"A\" record) CNAME (Canonical Name)记录,通常称别名指向。在这里,你可以定义一个主机别名,比如设置ftp.***.com,用来指向一个主机www.***.com,那么以后就可以用FTP.***.com来代替访问www.***.com了 MX A CNAME # vim /var/named/202.207.122.zone 内容如下: (一定要注意域名结尾要有dot,红色部分为新添加或修改) $TTL 1D @ IN SOA example.com. root.example.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 PTR localhost. 160 IN PTR server.example.com. 千万别忘了,结束处要加一个点 170 IN PTR clone.example.com. 注意,在上文中,其实 160 IN PTR server.example.com. 170 IN PTR clone.example.com. 可以与正向文件不一样,但是注意最后必须加点。 这时候查看一下chroot目录下也生成相应的文件,你可以进一步打开文件看看内容。 # ll /var/named/chroot/var/named/*.zone -rw-r-----. 1 root root 254 Aug 21 23:19 /var/named/chroot/var/named/202.207.122.zone -rw-r-----. 1 root root 263 Aug 21 23:14 /var/named/chroot/var/named/example.com.zone 注意:如果看不到上面的文件,请到根目录处,运行named服务 #service named start 之后,文件就有了。 然后为named用户赋予权限,将该目录所有者改为named # cd /var/named/chroot/var/named/ # chown named * 这一步非常之重要!!! 因为当前root用户操作,所以刚生成的文件是属于root的,可以使用ll查看 # ll total 40 -rw-r-----. 1 root root 256 Mar 18 22:44 192.168.0.zone drwxr-x---. 6 root named 4096 Mar 18 21:52 chroot drwxrwx---. 2 named named 4096 Mar 18 22:49 data drwxrwx---. 2 named named 4096 Mar 18 22:50 dynamic -rw-r-----. 1 root root 301 Mar 18 22:45 example.com.zone -rw-r-----. 1 root named 1892 Feb 18 2008 named.ca -rw-r-----. 1 root named 152 Dec 15 2009 named.empty -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost -rw-r-----. 1 root named 168 Dec 15 2009 named.loopback drwxrwx---. 2 named named 4096 May 26 2010 slaves # service named restart (如果没有启动,则直接start) Stopping named: [ OK ] Starting named: [ OK ] 测试named.conf主配置文件 #named-checkconf named-checkconf通过检查named.conf句法的正确性来检查named文件的正确性。对于配置正确的named.conf文件,named-checkconf不会显示任何信息。 测试区域文件 #named-checkzone # named-checkzone example.com /var/named/example.com.zone zone example.com/IN: loaded serial 0 OK 注意,没有提示就是好消息 named-checkzone通过检查句法的正确性来检查区带(zone)文件的正确性。named-checkzone如果没有检查到错误,会返回一个简单的“OK”字符。 最后配置客户端: #vim /etc/resolve.conf 修改 namserver 配置好的dns的ip,对于本例子来说,修改后的内容为: # Generated by NetworkManager search example.com //search 域名 nameserver 202.207.122.160 //DNS 服务器地址 # system-config-firewall 测试: (1) 本机测试:配置本机客户端配置,修改/etc/resolve.conf 使用nslookup 测试 (2) 客户机测试: Windows客户机测试:配置tcp/ip协议网关地址为已配置DNS服务器地址,使用浏 览器测试 (3) RHEL客户机测试:(一般情况下使用克隆机),修改/etc/resolve.conf,检查是否安装 Firefox浏览器,如果没有安装则使用yum方式或图形界面安装,但需要注意的是图形界面安装需要yum支持,因此需要配置好yum库。配置yum库方法参见前面的“新建本地yum源的配置文件local.repo” 安装浏览器测试的方法: 方法一:使用 yum search firefox,查看相关信息,如果没有安装的话,使用yum install 安装。 方法二:使用图形化方式安装Firefox,前提是必须已经配置好yum 五、实训报告要求 ● 实训目的。 ● 实训内容。 ● 实训步骤。 ● 实训中的问题和解决方法。 ● 回答实训思考题。 ● 实训心得与体会。 ● 建议与意见。 因篇幅问题不能全部显示,请点此查看更多更全内容