답변:
두 DHCP 클라이언트가 다른 MAC 주소를 사용하는 경우에만 가능합니다. 즉, 단일 MAC 주소를 가진 동일한 물리적 네트워크 인터페이스에서 둘 다 실행할 수 없습니다.
해결책은 Linux의 가상 MAC-VLAN 네트워크 인터페이스입니다. MAC-VLAN 인터페이스는 물리적 인터페이스가 지원하지만 다른 MAC 주소를 사용하는 가상 네트워크 인터페이스이며 MAC-VLAN 장치를 만들 때 임의로 생성됩니다.
물리적 인터페이스를 사용하여 MAC-VLAN 인터페이스를 생성하면 물리적 인터페이스와 같은 방식으로 사용합니다. 특별한 경우 물리적 인터페이스에서 하나의 DHCP 클라이언트를 실행하고 다른 하나는 MAC-VLAN 장치에서 실행할 수 있습니다. 그런 다음 각 장치 (실제 및 MAC-VLAN)는 고유 한 IP 주소를 가질 수 있습니다.
새로운 MAC-VLAN 장치 macvlan0
에서 생성 될 수있는 eth0
실행하여
ip link add dev macvlan0 link eth0 type macvlan
다음을 실행하여 삭제할 수 있습니다
ip link delete dev macvlan0
네트워크 구성 소프트웨어 ( http://code.google.com/p/badvpn/wiki/NCD ) 인 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 인터페이스 만 만들고 하나의 DHCP 인스턴스를 eth0
자체적으로 실행할 수 있습니다.
컴퓨터에 고정 또는 DHCP 할당 IP 주소를 사용하는 것이 좋습니다.
여기에 좋은 튜토리얼이 있습니다 .
여기에는 많은 세부 정보가 포함되어 있으며 DHCP 할당 주소 대신 고정을 사용하는 경우 (예 : DNS 서버 및 게이트웨이에 연결하는 방법) 발생할 수있는 문제를 피할 수 있습니다.
확실하지는 않지만 오픈 소스 라우터가 없으면 정적 IP를 사용하여 원하는 작업을 수행해야합니다. 당신이 원하는 것을 왜하고 싶은지에 대한 충분한 이유가 없다면 IMO는 단지 witrh DHCP를 고수 할 것입니다. 귀하의 질문에서 나는 당신이 원하는 것을 보았습니다. 누군가가 그것을하는 방법을 모른다면 누군가가 더 나은 답변을 줄 때까지 기다렸다가 DHCP를 유지합니다. 1-2 개 이상의 PC를 가지고 있지 않고 네트워크 (프린터 미디어 익스텐더 등)에 아무것도 없으면 정적 IP를 IDK로 사용하지 않고 정적 IP로 이러한 항목을 설정할 수 있는지 여부를 결정합니다. 어쩌면 오픈 소스 라우터를 사용하면 원하는 것을 할 수 있고 Mac 주소를 사용하여 IP를 설정하고 IP를 설정하는 방법으로 고정 IP를 사용하는 것처럼 원하는 작업을 수행 할 수 있습니다 나머지 네트워크는 DHCP를 사용할 수 있습니다. 내가 얇게 한 적이없는 IDK 난 그냥 아이디어를 버리고 그래서 당신을위한 답변이없는 죄송합니다. Bryan이 제기 한 링크는 DHCP 및 정적 IP 문제에 대한 유용한 리소스처럼 보입니다. 또한 오픈 소스 라우터의 경우 Netgear와 D-Link가 더 확실하다고 생각하지만 IMO는이 두 브랜드가 내가 선택하는 브랜드입니다. 나는 소설로 구입 한 이후 개인적으로 Linksys를 좋아하지 않는다. 또한 오픈 소스 라우터의 경우 Netgear와 D-Link가 더 확실하다고 생각하지만 IMO는이 두 브랜드가 내가 선택하는 브랜드입니다. 나는 소설로 구입 한 이후 개인적으로 Linksys를 좋아하지 않는다. 또한 오픈 소스 라우터의 경우 Netgear와 D-Link가 더 확실하다고 생각하지만 IMO는이 두 브랜드가 내가 선택하는 브랜드입니다. 나는 소설로 구입 한 이후 개인적으로 Linksys를 좋아하지 않는다.
또한이 링크를 확인하면 라우터가 지원되는 경우 더 많은 작업을 수행 할 수 있습니다