Answers:
仅当两个DHCP客户端使用不同的MAC地址时才有可能。这意味着它们不能同时在具有单个MAC地址的同一物理网络接口上运行。
解决方案是Linux的虚拟MAC-VLAN网络接口。MAC-VLAN接口是由物理接口支持的虚拟网络接口,但是使用不同的MAC地址,该MAC地址是在创建MAC-VLAN设备时随机生成的。
使用物理接口创建MAC-VLAN接口后,就可以像使用物理接口一样使用它。在特定情况下,您可以在物理接口上运行一个DHCP客户端,在MAC-VLAN设备上运行另一个。然后,每个设备(物理设备和MAC-VLAN)都可以拥有自己的IP地址。
macvlan0
可以eth0
通过运行以下命令来创建新的MAC-VLAN设备
ip link add dev macvlan0 link eth0 type macvlan
可以通过运行将其删除
ip link delete dev macvlan0
使用我的网络配置软件NCD(http://code.google.com/p/badvpn/wiki/NCD),以下NCD程序将从eth0
(macvlan0
和macvlan1
)创建两个MAC-VLAN设备,并在每个设备上运行DHCP,并为其分配获得的IP地址。您可以轻松地进行其他操作,例如添加路由和DNS服务器。如果您有兴趣,请阅读NCD页面。
process lan {
# Set device.
var("eth0") dev;
# Wait for device to appear, set it up, and wait for cable to be plugged in.
net.backend.waitdevice(dev);
net.up(dev);
net.backend.waitlink(dev);
# Start DHCP's.
provide("lan-link");
}
process lan_dhcp1 {
# Wait for link.
depend("lan-link") linkdep;
# Choose virtual device name.
var("macvlan0") vdev;
# Create virtual MAC-VLAN device.
list("/sbin/ip", "link", "add", "dev", vdev, "link", linkdep.dev, "type", "macvlan") do;
list("/sbin/ip", "link", "delete", "dev", vdev) undo;
run(do, undo);
# Set virtual device up.
net.up(vdev);
# DHCP configuration on virtual device.
net.ipv4.dhcp(vdev) dhcp;
ip_in_network(dhcp.addr, "127.0.0.0", "8") test_local;
ifnot(test_local);
println(vdev, ": got address ", dhcp.addr);
# Assign address to virtual device.
net.ipv4.addr(vdev, dhcp.addr, dhcp.prefix);
}
# This differs from above only in interface name (macvlan1).
process lan_dhcp2 {
# Wait for link.
depend("lan-link") linkdep;
# Choose virtual device name.
var("macvlan1") vdev;
# Create virtual MAC-VLAN device.
list("/sbin/ip", "link", "add", "dev", vdev, "link", linkdep.dev, "type", "macvlan") do;
list("/sbin/ip", "link", "delete", "dev", vdev) undo;
run(do, undo);
# Set virtual device up.
net.up(vdev);
# DHCP configuration on virtual device.
net.ipv4.dhcp(vdev) dhcp;
ip_in_network(dhcp.addr, "127.0.0.0", "8") test_local;
ifnot(test_local);
println(vdev, ": got address ", dhcp.addr);
# Assign address to virtual device.
net.ipv4.addr(vdev, dhcp.addr, dhcp.prefix);
}
你会拥有macvlan0
和macvlan1
每一个都有自己的DHCP获得IP地址,eth0
这是上升,但没有一个IP地址。或者,您可以仅创建一个MAC-VLAN接口,并在eth0
其自身上运行一个DHCP实例。
我不确定,但是我相信,除非您拥有开源路由器,否则您将不得不使用静态IP来完成您想要的事情。IMO,除非您有充分的理由要执行自己想做的事情,否则我会坚持使用DHCP。从您的问题中我可以看到您想要的是什么,除非有人知道该怎么做,否则我会一直待在DHCP上,直到有人给出更好的答案。尽管如果您没有超过1-2个PC,并且网络上没有其他设备(打印机,媒体扩展器等),那么我不会使用静态IP作为IDK,如何或是否可以使用静态IP设置这些项目。如果您拥有一个开源路由器,也许您可以做您想做的事,也许可以使它做您想做的事,就像为您的计算机使用静态IP一样,使用mac地址作为识别它并设置其IP和网络的其余部分可以使用DHCP。因为我从没做过IDK,所以我只是抛出一些想法,所以很抱歉没有为您提供答案。尽管Bryan构成的链接看起来像DHCP和静态IP问题的好资源。另外,对于开源路由器,我相信Netgear和D-Link使它们更加可靠,但是IMO这两个品牌是我会选择的。我个人不喜欢Linksys,因为它们是通过小说购买的(您会认为它们会更好,但不是IMO。我个人更喜欢D-link,因为它们是我发现的最可定制的路由器。)另外,对于开源路由器,我相信Netgear和D-Link使它们更加可靠,但是IMO这两个品牌是我会选择的。我个人不喜欢Linksys,因为它们是通过小说购买的(您会认为它们会更好,但不是IMO。我个人更喜欢D-link,因为它们是我发现的最可定制的路由器。)另外,对于开源路由器,我相信Netgear和D-Link使它们更加可靠,但是IMO这两个品牌是我会选择的。我个人不喜欢Linksys,因为它们是通过小说购买的(您会认为它们会更好,但不是IMO。我个人更喜欢D-link,因为它们是我发现的最可定制的路由器。)
另外,请查看此链接,如果支持,您也许可以使用路由器做更多的事情