赞成楼上的,只是少了配置命令,补充如下:
交换机配置DHCP配置
1,交换机作DHCP Server
『配置环境参数』
1 PC1、PC2的网卡均采用动态获取IP地址的方式
2 PC1连接到交换机的以太网端口0/1,属于VLAN10;PC2连接到交换机的以太网端口0/2,属于VLAN20
3 三层交换机SwitchA的VLAN接口10地址为10111/24,VLAN接口20地址为10121/24
『组网需求』
1 PC1可以动态获取10110/24网段地址,并且网关地址为10111;PC2可以动态获取10120/24网段地址,并且网关地址为10121
『DHCP Server配置流程流程』
可以完成对直接连接到三层交换机的PC机分配IP地址,也可以对通过DHCP中继设备连接到三层交换机的PC机分配IP地址。
分配地址的方式可以采用接口方式,或者全局地址池方式。
SwitchA采用接口方式分配地址相关配置
1 创建(进入)VLAN10
[SwitchA]vlan 10
2 将E0/1加入到VLAN10
[SwitchA-vlan10]port Ethernet 0/1
3 创建(进入)VLAN接口10
[SwitchA]interface Vlan-interface 10
4 为VLAN接口10配置IP地址
[SwitchA-Vlan-interface10]ip address 10111 2552552550
5 在VLAN接口10上选择接口方式分配IP地址
[SwitchA-Vlan-interface10]dhcp select interface
6 禁止将PC机的网关地址分配给用户
[SwitchA]dhcp server forbidden-ip 10111
SwitchA采用全局地址池方式分配地址相关配置
1 创建(进入)VLAN10
[SwitchA]vlan 10
2 将E0/1加入到VLAN10
[SwitchA-vlan10]port Ethernet 0/1
3 创建(进入)VLAN接口10
[SwitchA]interface Vlan-interface 10
4 为VLAN接口10配置IP地址
[SwitchA-Vlan-interface10]ip address 10111 2552552550
5 在VLAN接口10上选择全局地址池方式分配IP地址
[SwitchA-Vlan-interface10]dhcp select global
6 创建全局地址池,并命名为”vlan10”
[SwitchA]dhcp server ip-pool vlan10
7 配置vlan10地址池给用户分配的地址范围以及用户的网关地址
[SwitchA-dhcp-vlan10]network 10110 mask 2552552550
[SwitchA-dhcp-vlan10]gateway-list 10111
8 禁止将PC机的网关地址分配给用户
[SwitchA]dhcp server forbidden-ip 10111
补充说明
以上配置以VLAN10的为例,VLAN20的配置参照VLAN10的配置即可。在采用全局地址池方式时,需新建一个与”vlan10”不同名的全局地址池。
经过以上配置,可以完成为PC1分配的IP地址为10110/24,同时PC1的网关地址为10111;为PC2分配的IP地址为10120/24,同时PC2的网关地址为10121。
VLAN接口默认情况下以全局地址池方式进行地址分配,因此当VLAN接口配置了以全局地址池方式进行地址分配后,查看交换机当前配置时,在相应的VLAN接口下无法看到有关DHCP的配置。
利用全局地址池方式,可以完成为用户分配与三层交换机本身VLAN接口地址不同网段的IP地址。
2,DHCP Relay配置
『配置环境参数』
1 DHCP Server的IP地址为192168010/24
2 DHCP Server连接在交换机的G1/1端口,属于vlan100,网关即交换机vlan接口100的地址19216801/24
3 E0/1-E0/10属于vlan10,网段地址101011/24
4 E0/11-E0/20属于vlan20,网段地址101021/24
『组网需求』
1 在SwitchA上配置DHCP Relay使下面用户动态获取指定的相应网段的IP地址
2 PC1、PC2均可以ping通自己的网关,同时PC1、PC2之间可以互访
『交换机DHCP Relay配置流程』
DHCP Relay的作用则是为了适应客户端和服务器不在同一网段的情况,通过Relay,不同子网的用户可以到同一个DHCP Server申请IP地址,这样便于地址池的管理和维护。
SwitchA相关配置
1 全局使能DHCP功能(缺省情况下,DHCP功能处于使能状态)
[SwitchA]dhcp enable
2 创建(进入)VLAN100
[SwitchA]vlan 100
3 将G1/1加入到VLAN100
[SwitchA-vlan100]port GigabitEthernet 1/1
4 创建(进入)VLAN接口100
[SwitchA]interface Vlan-interface 100
5 为VLAN接口100配置IP地址
[SwitchA-Vlan-interface100]ip address 19216801 2552552550
6 创建(进入)VLAN10
[SwitchA]vlan 10
7 将E0/1-E0/10加入到VLAN10
[SwitchA-vlan10]port Ethernet 0/1 to Ethernet 0/10
8 创建(进入)VLAN接口10
[SwitchA]interface Vlan-interface 10
9 为VLAN接口10配置IP地址
[SwitchA-Vlan-interface10]ip address 101011 2552552550
10 使能VLAN接口10的DHCP中继功能
[SwitchA-Vlan-interface10]dhcp select relay
11 为VLAN接口10配置DHCP服务器的地址
[SwitchA-Vlan-interface10]ip relay address 192168010
12 创建(进入)VLAN20
[SwitchA-vlan10]vlan 20
13 将E0/11-E0/20加入到VLAN20
[SwitchA-vlan20]port Ethernet 0/11 to Ethernet 0/20
14 创建(进入)VLAN接口20
[SwitchA]interface Vlan-interface 20
15 为VLAN接口20配置IP地址
[SwitchA-Vlan-interface20]ip address 101021 2552552550
16 使能VLAN接口20的DHCP中继功能
[SwitchA-Vlan-interface20]dhcp select relay
17 为VLAN接口20配置DHCP服务器的地址
[SwitchA-Vlan-interface20]ip relay address 192168010
补充说明
也可以在全局配置模式下,使能某个或某些VLAN接口上的DHCP中继功能,例如:[SwitchA]dhcp select relay interface Vlan-interface 10
3,DHCP Snooping
『配置环境参数』
1 DHCP Server连接在交换机SwitchA的G1/1端口,属于vlan10,IP地址为10101253/24
2 端口E0/1和E0/2同属于vlan10
『组网需求』
1 PC1、PC2均可以从指定DHCP Server获取到IP地址
2 防止其他非法的DHCP Server影响网络中的主机
『交换机DHCP-Snooping配置流程』
当交换机开启了DHCP-Snooping后,会对DHCP报文进行侦听,并可以从接收到的DHCP Request或DHCP Ack报文中提取并记录IP地址和MAC地址信息。另外,DHCP-Snooping允许将某个物理端口设置为信任端口或不信任端口。信任端口可以正常接收并转发DHCP Offer报文,而不信任端口会将接收到的DHCP Offer报文丢弃。这样,可以完成交换机对假冒DHCP Server的屏蔽作用,确保客户端从合法的DHCP Server获取IP地址。
SwitchA相关配置
1 创建(进入)VLAN10
[SwitchA]vlan 10
2 将端口E0/1、E0/2和G1/1加入到VLAN10
[SwitchA-vlan10]port Ethernet 0/1 Ethernet 0/2 GigabitEthernet 1/1
3 全局使能dhcp-snooping功能
[SwitchA]dhcp-snooping
4 将端口G1/1配置为trust端口,
[SwitchA-GigabitEthernet1/1]dhcp-snooping trust
补充说明
由于DHCP服务器提供给用户包含了服务器分配给用户的IP地址的报文――”dhcp offer”报文,由G1/1端口进入SwitchA并进行转发,因此需要将端口G1/1配置为”trust”端口。如果SwitchA上行接口配置为Trunk端口,并且连接到DHCP中继设备,也需要将上行端口配置为”trust”端口。
跨网段获取MAC地址方法如下:
protected void Page_Load(object sender, EventArgs e)
{
//ReadMSG();
if (!IsPostBack)
{
Label1Text =
"//客户端ip:" +
RequestServerVariablesGet("Remote_Addr")ToString() + "<br>" +
" //客户端主机名:" +
RequestServerVariablesGet("Remote_Host")ToString() + "<br>" +
"//客户端浏览器IE:" +
RequestBrowserBrowser + "<br>" +
"//客户端浏览器 版本号:" +
RequestBrowserMajorVersion + "<br>" +
"//客户端 *** 作系统:" +
RequestBrowserPlatform + "<br>" +
"//服务器ip:" +
RequestServerVariablesGet("Local_Addr")ToString() + "<br>" +
"//服务器名:" +
RequestServerVariablesGet("Server_Name")ToString() + "<br>";
string stringMAC = "";
string stringIP = "";
ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection MOC = MCGetInstances();
foreach (ManagementObject MO in MOC)
{
if ((bool)MO["IPEnabled"] == true)
{
stringMAC += MO["MACAddress"]ToString(); //获取网卡的地址
string[] IPAddresses = (string[])MO["IPAddress"]; //获取本地的IP地址
if (IPAddressesLength > 0)
stringIP = IPAddresses[0];
Label1Text += "<br>MAC:" + stringMAC + "/ IP:" + stringIP;
if (stringIP == "192168145")
Label1Text += "<br>I get you :192168145<br>";
}
}
//在页面上打印出客户端的网卡物理地址(MAC)
//ResponseWrite(thisGetMac(RequestUserHostAddressToString())+"<br>");
GetInfo();
}
}
//获取cpu序列号,硬盘ID,网卡MAC地址
private void GetInfo()
{
string cpuInfo = "";//cpu序列号
ManagementClass cimobject = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = cimobjectGetInstances();
foreach (ManagementObject mo in moc)
{
cpuInfo = moProperties["ProcessorId"]ValueToString();
Label1Text += "cpu序列号:" + cpuInfoToString();
}
//获取硬盘ID
String HDid;
ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc1 = cimobject1GetInstances();
foreach (ManagementObject mo in moc1)
{
HDid = (string)moProperties["Model"]Value;
Label1Text += "硬盘序列号:" + HDidToString();
}
}
//protected void Button1_Click(object sender, EventArgs e)
//{
// try
// {
// FileDelete(@"D:\htmlhtml");
// }
// catch (Exception e2)
// {
// ResponseWrite(e2Message);
// }
// ResponseWrite("Delete Successed!");
//}
//获取远程客户端的网卡物理地址(MAC)
public string GetMac(string IP) //para IP is the client's IP
{
string dirResults = "";
ProcessStartInfo psi = new ProcessStartInfo();
Process proc = new Process();
psiFileName = "nbtstat";
psiRedirectStandardInput = false;
psiRedirectStandardOutput = true;
psiArguments = "-A " + IP;
psiUseShellExecute = false;
proc = ProcessStart(psi);
dirResults = procStandardOutputReadToEnd();
procWaitForExit();
dirResults = dirResultsReplace("\r", "")Replace("\n", "")Replace("\t", "");
Regex reg = new Regex("Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(<key>(()))__MAC", RegexOptionsIgnoreCase | RegexOptionsCompiled);
Match mc = regMatch(dirResults + "__MAC");
if (mcSuccess)
{
return mcGroups["key"]Value;
}
else
{
reg = new Regex("Host not found", RegexOptionsIgnoreCase | RegexOptionsCompiled);
mc = regMatch(dirResults);
if (mcSuccess)
{
return "Host not found!";
}
else
{
return "";
}
}
}
要解析第二点中所提的问题,首先要搞清楚DHCP的实际的工作过程及原理,下面就对此做简单介绍:DHCP是一个基于广播的协议,它的 *** 作可以归结为四个阶段,这些阶段是IP租用请求、IP租用提供、IP租用选择、IP租用确认。
1、IP租用请求:在任何时候,客户计算机如果设置为自动获取IP地址,那么在它开机时,就会检查自己当前是否租用了一个IP地址,如果没有,它就向DCHP请求一个租用,由于该客户计算机并不知道DHCP服务器的地址,所以会用255255255255作为目标地址,源地址使用0000,在网络上广播一个DHCPDISCOVER消息,消息包含客户计算机的媒体访问控制(MAC)地址(网卡上内建的硬件地址)以及它的NetBIOS名字。
2、IP租用提供:当DHCP服务器接收到一个来自客户的IP租用请求时,它会根据自己的作用域地址池为该客户保留一个IP地址并且在网络上广播一个来实现,该消息包含客户的MAC地址、服务器所能提供的IP地址、子网掩码、租用期限,以及提供该租用的DHCP服务器本身的IP地址。
3、IP租用选择:如果子网还存在其它DHCP服务器,那么客户机在接受了某个DHCP服务器的DHCPOFFER消息后,它会广播一条包含提供租用的服务器的IP地址的DHCPREQUEST消息,在该子网中通告所有其它DHCP服务器它已经接受了一个地址的提供,其他DHCP服务器在接收到这条消息后,就会撤销为该客户提供的租用。然后把为该客户分配的租用地址返回到地址池中,该地址将可以重新作为一个有效地址提供给别的计算机使用。
4、IP租用确认: DHCP服务器接收到来自客户的DHCPREQUEST消息,它就开始配置过程的最后一个阶段,这个确认阶段由DHCP服务器发送一个DHCPACK包给客户,该包包括一个租用期限和客户所请求的所有其它配置信息,至此,完成TCP/IP配置。
① 简单的笨办法就是写个批处理文件,在你电脑上运行,将上述三个网段的地址挨个去 PING。假设批文件名为 AAAABAT,文件内容为:
PING 192168151
PING 192168152
PING 19216815253
PING 19216815254
PING 192168131
PING 192168132
PING 19216813253
PING 19216813254
PING 192168111
PING 192168112
PING 19216811253
PING 19216811254
你可用记事本软件编写,一个网段的 PING 命令编辑完后,第二个网段就可以拷贝修改后得到。
② 运行 AAAA,为了得到运行后的结果,你可将运行结果重定向到文本文件 BBBB 中,打开 BBBB 文件,可查到哪些 IP 地址可 PING 通。
AAAA > BBBB
不过你要保证所有电脑不阻止 PING 反馈信息。
③ 不过,我遇到过你同样问题,我采用的最准确的办法,还是到每台电脑上去检查,这是最保险的办法,其实也用不着花多少时间,你等待答案的时间,说不定全查完了。
局域网管理中经常遇到已知某个MAC地址,要查询其IP地址的情况,有如下几种方法:
方法一:用ARP -A 查询
这种方法只能查到与本机通讯过(20分钟内)的主机MAC地址和IP地址。可在远程主机所属网段中的任一台主机上运行此命令,这样可查出IP欺骗类病毒的主机。
方法二:用专用软件查,如nbtscan
命令方式是:nbtscan -r 网络号/掩码位,这种方法可查询某网段的所有IP与MAC对应关系,但装有防火墙的主机则禁止查询。
方法三: 如果所连交换机有网管功能,可用ARP SHOW 命令显示交换机的arp缓存信息,这种方式基本可查询所有的IP 与MAC地址,但只有网管才有这个权限。
方法四:用sniffer类的嗅探软件抓包分析,packet中一般都含用IP地址与MAC地址。
方法五:用solarwinds类软件中的MAC ADDRESS DISCOVERY查询,但这个工具好象不能跨网段查询。
DOS窗口,输入: arp -a,显示所有机器mac。
或者下个局域网软件,点击扫描。比如IP BOOK
FYI:
有时候,我们需要获得所在局域网中所有的主机的MAC地址,不巧,手中又恰恰没有合适的软件。难道我们就束手无策了么?
其实,使用一些DOS命令,完全可以胜任这个工作,而且,效果会比某些软件好的多。
下面介绍下我的思路:
还记得ARP命令么?,利用ARP缓存信息,就可以得到我想要的局域网机器的MAC地址了。呵呵,理了一下思路,动手 *** 作,效果非常好,就连一些试用版、破解版的MAC扫描工具扫不出的有些机器的信息ARP里都有!如何实施呢?
用Ping 命令,先Ping 一下局域网中的机器IP,因为我想在本地机器的ARP缓存信息里得到想要的MAC地址信息。只有Ping 过局域网中在线机器,本地机器的ARP缓存就会记录下Ping 过的机器的IP与MAC地址信息,也就是说,本地机器发出个数据包,目标机器会有一个应答,这个应答里含有IP地址和MAC地址的信息,这些个信息会晢存 在本地机器的ARP缓存里。在本地机器上,用ARP -a就可全部显示出来了。(防火墙或者过滤包的方法也无法禁止ARP的查看,远程计算机不返回Ping成功的消息但会告诉本地计算机该IP地址对应的 MAC地址。有些MAC扫描工具因对方防火墙的原因而无法得到对方的IP和Mac信息。)
有了这些思路,就差不多了。可我总不能一个一个的去Ping 啊,于是我就写个批处理,批量检测局域网中在线的机器。例如要查看1921680这个网段中有哪些地址在线。在桌面上点鼠标右键新建一个文本文件后输入如下代码:
FOR /L %%i IN (0,1,255) Do ping 1921680%%i -n 1
arp -a -> MACtxt
将该文件保存为bat文件,双击这个批处理文件将自动搜索网段中的所有IP,并且将发现出的ARP信息都保存到MACtxt文件中。
arp –a ->MACtxt 这行命令表示将ARP显示的结果保存到 MACtxt的文本文件中。
如果只是想Ping某一部分IP而不是所有该网段中的IP,可以将上面命令行中 IN(0,1,255) 中1,255是<指IP的范围>改写。
注意:批处理没有程序报错功能,所以,IP的范围应严格在1,255之间,防止机器执行批处理时发生意外^_^)。比如,我只想扫描192168010至1921680200之间的IP与MAC信息,可以这样写:
FOR /L %%i IN (0,10,200) Do ping 1921680%%i -n 1
arp -a -> MACtxt
提示:扫描过程中可以使用“ctrl+c”命令进行中断。
以上就是关于同一网段划分vlan后,做dhcp,实现每个vlan自动获取ip地址全部的内容,包括:同一网段划分vlan后,做dhcp,实现每个vlan自动获取ip地址、如何跨网段取MAC地址、简述在某一网段内,DHCP CLIENT使用DHCP自动获取IP地址的工作原理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)