system3之:2 DHCP服务
学习服务的经验:
1.名字(英文),作用及功能
2.工作原理
3.配置
4.验证看效果
5.排错
DHCP
vlan隔离广播,不同vlan不能发送广播
为什么使用DHCP??
1.减小管理员的工作量
2.减小输入错误的可能
3.避免ip冲突
4.提高了ip地址的利用率
提高利用率的原因是因为使用了地址池,不用的时候可以给别人用,动态分配。
DHCP过程:
基本概念:
虚拟机中:
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
分析:实验的时候是用三台虚拟机来达到实验效果。一台作为客户机,一台作为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
动态获取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