system3之:2 DHCP服务

来源:互联网 发布:点钞机升级软件 编辑:程序博客网 时间:2024/05/22 04:50
学习服务的经验:
    1.名字(英文),作用及功能
    2.工作原理
    3.配置
    4.验证看效果
    5.排错



DHCP

vlan隔离广播,不同vlan不能发送广播

2.1.png



为什么使用DHCP??
1.减小管理员的工作量
2.减小输入错误的可能
3.避免ip冲突
4.提高了ip地址的利用率

提高利用率的原因是因为使用了地址池,不用的时候可以给别人用,动态分配。


DHCP过程:

2.3.png

基本概念:

虚拟机中
host-only只能和本机通信,bridged是和其他机器进行通信。
NAT :vmware充当了路由器

DHCP不受防火墙限制

全局配置优先级低于局部配置

排错思路:从下往上排错

本地网关优先级更高
/etc/sysconfig/network


本地yum源搭建中:虚拟机里面cdrom里面挂载的有镜像,所以可以直接挂载使用,真实机需要找到路径



客户机,建议先是静态的ip(测试一下),然后改成动态获得

server---67 ---udp
client ---68
服务器67 ,客户机68端口

主配置文件
    /etc/dhcpd.conf

建议删除 租约文件,重新刷新服务.目的是清除以前的分配的ip地址
[root@teacher dhcpd]# rm -rf  /var/lib/dhcpd/dhcpd.leases
[root@teacher dhcpd]#service  dhcpd restart

指定开放服务网络接口文件
/etc/sysconfig/dhcpd     
  
提供额外执行参数,例如可修改 DHCPDARGS项,限制dhcp服务器提供服务的网络接口
[root@localhost ~]# vi  /etc/sysconfig/dhcpd
DHCPDARGS="eth0 "  在eth0接口提供dhcp服务默认的话为所有端口

重启dhcp服务:
/etc/init.d/dhcpd  restart
service dhcpd restart


linux
查看客户机的地址租用记录
/var/lib/dhclient/dhclient.leases
  option dhcp-server-identifier 172.18.16.1;  

10分钟
2个小时
   续约的时候发的是request包,时间大概在租期的80%的时间,如果续租不到,就重新发discover包,重新到别的dhcp服务器获得ip地址


dhclient -r eth0   释放ip地址
dhclient  eth0  获得ip,要求网卡配置文件里采用dhcp方式获得ip

[root@localhost cron.daily]# ifconfig eth1 down  跟ifdown eth1一样
[root@localhost cron.daily]# ifconfig eth1 up


客户端获取dhcp动态ip的两种使用方式:

1.修改网卡配置文件(如 ifcfg-eth0)
 BOOTPROTO=dhcp

2.使用dhclient命令
 格式:dhclient  [-r]  [网络接口名]

服务器端的配置:

服务器配置文件
/etc/dhcp/dhcpd.conf

[root@koukou ~]# rpm -qa |grep dhcp    列出所有的,已经安装在本机linux系统上面的所有软件名称(-q则只是查询后面接的软件名称是否安装)
dhcp-common-4.1.1-31.P1.el6.i686
dhcp-4.1.1-31.P1.el6.i686
[root@koukou ~]#



 
[root@lichao520 dhcp]# pwd
/etc/dhcp
[root@lichao520 dhcp]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  ./dhcpd.conf
cp:是否覆盖"./dh.conf"? y
[root@lichao520 dhcp]#
[root@lichao520 dhcp]# cat dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 10.5.5.0 netmask 255.255.255.0 {
  range 10.5.5.26 10.5.5.130;
  option domain-name-servers 8.8.8.8;
  option domain-name "sxkeji.com.cn";
  option routers 10.5.5.254;
}

host fantexi {
  hardware ethernet 00:0c:29:11:22:ab;
  fixed-address 10.5.5.88;
}

[root@lichao520 dhcp]# /etc/init.d/dhcpd restart 重新启用dhcp服务
正在启动 dhcpd:                                         [失败]

[root@lichao520 dhcp]# setup
[root@lichao520 dhcp]# /etc/init.d/network  restart
关闭环回接口:                                           [确定]
弹出环回接口:                                           [确定]
弹出界面 eth0:                                          [确定]
[root@lichao520 dhcp]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:B5:70:4D  
          inet addr:10.5.5.1  Bcast:10.5.5.255  Mask:255.255.255.0
==
-p, --program
-t  tcp
-u   udp
-a  all
-n  number

0.0.0.0:67     代表在所有的ip地址上67端口提供dhcp服务  

[root@lichao520 ~]# netstat -antpu|grep dhcp
udp        0      0 0.0.0.0:67                  0.0.0.0:*                               4591/dhcpd          
[root@lichao520 ~]#

[root@lichao520 ~]# chkconfig  --list dhcpd
dhcpd              0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭
[root@lichao520 ~]# chkconfig dhcpd on   开机自动运行
[root@lichao520 ~]# chkconfig  --list dhcpd
dhcpd              0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
[root@lichao520 ~]#
====
[root@lichao520 dhcp]# /etc/init.d/network restart
正在关闭接口 eth0:                                        [确定]
关闭环回接口:                                             [确定]
弹出环回接口:                                             [确定]
弹出界面 eth0:
正在决定 eth0 的 IP 信息...完成。    动态获得ip
                                                           [确定]



查看日志:

出错就查看日志

tail -f /var/log/messages  
tail -f /var/log/boot.log

 查看log,因为/etc/dhcp/dhcpd.conf配置文件里定义的设备类型为local7,同时/etc/rsyslog.conf文件里规定的log文件的路径在/var/log/boot.log
 /etc/rsyslog.conf  查看日志的存路径
vim /etc/rsyslog.conf
# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log

tail -f /var/log/boot.log
May 30 10:43:50 lichao520 dhcpd: DHCPDISCOVER from 00:0c:29:11:22:ab (PC-20130503LURF) via eth0
May 30 10:43:51 lichao520 dhcpd: DHCPOFFER on 10.0.29.10 to 00:0c:29:11:22:ab (PC-20130503LURF) via eth0
May 30 10:43:51 lichao520 dhcpd: DHCPREQUEST for 10.0.29.10 (192.168.1.1) from 00:0c:29:11:22:ab (PC-20130503LURF) via eth0
May 30 10:43:51 lichao520 dhcpd: DHCPACK on 10.0.29.10 to 00:0c:29:11:22:ab (PC-20130503LURF) via eth0
May 30 10:43:57 lichao520 dhcpd: DHCPINFORM from 10.0.29.10 via eth0: not authoritative for subnet 10.0.29.0
May 30 10:44:00 lichao520 dhcpd: DHCPINFORM from 10.0.29.10 via eth0: not authoritative for subnet 10.0.29.0



windows里的机器作DHCP的客户端

ipconfig /release 释放ip---》169.254开头的ip,说明已经没有有效ip了

ipconfig /renew   获得ip

若获得的ip为169.254开头的ip,说明没有其他的人给他分配ip,自己给自己配置一个ip



虚拟机如何与真实机通信?

bridged--》可以直接桥接
NAT---》虚拟机作路由功能,有一个ip,作为网关
host-only怎么通信
虚拟机只需要与真实机的vmnet1  能ping通,就能与主机通信
也就是虚拟机ip跟wmnet1在同一网段

注意问题:

1.一个局域网内最好只有1台dhcp服务器


2.建议禁用NetworkManager服务
service  NetworkManager stop   停止服务
chkconfig NetworkManager  off  设置开机不启动


3.关闭vmware本身的vmnet1和vmnet8的dhcp服务,防止影响你的实验效果
在菜单栏edit---》virtual network editor

4.建议关闭防火墙 iptables -F

5.关闭selinux

vmnet0 ---》bridged
vmnet1--》hostonly
vmnet8--》nat

DHCP实验1:

2台机器(客户机、服务器)
保留ip地址的实验
windows、linux两台虚拟机

linux作服务器
windows作客户机

linux上服务器的配置:


cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  /etc/dhcp/dhcpd.conf

setup配置eth0的ip,作为网关

vim   /etc/dhcp/dhcpd.conf

service dhcpd restart

windows上客户机的配置:
wmnet1设为host-only
ipconfig release
ipconfig renew



linux真实机作为客户机的话,就是vmnet1作为网关,

dhclient   vmnet1    linux客户端动态获取ip

ifup vmnet1    启用ip



真实机作为 dhcp的客户机后,出现不能上网??

解决方法如下:

vim   /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=dhcp    ---》真实机作为 dhcp的客户机后这里设置成这样就不能上网了,说明是通过网络中的dhcp服务器分配ip ,网关就变
HWADDR=EC:88:8F:EF:3D:03
NM_CONTROLLED=yes
ONBOOT=no
TYPE=Ethernet
UUID="d7370fd1-5ea7-4cb3-a43c-7b8e8ec65d8e"
IPV6INIT=no
USERCTL=no
~            

[root@koukou ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.54.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.168.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet0
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.1.0.0        0.0.0.0         255.255.0.0     U     0      0        0 vmnet1
0.0.0.0         10.0.1.253      0.0.0.0         UG    0      0        0 eth0

              
[root@koukou ~]# service network restart
正在关闭接口 eth0:                                        [确定]
关闭环回接口:                                             [确定]
弹出环回接口:                                             [确定]
弹出界面 eth0:
正在决定 eth0 的 IP 信息...完成。
                                                           [确定]
[root@koukou ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.54.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.168.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet0
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.1.0.0        0.0.0.0         255.255.0.0     U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0       这里网关变了是因为设置的动态获取


[root@koukou ~]# ifup eth1   启用eth1

正在决定 eth1 的 IP 信息...完成。
[root@koukou ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.54.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.168.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet0
10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.1.0.0        0.0.0.0         255.255.0.0     U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
0.0.0.0         10.10.10.254    0.0.0.0         UG    0      0        0 eth1          这里网关就被eth1影响了,所以不能上网

[root@koukou ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1   修改一下BOOTPROTO=none
[root@koukou ~]# service network restart
正在关闭接口 eth0:                                        [确定]
正在关闭接口 eth1:                                        [确定]
关闭环回接口:                                             [确定]
弹出环回接口:                                             [确定]
弹出界面 eth0:
正在决定 eth0 的 IP 信息...完成。
                                                           [确定]
[root@koukou ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.54.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.168.0   0.0.0.0         255.255.255.0   U     0      0        0 vmnet0
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.1.0.0        0.0.0.0         255.255.0.0     U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         10.0.1.253      0.0.0.0         UG    0      0        0 eth0



ifconfig eth0的迷惑性:

1. ifconfig eth0  down    第一种down的方法  ifconfig eth0还是会干扰判断

[root@koukou software]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:30:67:F2:0C:21  
          inet addr:10.0.1.126  Bcast:10.0.255.255  Mask:255.255.0.0
          inet6 addr: fe80::230:67ff:fef2:c21/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:119070 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48493 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:83640652 (79.7 MiB)  TX bytes:3738422 (3.5 MiB)
          Interrupt:29 Base address:0x6000

[root@koukou software]# ifconfig eth0  down    第一种down的方法
[root@koukou software]# ifconfig eth0      还是可以看到down掉的eth0
eth0      Link encap:Ethernet  HWaddr 00:30:67:F2:0C:21  
          inet addr:10.0.1.126  Bcast:10.0.255.255  Mask:255.255.0.0
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:119199 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48504 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:83654786 (79.7 MiB)  TX bytes:3739238 (3.5 MiB)
          Interrupt:29 Base address:0x6000

[root@koukou software]# ifconfig   就看不到了(只能看到激活的网卡)

[root@koukou software]# ifconfig eth0  up
[root@koukou software]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:30:67:F2:0C:21  
          inet addr:10.0.1.126  Bcast:10.0.255.255  Mask:255.255.0.0
          inet6 addr: fe80::230:67ff:fef2:c21/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:119200 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48506 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:83654846 (79.7 MiB)  TX bytes:3739426 (3.5 MiB)
          Interrupt:29 Base address:0x6000


2. ifdown eth0   第二种down的方法  两种查看方法都看不到ip地址了


[root@koukou software]# ifdown eth0
[root@koukou software]# ifconfig
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:216 errors:0 dropped:0 overruns:0 frame:0
          TX packets:216 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:19404 (18.9 KiB)  TX bytes:19404 (18.9 KiB)

[root@koukou software]# ifconfig eth0        
eth0      Link encap:Ethernet  HWaddr 00:30:67:F2:0C:21  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:120833 errors:0 dropped:0 overruns:0 frame:0
          TX packets:49026 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:84789112 (80.8 MiB)  TX bytes:3777361 (3.6 MiB)
          Interrupt:29 Base address:0x6000

[root@koukou software]# ifup eth0

[root@koukou software]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:30:67:F2:0C:21  
          inet addr:10.0.1.126  Bcast:10.0.255.255  Mask:255.255.0.0
          inet6 addr: fe80::230:67ff:fef2:c21/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:120896 errors:0 dropped:0 overruns:0 frame:0
          TX packets:49055 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:84794629 (80.8 MiB)  TX bytes:3782272 (3.6 MiB)
          Interrupt:29 Base address:0x6000

[root@koukou software]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:30:67:F2:0C:21  
          inet addr:10.0.1.126  Bcast:10.0.255.255  Mask:255.255.0.0
          inet6 addr: fe80::230:67ff:fef2:c21/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:121491 errors:0 dropped:0 overruns:0 frame:0
          TX packets:49064 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:84840089 (80.9 MiB)  TX bytes:3782770 (3.6 MiB)
          Interrupt:29 Base address:0x6000

所以查看ip的时候用ifconfig比较好,只能查看到激活的网卡


DHCP实验2

2.6.png

分析:实验的时候是用三台虚拟机来达到实验效果。一台作为客户机,一台作为dhcp中继器,一台作为dhcp服务器。
网段划分:客户机192.168.2.0/24    客户机ip192.168.2.2(测试用)    网关(192.168.2.1vmnet1--》vmnet8 eth1)
                服务器192.168.1.0/24    服务器ip192.168.1.2     网关(192.168.1.1vmnet8《--》vmnet8 eth0)

测试要关闭防火墙,dhcp与防火墙无关

思路如下:
1.首先,配置服务器,配置ip,网关(中继器的接口ip),设置服务器:
setup
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample  ./dhcpd.conf
vim   /etc/dhcp/dhcpd.conf  配置
service  dhcpd restart


2.然后,中继器要开启路由转发功能:vim  /etc/sysctl.conf    sysctl -p
2.7.png

动态获取ip的时候中继要作一下操作:
vim  /etc/sysconfig/dhcrelay
INTERFACES="eth0 eth1"
DHCPSERVERS="192.168.1.2"

只有一块网卡的话还要增加一块网卡,配置ip:eth0,eth1配置ip

3.
客户机测试配静态ip,需要关闭防火墙,DHCP服务的话没影响。
windows作客户机:
测试的时候只需要手动配置下ip和网关
DHCP获取ip
pconfig /release   ipconfog /renew   ipconfig查看ip获取情况



实验中遇到的问题和解决方法:

1.开始配置静态ip测试的时候,客户机能ping通DHCP服务器的网关,但是不能ping通服务器
解决方法:
    关闭了三台机器的防火墙,客户机的ip地址跟vmnet0连接主机的ip冲突了,所以一直不能获取静态配置的ip,重新给真实机配置ip,或者给客户机重新设置一个ip

2.动态获取的时候客户机可以获取到ip,但却获取的是服务器网段的ip??
因为自己网卡都用的host-only选项(默认都是vmnet1),要用vmnet1.vmnet8两个

3.service network restart 的时候eth0 的ip总是不见了,解决方法:
(经典问题)
vim /etc/sysconfig/network-scripts/ifcfg-eth0   改以下选项
ONBOOT=yes