dnsmasq: ánh xạ 2 địa chỉ MAC vào cùng một địa chỉ IP


17

Có thể ánh xạ 2 địa chỉ MAC khác nhau vào cùng một địa chỉ IP không?

Để sao lưu, tôi cần kết nối lại từ máy chủ với thiết bị di động và tôi muốn có cùng một IP cho cả giao diện không dây và có dây.

Giao diện web openwrt không chấp nhận nhiều mục dhcp có cùng địa chỉ IP, nhưng có lẽ có một cách giải quyết?

Làm rõ thêm vào ngày 23 có thể :

Tôi nên nói rõ rằng chỉ một trong các giao diện mạng của thiết bị di động được kết nối với mạng tại bất kỳ thời điểm nào (do đó các công tắc không nên bị nhầm lẫn). Ban đầu tôi có 2 địa chỉ IP riêng biệt được gán cho các giao diện, có cùng tên DNS, nhưng điều này không hoạt động tốt (hết thời gian khi tôi nhận được IP sai). Tuy nhiên, tôi muốn sử dụng cùng một tên cho cả hai, vì nó được mã hóa cứng trong tập lệnh sao lưu của tôi.

Xin lỗi vì sự nhầm lẫn.


Tôi khá chắc chắn rằng shenanigans sẽ xảy ra nếu bạn thử điều này.
Holocryptic

Hệ điều hành trên máy khách (và có thể cả máy chủ) cũng có thể bị nhiễm vi trùng ở đây
Norky

Câu trả lời:


29

(bình luận nửa ý kiến ​​ngẫu nhiên: rất hiếm khi thấy số lượng lớn các câu trả lời và nhận xét không chính xác và không chính xác cho một câu hỏi)

Ngược lại với những người khác ở đây, tôi khẳng định rằng yêu cầu của bạn thực sự khá cơ bản và đã được hỗ trợ trong dnsmasq kể từ phiên bản 2.46 , IIRC. Đây là lý do duy nhất tôi chuyển từ dd-wrt . Sau khoảng một năm chạy OpenWRT, bây giờ tôi biết thực sự có nhiều lý do hơn để chuyển đổi, nhưng đó là vấn đề bên cạnh.

Tôi đang chạy Backfire 10.04-RC4 :

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

Cấu hình của tôi:

$ 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'

Tận hưởng quá trình chuyển đổi liền mạch mà thiết lập này cung cấp, tất cả các phiên hiện có vẫn tồn tại nếu bạn không mất quá nhiều thời gian với công tắc.


4
Sẽ đưa ra câu trả lời này, bởi vì nó trả lời câu hỏi của tôi một cách rất chi tiết, nhưng chưa có nghiệp.
buồn ngủMonad

Và thêm điểm brownie, vì luci (giao diện web) dường như thực sự hỗ trợ định dạng này.
buồn ngủMonad

1
Đêm qua tôi tình cờ có một tình huống mà tôi không biết wlan0 vẫn được kết nối (dàn dựng brcm80211 có thể là một bit b0rked nhỏ) khi kết nối eth0. dnsmasq không có vấn đề cụ thể với vấn đề này, nó chỉ gán một IP mới cho eth0. Điều tồi tệ là sau đó bạn phải vào bộ định tuyến, dừng dnsmasq và chỉnh sửa / kill /tmp/dhcp.lease, khởi động lại dnsmasq để mọi thứ trở về chế độ hoạt động mong muốn.
lkraav

2
Để chắt lọc những gì tôi nghĩ là phần quan trọng của điều đó, bạn có thể bao gồm nhiều địa chỉ MAC trong một mục nhập (trong tệp này hoặc trong giao diện luci). Vì vậy, thay vì làm một phù hợp với ab:cd:ef:01:02:03và khác với 04:05:06:07:08:09, chỉ cần thực hiện một bài dự thi với một không gian đơn lẻ tách hai, ví dụ ab:cd:ef:01:02:03 04:05:06:07:08:09.
teeks99

6

Tôi đã làm một chút nghiên cứu.

Điều đầu tiên tôi học được là có thể gán DHCP thuê dựa trên các tiêu chí khác với địa chỉ MAC.

Từ câu hỏi thường gặp về dhcp :

ID khách hàng là gì?

Cái được gọi là ID khách cho mục đích của giao thức DHCP là bất cứ thứ gì được sử dụng bởi giao thức để xác định máy khách. Theo mặc định, việc triển khai DHCP thường sử dụng địa chỉ MAC của máy khách cho mục đích này, nhưng giao thức DHCP cho phép các tùy chọn khác. Một số triển khai DHCP có tùy chọn thiết lập để chỉ định ID khách bạn muốn. Một thay thế cho địa chỉ MAC chỉ đơn giản là một chuỗi ký tự bạn chọn. Trong mọi trường hợp, để DHCP hoạt động, bạn phải chắc chắn rằng không có ứng dụng khách nào khác đang sử dụng ID khách mà bạn chọn và bạn phải chắc chắn rằng máy chủ DHCP sẽ chấp nhận nó.

Sau đó, mặc dù dường như không được hỗ trợ bởi giao diện web luci trên openWRT, bản thân dnsmasq hỗ trợ client_id và nhiều địa chỉ MAC (với một số cảnh báo).

Từ trang người đàn ông dnsmasq :

-G, --dhcp-host = [hwaddr] [, id: client_id | *] [, set: tag] [, ipaddr] [, tên máy chủ] [, thuê_time] [, bỏ qua] Chỉ định mỗi tham số máy chủ cho máy chủ DHCP . Điều này cho phép một máy có địa chỉ phần cứng cụ thể luôn được phân bổ cùng tên máy chủ, địa chỉ IP và thời gian thuê. Một tên máy chủ được chỉ định như thế này sẽ ghi đè bất kỳ máy khách DHCP nào được cung cấp trên máy. Nó cũng được phép sử dụng địa chỉ phần cứng và bao gồm tên máy chủ, trong trường hợp đó, địa chỉ IP và thời gian thuê sẽ áp dụng cho bất kỳ máy nào yêu cầu tên đó. Ví dụ: --dhcp-host = 00: 20: e0: 3b: 13: af, wap, infinite bảo dnsmasq cung cấp cho máy có địa chỉ phần cứng 00: 20: e0: 3b: 13: af tên wap và vô hạn Cho thuê DHCP. --dhcp-host = lap, 192.168.0.199 yêu cầu dnsmasq luôn phân bổ máy lap địa chỉ IP 192.168.0.199.

(...)

Nó được phép sử dụng mã định danh máy khách thay vì địa chỉ phần cứng để xác định máy chủ bằng cách thêm tiền tố với 'id:'. Do đó: --dhcp-host = id: 01: 02: 03: 04, ..... đề cập đến máy chủ lưu trữ với số nhận dạng khách hàng 01: 02: 03: 04. Nó cũng được phép chỉ định ID khách dưới dạng văn bản, như thế này: --dhcp-host = id: clientidastext, .....

(...)

Trong trường hợp đặc biệt, có thể bao gồm nhiều hơn một địa chỉ phần cứng. ví dụ: --dhcp-host = 11: 22: 33: 44: 55: 66,12: 34: 56: 78: 90: 12.192.168.0.2 Điều này cho phép một địa chỉ IP được liên kết với nhiều địa chỉ phần cứng và cho phép dnsmasq từ bỏ hợp đồng thuê DHCP đến một trong những địa chỉ phần cứng khi người khác yêu cầu thuê. Coi chừng đây là một điều nguy hiểm, nó sẽ chỉ hoạt động đáng tin cậy nếu chỉ có một trong các địa chỉ phần cứng hoạt động bất cứ lúc nào và không có cách nào để dnsmasq thực thi điều này. Chẳng hạn, việc phân bổ địa chỉ IP ổn định cho máy tính xách tay có cả giao diện có dây và không dây là rất hữu ích.

Tôi đã chọn giải pháp đa mac (vì tôi đã không cố gắng tìm hiểu làm thế nào tôi có thể chỉ định id khách hàng ở phía máy khách, đây là điều phải được thực hiện cho từng khách hàng riêng biệt và thay thế đa mac là một giải pháp cho tất cả các thiết bị di động trong nhà.)

Tôi phá vỡ giao diện luci và thêm trực tiếp vào /etc/dnsmasq.conf dòng sau:

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

và /etc/dnsmasq-dhcphosts.conf chứa các dòng có định dạng sau:

mac1, mac2, ip

(Tôi giữ cấu hình này trong một tệp riêng biệt để tránh bị ghi đè bởi bản cập nhật tiếp theo.)

Hoạt động tốt.


1

Mục tiêu của bạn: để máy tính xách tay không đổi tên máy chủ luôn luôn trỏ đến (địa chỉ IP hoạt động / giao diện của máy tính xách tay)? Tôi đã nghĩ rằng dịch vụ DNS và DHCP kết hợp của dnsmasq sẽ làm điều đó, tức là khi khách hàng thực hiện DHCPDISCOVER / DHCPREQUEST, nó báo cáo tên máy chủ của mình và dnsmasq liên kết tên máy chủ với bất kỳ địa chỉ IP nào được gán. Đó là kinh nghiệm của tôi, tuy nhiên tôi phải thừa nhận rằng tôi đã không thử kết nối với một mạng i / f, sau đó ngắt kết nối (không thực hiện một bản phát hành rõ ràng) và kết nối lại với một mạng khác.

Giả sử tên máy chủ của "máy tính xách tay", điều gì xảy ra khi bạn truy vấn thiết bị OpenWRT cho "máy tính xách tay", sau khi đã chuyển từ giao diện này sang giao diện khác?


1

Tại sao nên sử dụng DHCP?

Theo cách thủ công, bạn có thể định cấu hình một địa chỉ IP tĩnh trên cả hai giao diện, sau đó sử dụng địa chỉ bạn thích (trong khi tất cả các địa chỉ khác bị ngắt kết nối).


Chà, bởi vì đây là phương pháp đơn giản nhất, một cấu hình phù hợp với tất cả các mạng mà tôi kết nối (hoặc ít nhất là tôi hy vọng).
buồn ngủMonad

0

Tôi sẽ rất ngạc nhiên nếu công tắc của bạn có thể hỗ trợ này. Bạn có thể gặp nhiều may mắn hơn khi cung cấp cho cả hai giao diện mạng cùng một địa chỉ MAC.

Nói vậy, tôi chắc chắn đồng ý với Holocryptic, đây là những con rồng.


cảm ơn vì đã gợi ý sử dụng cùng MAC; mặc dù tôi không chắc chắn về cách làm điều đó Có lẽ đó là thứ tôi có thể cấu hình từ BIOS ...
buồn ngủMonad

Thông thường, dễ nhất là chỉ cài đặt nó trong HĐH, trên các cửa sổ, thuộc tính của giao diện mạng (đặt địa chỉ MAC theo cách thủ công).
happyhairydude

0

Không, nó không thể. Nhưng hầu hết các NIC cho phép bạn thiết lập MAC một cách trực tiếp và bạn có thể đặt cả hai NIC thành cùng một MAC.

Trên hầu hết * nix boxen, bạn thường có thể thực hiện việc này, sau đó thiết lập giao diện LAGG chuyển đổi dự phòng sang cả hai (với ưu tiên cho dây) để cho phép bạn cắm nóng kết nối có dây mà không ngắt kết nối các phiên TCP.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.