对于我这种强迫症患者,服务账号能用域账号就不用本地的。微软最佳实践也是这么建议的,于是我在安装SCOM的时候就是按照下面这样来规划账户的。
用户名 | 用途 | 权限级别 | 类型 | 隶属于 |
acertwp\svcomda | OM数据访问服务和配置服务帐户 | 低权域用户 | 用户 | SQL本地管理员 |
acertwp\svcomw | OM数据仓库写入账户 | 低权域用户 | 用户 | SQL本地管理员 |
acertwp\svcomr | OM报表查询账户 | 低权域用户 | 用户 | SQL本地管理员 |
所以我在配置SCOM账户的时候是这样子的:
那么问题来了,为毛我才装好没多久的SCOM就报警了呢,我还没做啥坏事呢
警报描述如下:
The System Center Data Access service failed to register an SPN. A domain admin needs to add MSOMSdkSvc/SZSRVOM01v and MSOMSdkSvc/SZSRVOM01v.acertwp.com to the servicePrincipalName of CN=SZSRVOM01V,OU=Servers,DC=acertwp,DC=com
为什么会报错呢,因为我们每次重启机器/服务的时候都会做一个动作,System Center Data Access Service这个服务会尝试去找AD验证这个服务的SPN在域里面是否有注册。但是在域里面,一个低权限的Domain User是没有权限去注册SPN的,所以需要域管理员去做这件事情。
可是为什么还会报这个错呢,我在安装的时候用的账号是域管理员啊,这里其实是个BUG。而且这个BUG由来已久,已经伴随了OM 2012 、OM2012 SP1和 OM2012 R2整整三代产品了。大家仔细看这个警报的描述,这是让我用SZSRVOM01v这个计算机账户去注册SPN,可是我明明是用acertwp\svcomda这个账号去做服务账号的,要注册SPN也是为acertwp\svcomda这个账号注册。
我们可以通过下面这个命令来获取acertwp\svcomda这个账户注册的SPN(把账号替换成自己设置的账号):
C:\Users\administrator.ACERTWP>setspn L acertwp\svcomda
输出的内容应该是这个样子的
Registered ServicePrincipalNames 用于 CN=SVCOMDA,OU=Service,OU=MIS,DC=acertwp,DC =com: MSOMSdkSvc/SZSRVOM01v.acertwp.com MSOMSdkSvc/SZSRVOM01v
但是我们实际可能看到输出内容是这个样子的
Registered ServicePrincipalNames 用于 CN=SVCOMDA,OU=Service,OU=MIS,DC=acertwp,DC =com:
这时候就需要我们手工来添加这个SPN了。
然后我们来看下SZSRVOM01v这个计算机账户的SPN:
C:\Users\administrator.ACERTWP>setspn -l SZSRVOM01v
输出的内容是这样子的
Registered ServicePrincipalNames 用于 CN=SZSRVOM01V,OU=Servers,DC=acertwp,DC=com: MSOMHSvc/SZSRVOM01v.acertwp.com MSOMHSvc/SZSRVOM01V WSMAN/SZSRVOM01v WSMAN/SZSRVOM01v.acertwp.com TERMSRV/SZSRVOM01V TERMSRV/SZSRVOM01v.acertwp.com RestrictedKrbHost/SZSRVOM01V HOST/SZSRVOM01V RestrictedKrbHost/SZSRVOM01v.acertwp.com HOST/SZSRVOM01v.acertwp.com
既然知道了来龙去脉,我们要怎么修复这个问题呢?
首先我们得有一个域管理员的账号,然后我们用这个账号随意登录一台域里面的机器。打开CMD(管理员模式),执行以下两条命令:
setspn s MSOMSdkSvc/SZSRVOM01v.acertwp.com ACERTWP\svcomda setspn -s MSOMSdkSvc/SCOM01 ACERTWP\svcomda
再回到最初的命令,查询acertwp\svcomda注册的SPN:
setspn L acertwp\svcomda
这时候的输出就变成
Registered ServicePrincipalNames 用于CN=SVCOMDA,OU=Service,OU=MIS,DC=acertwp,DC =com: MSOMSdkSvc/SZSRVOM01v.acertwp.com MSOMSdkSvc/SZSRVOM01v
然后我们把警报关闭掉,不再报错了。。。这个世界终于安静了。
本文出自 "微软技术之路" 博客,请务必保留此出处http://autodiscover.blog.51cto.com/5759621/1582584
一、实验拓扑:
使用华为ENSP模拟器(版本V100R002C00 1.2.00.350)
二、实验需求:
1.了解ARP协议及其作用
2.掌握交换机的工作原理
3.解决以太网广播风暴问题
三、实验步骤:
1. iP规划:
c1:192.168.1.10
c2:192.168.1.20
c3:192.168.2.30
R1:g0/0/1192.168.1.1 g0/0/2 192.168.2.1
2. ARP协议作用:
1) 概念:ARP(全称AddressResolution Protocol)即地址解析协议,是网络层协议。
2) 作用:通过arp的请求报文来获取目标mac地址。
3) Arp协议有两种报文,分别是arprequest(请求)报文和arp reply(回应)报文。c1和c2是在同一个网段,并且都是24位掩码,所以它们是可以通信的,c1、c2之间详细的通信过程是这样的:数据包在封包时,原ip地址是192.168.1.10,目标地址封装为192.168.1.20,网络层封包完成交给下一层数据链路层,在装帧时,帧头的原mac地址字段是c1的网卡的mac地址,在目标Mac地址字段不是c2的mac地址,管理员在c1上pingc2可以让c1知道c2的ip地址,但不知道它的mac地址。所以二层装帧是完不成的。
4)这种情况就需要通过arprequest报文获得目标mac地址,request报文是通过广播的方式发送出去的。 //所谓广播就是连在c1上的所有设备都能收到报文。但是只有c2会发送回应报文,把自己的mac地址告诉c1,即arp reply报文,是以单播的形式回应c1的。
5)每台pc都会有arp缓存表,把动态学习到的mac地址和iP地址对应关系放到arp缓存表里。
6)用arp -a查看arp缓存表,当c1没有和c2通信过,它的缓存表里是没有c2的mac地址的,我用c1来ping c2,然后再查看arp缓存表,它就会学到c2的mac地址。验证如下:
7)通过抓包可以抓到发送的报文。在c1处抓,右击"开始抓包",单击ok,然后右击打开WIRESHARK(抓包工具)之后会出来很多报文,我们在Filter(过滤器)里输入arp单击Apply //只抓arp报文。很明显这里抓到两个报文,一个是广播,一个是单播。
先看广播request(请求)报文,打开之后先看二层信息,
我可以用ipconfig查看c1的mac地址
再看三层信息
通过c2的回应报文,c1学到了c2的mac地址,下次c1要和c2通信就不会发送arp请求报文了,因为c1记在了自己的arp缓存表里。那么此时再用c1 ping c2并抓包,如果发现还发送arp报文,说明它忘记了,或者arp缓存表过期。
9)当arp缓存表里有对方的mac地址并且没有忘记或过期,通信时就不会发送arp报文。 //以上就是arp工作原理。
10)当c1发送广播报文时,连在交换机上的所有设备都能收到,包括路由器,但是只有c2会回应它,我们在路由器下面接口抓包,验证如下:
R1的g0/0/1接口处抓包
没有评论:
发表评论