dnsmasq: memetakan 2 alamat MAC ke alamat IP yang sama

17

Apakah mungkin memetakan 2 alamat MAC yang berbeda ke alamat IP yang sama?

Untuk cadangan saya, saya perlu menghubungkan kembali dari server ke portable, dan saya ingin memiliki IP yang sama untuk antarmuka nirkabel dan kabel.

Antarmuka web openwrt tidak menerima beberapa entri dhcp dengan alamat IP yang sama, tetapi mungkin ada solusinya?

Klarifikasi ditambahkan pada 23 Mei :

Saya seharusnya menjelaskan bahwa hanya satu dari antarmuka jaringan portabel yang terhubung ke jaringan pada waktu tertentu (karenanya switch tidak boleh bingung). Awalnya saya memiliki 2 alamat IP berbeda yang ditugaskan untuk antarmuka, dengan nama DNS yang sama, tetapi ini tidak berfungsi dengan baik (batas waktu ketika saya mendapatkan IP yang salah). Namun saya ingin menggunakan nama yang sama untuk keduanya, karena itu kode keras dalam skrip cadangan saya.

Maaf bila membingungkan.

sleepyMonad
sumber
Saya yakin shenanigans akan terjadi jika Anda mencoba ini.
Holocryptic
OS pada klien (dan mungkin server) mungkin juga germaine di sini
Norky

Jawaban:

29

(komentar semi-pendapat acak: jarang melihat jumlah yang tinggi dari jawaban dan komentar yang tidak akurat dan tidak akurat untuk suatu pertanyaan)

Berbeda dengan yang lain di sini, saya mengklaim bahwa permintaan Anda sebenarnya cukup mendasar dan telah didukung di dnsmasq sejak versi 2.46 , IIRC. Ini adalah satu-satunya alasan saya beralih dari dd-wrt . Setelah sekitar satu tahun menjalankan OpenWRT, saya sekarang tahu sebenarnya ada banyak alasan untuk beralih, tapi itu intinya.

Saya menjalankan Backfire 10.04-rc4 :

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

Konfigurasi saya:

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

Nikmati transisi tanpa batas yang disediakan oleh pengaturan ini, semua sesi yang ada tetap hidup jika Anda tidak butuh waktu terlalu lama dengan sakelar.

lkraav
sumber
4
Akan meningkatkan jawaban ini, karena menjawab pertanyaan saya dengan sangat rinci, tetapi belum memiliki karma.
sleepyMonad
Dan poin brownies tambahan, karena luci (antarmuka web) tampaknya benar-benar mendukung format ini.
sleepyMonad
1
Tadi malam saya kebetulan memiliki situasi di mana saya tidak tahu wlan0 masih terhubung (pementasan brcm80211 mungkin sedikit b0rked) ketika menghubungkan eth0. dnsmasq tidak memiliki masalah khusus dengan ini, ia hanya menetapkan IP baru untuk eth0. Yang buruk adalah Anda kemudian harus masuk ke router, menghentikan dnsmasq dan mengedit / membunuh /tmp/dhcp.leases, memulai kembali dnsmasq untuk hal-hal untuk kembali ke mode operasional yang diinginkan.
lkraav
2
Untuk menyaring apa yang saya pikir adalah bagian penting dari itu, Anda dapat memasukkan beberapa alamat MAC dalam satu entri (dalam file ini atau dalam antarmuka luci). Jadi alih-alih membuat garis dengan ab:cd:ef:01:02:03dan yang lain dengan 04:05:06:07:08:09, cukup buat satu entri dengan satu spasi yang memisahkan keduanya, mis ab:cd:ef:01:02:03 04:05:06:07:08:09.
teeks99
6

Saya melakukan sedikit riset.

Hal pertama yang saya pelajari adalah bahwa dimungkinkan untuk menetapkan penyewaan DHCP berdasarkan kriteria selain alamat MAC.

Dari FAQ dhcp :

Apa itu ID Klien?

Apa yang disebut ID Klien untuk keperluan protokol DHCP adalah apa pun yang digunakan oleh protokol untuk mengidentifikasi komputer klien. Secara default, implementasi DHCP biasanya menggunakan alamat MAC klien untuk tujuan ini, tetapi protokol DHCP memungkinkan opsi lain. Beberapa implementasi DHCP memiliki opsi pengaturan untuk menentukan ID klien yang Anda inginkan. Salah satu alternatif untuk alamat MAC hanyalah string karakter pilihan Anda. Bagaimanapun, agar DHCP berfungsi, Anda harus yakin bahwa tidak ada klien lain yang menggunakan ID klien yang Anda pilih, dan Anda harus yakin server DHCP akan menerimanya.

Kemudian, meskipun tampaknya tidak didukung oleh antarmuka web luci di openWRT, dnsmasq sendiri mendukung client_id, dan beberapa alamat MAC (dengan beberapa peringatan).

Dari halaman manual dnsmasq :

-G, --dhcp-host = [hwaddr] [, id: client_id | *] [, atur: tag] [, ipaddr] [, nama host] [, rent_time] [, abaikan] Tentukan per parameter host untuk server DHCP . Hal ini memungkinkan mesin dengan alamat perangkat keras tertentu untuk selalu dialokasikan nama host, alamat IP, dan waktu sewa yang sama. Nama host yang ditentukan seperti ini mengabaikan semua yang disediakan oleh klien DHCP pada mesin. Juga diperbolehkan untuk meninggalkan alamat perangkat keras dan memasukkan nama host, dalam hal ini alamat IP dan waktu sewa akan berlaku untuk mesin apa pun yang mengklaim nama itu. Misalnya --dhcp-host = 00: 20: e0: 3b: 13: af, wap, infinite memberitahu dnsmasq untuk memberikan mesin dengan alamat perangkat keras 00: 20: e0: 3b: 13: af nama wap, dan infinite Sewa DHCP. --dhcp-host = lap, 192.168.0.199 memberitahu dnsmasq untuk selalu mengalokasikan putaran mesin pada alamat IP 192.168.0.199.

(...)

Diperbolehkan menggunakan pengidentifikasi klien daripada alamat perangkat keras untuk mengidentifikasi host dengan mengawali dengan 'id:'. Dengan demikian: --dhcp-host = id: 01: 02: 03: 04, ..... mengacu pada host dengan pengidentifikasi klien 01: 02: 03: 04. Anda juga dapat menentukan ID klien sebagai teks, seperti ini: --dhcp-host = id: clientidastext, .....

(...)

Sebagai kasus khusus, dimungkinkan untuk memasukkan lebih dari satu alamat perangkat keras. misalnya: --dhcp-host = 11: 22: 33: 44: 55: 66,12: 34: 56: 78: 90: 12,192.168.0.2 Ini memungkinkan alamat IP untuk dikaitkan dengan beberapa alamat perangkat keras, dan memberikan izin dnsmasq untuk meninggalkan penyewaan DHCP ke salah satu alamat perangkat keras ketika yang lain meminta sewa. Berhati-hatilah karena ini adalah hal yang berbahaya untuk dilakukan, itu hanya akan bekerja dengan andal jika hanya satu dari alamat perangkat keras yang aktif setiap saat dan tidak ada cara bagi dnsmasq untuk menegakkan ini. Misalnya, berguna untuk mengalokasikan alamat IP yang stabil ke laptop yang memiliki antarmuka kabel dan nirkabel.

Saya memilih solusi multi-mac (karena saya tidak mencoba mencari tahu bagaimana saya bisa menentukan id klien di sisi klien, yang merupakan sesuatu yang harus dilakukan untuk setiap klien yang terpisah, dan alternatif multi-mac adalah satu solusi untuk semua portabel di rumah.)

Saya menghindari antarmuka luci, dan menambahkan langsung ke /etc/dnsmasq.conf baris berikut:

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

dan /etc/dnsmasq-dhcphosts.conf berisi baris dengan format berikut:

mac1, mac2, ip

(Saya menyimpan konfigurasi ini dalam file terpisah untuk mencegah agar tidak ditimpa oleh pembaruan berikutnya.)

Bekerja dengan baik.

sleepyMonad
sumber
1

Tujuan Anda: memiliki laptop-hostname konstan yang selalu mengarah ke (alamat IP / antarmuka aktif) laptop? Saya akan berpikir bahwa layanan DNS-dan-DHCP gabungan dari dnsmasq akan melakukan itu, yaitu ketika klien melakukan DHCPDISCOVER / DHCPREQUEST ia melaporkan nama hostnya, dan dnsmasq mengaitkan nama host dengan alamat IP mana saja yang ditetapkan. Itu sudah pengalaman saya, namun saya harus mengakui bahwa saya belum mencoba menghubungkan dengan satu jaringan i / f, kemudian memutuskan sambungan (tanpa melakukan rilis eksplisit) dan menghubungkan lagi dengan yang lain.

Dengan asumsi nama host "laptop", apa yang terjadi ketika Anda meminta perangkat OpenWRT untuk "laptop", setelah beralih dari satu antarmuka ke antarmuka lainnya?

Norky
sumber
1

Mengapa menggunakan DHCP?

Anda dapat secara manual mengkonfigurasi alamat IP statis pada kedua antarmuka, dan kemudian menggunakan yang Anda sukai (sambil membiarkan yang lain terputus, tentu saja).

Massimo
sumber
Yah, karena ini adalah metode termudah, konfigurasi yang sesuai dengan semua jaringan yang saya hubungkan (atau setidaknya saya berharap demikian).
sleepyMonad
0

Saya akan sangat terkejut jika saklar Anda dapat mendukung ini. Anda mungkin lebih beruntung memberi kedua antarmuka jaringan alamat MAC yang sama.

Mengatakan itu, aku pasti setuju dengan Holocryptic, ini naga.

happyhairydude
sumber
terima kasih telah menyarankan untuk menggunakan MAC yang sama; walaupun saya tidak yakin bagaimana melakukannya. Mungkin itu sesuatu yang bisa saya konfigurasi dari BIOS ...
sleepyMonad
Biasanya paling mudah untuk hanya mengaturnya di OS, di windows itu di bawah properti antarmuka jaringan (secara manual mengatur alamat MAC).
happyhairydude
0

Tidak, itu tidak mungkin. Tetapi sebagian besar NIC memungkinkan Anda untuk mengatur MAC secara administratif, dan Anda dapat mengatur kedua NIC ke MAC yang sama.

Pada sebagian besar * nix boxen Anda biasanya dapat melakukan ini, kemudian mengatur antarmuka LAGG failover untuk keduanya (dengan preferensi untuk kabel) untuk memungkinkan Anda mencolokkan koneksi kabel tanpa memutuskan sesi TCP.

Chris S
sumber