Pengalamatan IPv6, awalan dinamis bagian statis lokal

10

Router di jaringan saya membagikan awalan IPv6 yang diberikan oleh ISP saya. Awalan ini dinamis tetapi "cukup lengket".

Saya ingin mesin saya secara otomatis mengambil awalan yang diiklankan di RA, tetapi menggabungkannya dengan bagian lokal yang ditentukan pengguna daripada menghasilkan satu secara acak atau berdasarkan alamat MAC. Apakah ada cara mudah untuk melakukan itu?

plugwash
sumber
1
Saya belum melihat sistem operasi yang memungkinkan Anda melakukan ini :(
Sander Steffann
@SanderSteffann Tidak pernah menggunakan Linux?
Michael Hampton
1
@Michael Saya belum pernah melihat OS yang memungkinkan Anda mengkonfigurasi token IID. Secara teknis kernel dapat melakukannya, tetapi tidak ada OS (seperti dalam distribusi) yang mendukungnya :(
Sander Steffann

Jawaban:

11

Ada dua cara untuk melakukan ini. Satu adalah cara yang mudah dan satu adalah cara yang sulit.

Cara mudah adalah menjalankan server DHCPv6 di jaringan Anda dan menetapkan sendiri alamat host untuk setiap perangkat. Atau biarkan server memilih bagian host; server DHCPv6 yang saya lihat akan menjaga bagian host yang sama bahkan jika awalannya berubah.

Cara yang sulit adalah menggunakan ip tokenuntuk mengatur pengenal antarmuka tokenized. Ini digambarkan sebagai:

Dukungan pengidentifikasi antarmuka tokenized IPv6 digunakan untuk menetapkan alamat bagian host yang terkenal ke node sementara masih memperoleh awalan jaringan global dari iklan Router. Target utama untuk pengidentifikasi token adalah platform server di mana alamat biasanya dikonfigurasi secara manual, daripada menggunakan DHCPv6 atau SLAAC. Dengan menggunakan pengidentifikasi token, host masih dapat menentukan awalan jaringan mereka dengan menggunakan SLAAC, tetapi lebih mudah dinomori ulang jika awalan jaringan mereka berubah. Tokenized IPv6 Identifier dijelaskan dalam konsep: <draft-chown-6man-tokenised-ipv6-identifiers-02>.

Alasannya adalah cara yang sulit adalah bahwa sementara Linux menyertakan fungsi ini, tidak ada distribusi Linux yang saya sadari mencakup dukungan untuk membuat konfigurasi seperti itu tetap dan menerapkannya pada saat boot, seperti yang mereka lakukan untuk alamat yang dikonfigurasi secara manual atau DHCP. Jadi itu mungkin tidak akan bekerja dengan baik untuk Anda, sampai beberapa distribusi melakukannya. Perhatikan bahwa sekarang mungkin untuk mengkonfigurasi token IPv6 di NetworkManager dan systemd-networkd; jawaban yang lebih baru memiliki petunjuk konfigurasi khusus.


Terakhir, jika ISP Anda sesekali mengubah awalan Anda, pertimbangkan untuk menggunakan Alamat Lokal Unik dalam jaringan Anda. Dengan cara ini, semua perangkat Anda akan selalu memiliki alamat yang tidak akan pernah berubah, yang dengannya mereka dapat berbicara satu sama lain. Beberapa router rumah / SOHO yang mendukung IPv6 (seperti OpenWrt) memiliki opsi untuk mengaktifkan ULA di seluruh jaringan rumah; jika ada beberapa router di rumah, ini harus diaktifkan pada router yang terhubung ke ISP.

Michael Hampton
sumber
Masalah yang sebenarnya memunculkan pertanyaan adalah router ISP saya mengirimkan RAS dengan umur yang pendek. Ini menyebabkan masalah besar dengan alamat privasi. OTOH Saya tidak begitu suka dengan ide mengungkapkan alamat MAC saya kepada dunia.
plugwash
Bagian lokal statis menghindari masalah dengan alamat privasi tanpa mengungkapkan alamat MAC saya, terima kasih.
plugwash
Apakah Anda tahu cara menambahkan beberapa token ke antarmuka tunggal untuk menetapkan beberapa alamat IPv6 "dinamis statis '?
wedi
@wedi Linux hanya mendukung satu token per antarmuka. Token IPv6 mungkin bukan solusi untuk masalah Anda, apa pun itu.
Michael Hampton
6

Michael melakukan ringkasan yang sangat baik dan tip plugwash baru-baru ini adalah yang terbaik yang bisa saya temukan setelah berburu selama beberapa jam untuk solusi CentOS 7 / RHEL (juga systemd dan manajer jaringan). Setelah terbiasa dengan nmcli (saya terutama masih menggunakan ifcfg dan ip) - Saya bisa berhasil menerapkannya.

Tetapi menggali lebih dalam menurut https://developer.gnome.org/NetworkManager/stable/settings-ipv6.html NetworkManager secara langsung mendukung IPv6 pengenal antarmuka yang di tokenized sebagai properti (dari rilis 1.4 Agustus 2016 http://news.softpedia.com/ news / networkmanager-1-4-menambahkan-dukungan-untuk-pengaturan-ipv6-tokenized-interface-identifiers-507601.shtml ).

Jadi Anda tidak perlu mengatur pengaturan IPv6 manajer jaringan untuk mengabaikan tetapi Anda harus mengatur pengaturan

nmcli connection modify eth0 ipv6.method "auto" # if not already
nmcli connection modify eth0 ipv6.addr-gen-mode "eui64" # use interface token
nmcli connection modify eth0 ipv6.token "::2"

yang akan menulis IPV6_TOKEN=::2ke / etc / sysconfig / network-scripts / ifcfg-eth0 untuk selamat dari reboot. Untuk segera menerapkan ini restart antarmuka oleh

nmcli connection up id eth0  # restart
Jürgen
sumber
3

Terima kasih kepada Michael karena mengonfirmasi bahwa Linux mendukung fitur dan menunjuk pada perintah tingkat rendah. Jawaban ini mencakup cara membuatnya bekerja dalam praktik pada desktop bentangan Debian (dengan systemd dan manajer jaringan).

Pertama-tama edit koneksi di manajer jaringan dan atur pengaturan IPv6 untuk diabaikan.

Sekarang buat file /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken. File harus dimiliki oleh root, izin 755 dan dengan konten berikut.

#!/bin/sh
ip token set ::2 dev eth0

Ganti eth0 dengan perangkat yang Anda inginkan dan :: 2 dengan akhiran yang Anda inginkan.

plugwash
sumber
2

Di Linux Anda dapat menggunakan systemd-network.

Cukup buat .networkfile di bawah /etc/systemd/network/somename.network:

[Match]
Name=e*

[Network]
DHCP=yes
IPv6Token=::1

alih-alih e*mencocokkan semua antarmuka yang dimulai dengan e, Anda dapat memasukkan nama antarmuka lengkap. Ini memungkinkan DHCP {v4, v6} dan digunakan ::1sebagai akhiran. Anda dapat memilih alamat IPv6 apa pun, tetapi 64 bit pertama harus disetel ke nol.

Setelah ini aktifkan dan mulai systemd-networkd.service.

Inrin
sumber