dnsmasq : 2 개의 MAC 주소를 동일한 IP 주소에 매핑


17

서로 다른 2 개의 MAC 주소를 동일한 IP 주소에 매핑 할 수 있습니까?

백업을 위해서는 서버에서 휴대용 장치로 다시 연결해야하며 무선 및 유선 인터페이스에 동일한 IP를 갖고 싶습니다.

openwrt 웹 인터페이스는 동일한 IP 주소를 가진 여러 DHCP 항목을 허용하지 않지만 해결 방법이 있습니까?

23에 추가 된 설명은 다음과 같습니다.

휴대용의 네트워크 인터페이스 중 하나만 주어진 시간에 네트워크에 연결되어 있음을 분명히 했으므로 스위치가 혼동해서는 안됩니다. 처음에는 동일한 DNS 이름으로 인터페이스에 2 개의 고유 한 IP 주소가 할당되었지만 제대로 작동하지 않았습니다 (잘못된 IP를 얻었을 때 시간 초과). 그러나 백업 스크립트에 하드 코딩되어 있으므로 동일한 이름을 사용하고 싶습니다.

혼란을 드려 죄송합니다.


나는 당신이 이것을 시도하면 shenanigans가 일어날 것이라고 확신합니다.
Holocryptic

클라이언트 및 서버의 OS도 여기에
생식

답변:


29

(무작위 반 의견 수렴 된 의견 : 질문에 대한이 구조적이지 않고 명백한 부정확 한 답변과 의견이 많지는 않습니다.)

다른 사람들과 달리, 나는 귀하의 요청이 실제로 매우 기초적 이며 IIRC 버전 2.46 이후 dnsmasq 에서 지원 되었다고 주장합니다 . 이것이 내가 dd-wrt에서 전환 한 유일한 이유였습니다 . 약 1 년 동안 OpenWRT를 실행 한 후 실제로 전환해야 할 더 많은 이유가 있다는 것을 알고 있습니다.

Backfire 10.04-rc4를 실행 중입니다 .

May 23 17:45:16 gateway dnsmasq[1925]: started, version 2.55 cachesize 150

내 구성 :

$ cat /etc/config/dhcp

config 'dnsmasq'
    option 'domainneeded' '1'
    option 'boguspriv' '1'
    option 'localise_queries' '1'
    option 'rebind_protection' '1'
    option 'rebind_localhost' '1'
    option 'expandhosts' '1'
    option 'authoritative' '1'
    option 'readethers' '1'
    option 'leasefile' '/tmp/dhcp.leases'
    option 'resolvfile' '/tmp/resolv.conf.auto'
    option 'enable_tftp' '1'
    option 'domain' 'domain.net'
    option 'local' '/domain.net/'

config 'dhcp' 'lan'
    option 'interface' 'lan'
    option 'start' '100'
    option 'limit' '150'
    option 'leasetime' 'infinite'

config 'dhcp' 'wan'
    option 'interface' 'wan'
    option 'ignore' '1'
    option 'dynamicdhcp' '0'

config 'dhcp'
    option 'interface' 'dmz'
    option 'start' '100'
    option 'limit' '150'
    option 'leasetime' '12h'

config 'host'
    option 'name' 'travelmate'
    option 'mac' '00:11:22:33:44:55 aa:bb:cc:dd:ee:ff'
    option 'ip' '192.168.1.111'

config 'host'
    option 'name' 'mobilitymac'
    option 'mac' '99:88:77:66:55:44 ff:ee:dd:cc:bb:aa'
    option 'ip' '192.168.1.104'

스위치로 너무 오래 걸리지 않으면이 설정이 제공하는 완벽한 전환을 즐기십시오.


4
이 답변은 매우 자세한 방식으로 내 질문에 답변하지만 아직 업장이 없기 때문에이 답변을 찬성합니다.
sleepyMonad

luci (웹 인터페이스)가 실제로이 형식을 지원하는 것처럼 추가 브라우니 포인트.
sleepyMonad

1
어젯밤에 eth0을 연결할 때 wlan0이 여전히 연결되어 있는지 알지 못하는 상황이 발생했습니다 (brcm80211이 작은 비트 일 수 있음). dnsmasq는 이와 관련하여 특별한 문제가 없었으며 eth0에 새로운 IP를 할당했습니다. 나쁜 점은 라우터로 가서 dnsmasq를 중지하고 /tmp/dhcp.leases를 편집 / kill하고 dnsmasq를 다시 시작하여 원하는 작동 모드로 돌아 가야한다는 것입니다.
lkraav

2
내가 생각하는 것을 중요하게 생각하기 위해 하나의 항목 (이 파일 또는 luci 인터페이스)에 여러 MAC 주소를 포함시킬 수 있습니다. 따라서와 함께 ab:cd:ef:01:02:03다른 라인을 만드는 대신 04:05:06:07:08:09하나의 공백으로 두 항목을 구분하여 하나의 항목을 작성하십시오 ab:cd:ef:01:02:03 04:05:06:07:08:09.
teeks99

6

나는 약간의 연구를했다.

내가 배운 첫 번째는 MAC 주소 이외의 기준에 따라 DHCP 임대를 할당 할 수 있다는 것입니다.

dhcp FAQ에서 :

고객 ID 란 무엇입니까?

DHCP 프로토콜의 목적으로 클라이언트 ID라고하는 것은 클라이언트 컴퓨터를 식별하기 위해 프로토콜에서 사용하는 모든 것입니다. 기본적으로 DHCP 구현은 일반적으로이 목적으로 클라이언트의 MAC 주소를 사용하지만 DHCP 프로토콜은 다른 옵션을 허용합니다. 일부 DHCP 구현에는 원하는 클라이언트 ID를 지정하는 설정 옵션이 있습니다. MAC 주소의 한 가지 대안은 단순히 선택한 문자열입니다. 어쨌든 DHCP가 작동하려면 다른 클라이언트가 선택한 클라이언트 ID를 사용하고 있지 않아야하며 DHCP 서버가이를 수락해야합니다.

그런 다음 openWRT의 luci 웹 인터페이스에서 지원되지는 않지만 dnsmasq 자체는 client_id 및 여러 MAC 주소를 지원합니다 (일부 경고가 있음).

dnsmasq 매뉴얼 페이지에서 :

-G, --dhcp-host = [hwaddr] [, id : client_id | *] [, set : tag] [, ipaddr] [, hostname] [, lease_time] [, ignore] DHCP 서버의 호스트 매개 변수별로 지정 . 이를 통해 특정 하드웨어 주소를 가진 머신에 항상 동일한 호스트 이름, IP 주소 및 임대 시간이 할당 될 수 있습니다. 이와 같이 지정된 호스트 이름은 시스템의 DHCP 클라이언트가 제공 한 호스트 이름보다 우선합니다. 또한 하드웨어 주소를 생략하고 호스트 이름을 포함시킬 수 있습니다.이 경우 IP 주소 및 임대 시간은 해당 이름을 주장하는 모든 컴퓨터에 적용됩니다. 예를 들어 --dhcp-host = 00 : 20 : e0 : 3b : 13 : af, wap, infinite는 dnsmasq에 하드웨어 주소 00 : 20 : e0 : 3b : 13 : af 이름을 wap으로 지정하고 무한대를 부여하도록 dnsmasq에 지시합니다. DHCP 임대. --dhcp-host = lap, 192.168.0.199는 dnsmasq에게 항상 시스템 랩에 IP 주소 192.168.0.199를 할당하도록 지시합니다.

(...)

접두사 'id :'로 하드웨어 주소 대신 클라이언트 식별자를 사용하여 호스트를 식별 할 수 있습니다. 따라서 --dhcp-host = id : 01 : 02 : 03 : 04, .....는 클라이언트 식별자가 01 : 02 : 03 : 04 인 호스트를 나타냅니다. 클라이언트 ID를 다음과 같이 텍스트로 지정할 수도 있습니다. --dhcp-host = id : clientidastext, .....

(...)

특별한 경우, 둘 이상의 하드웨어 주소를 포함 할 수 있습니다. 예 : --dhcp-host = 11 : 22 : 33 : 44 : 55 : 66,12 : 34 : 56 : 78 : 90 : 12,192.168.0.2 이렇게하면 IP 주소가 여러 하드웨어 주소와 연결되고 dnsmasq 권한이 부여됩니다. 다른 하드웨어가 임대를 요청할 때 하드웨어 주소 중 하나에 DHCP 임대를 포기합니다. 이는 위험한 일임을 명심하십시오. 하드웨어 주소 중 하나만 활성화되어 있고 dnsmasq가이를 강제 할 수있는 방법이없는 경우에만 안정적으로 작동합니다. 예를 들어, 유선 및 무선 인터페이스가 모두있는 랩톱에 안정적인 IP 주소를 할당하는 것이 유용합니다.

멀티 맥 솔루션을 선택했습니다 (클라이언트 측에서 클라이언트 ID를 지정하는 방법을 찾지 않으려 고했기 때문에 각 개별 클라이언트에 대해 수행해야하며 멀티 맥 대안은 다음과 같습니다. 집안의 모든 휴대용 기기를위한 하나의 솔루션.)

나는 luci 인터페이스를 피하고 /etc/dnsmasq.conf에 다음 줄을 직접 추가했습니다 :

dhcp-hostsfile = / etc / dnsmasq-dhcphosts.conf

/etc/dnsmasq-dhcphosts.conf에는 다음 형식의 행이 포함되어 있습니다.

mac1, mac2, ip

(이 구성은 다음 업데이트에서 덮어 쓰지 않도록 별도의 파일로 유지합니다.)

잘 작동합니다.


1

목표 : 노트북의 호스트 이름이 항상 노트북의 (활성 IP 주소 / 인터페이스)를 가리 키도록 하시겠습니까? dnsmasq의 결합 된 DNS 및 DHCP 서비스가 그렇게 할 것이라고 생각했을 것입니다. 즉, 클라이언트가 DHCPDISCOVER / DHCPREQUEST를 수행 할 때 호스트 이름을보고하고 dnsmasq는 호스트 이름을 할당 된 IP 주소와 연관시킵니다. 그것은 내 경험 이었지만 하나의 네트워크 i / f로 연결을 시도한 다음 연결을 끊고 (명시 적 릴리스하지 않고) 다른 네트워크와 다시 연결하려고 시도하지 않았다는 것을 인정해야합니다.

호스트 이름이 "laptop"이라고 가정하면 한 인터페이스에서 다른 인터페이스로 전환 한 후 OpenWRT 장치에 "laptop"을 쿼리하면 어떻게됩니까?


1

왜 DHCP를 사용합니까?

두 인터페이스 모두에서 고정 IP 주소를 수동으로 구성한 다음 원하는 것을 사용할 수 있습니다 (물론 다른 하나는 연결 해제 한 상태로 두십시오).


글쎄, 이것은 가장 쉬운 방법이기 때문에 내가 연결하는 모든 네트워크에 맞는 하나의 구성입니다.
sleepyMonad

0

스위치가 이것을 지원할 수 있다면 매우 놀랍습니다. 두 네트워크 인터페이스에 동일한 MAC 주소를 부여하면 더 운이 좋을 것입니다.

나는 Holocryptic에 동의합니다. 여기는 용입니다.


동일한 MAC 사용을 제안 해 주셔서 감사합니다. 어떻게 해야할지 모르겠습니다. 아마도 BIOS에서 구성 할 수있는 것입니다.
sleepyMonad

일반적으로 OS에서 설정하는 것이 가장 쉽고, Windows에서는 네트워크 인터페이스의 속성 (수동으로 설정된 MAC 주소)에 있습니다.
happyhairydude

0

아니요, 불가능합니다. 그러나 대부분의 NIC를 사용하면 MAC을 관리적으로 설정할 수 있으며 두 NIC를 동일한 MAC으로 설정할 수 있습니다.

대부분의 * nix boxen에서 일반적으로이 작업을 수행 한 다음 TCP 세션 연결을 끊지 않고 유선 연결을 핫 플러그 ​​할 수 있도록 장애 조치 LAGG 인터페이스를 유선으로 기본 설정으로 둘 다 설정할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.