Gunakan alamat sementara IPv6 hanya dengan rekan jarak jauh

6

Saya pikir pertanyaan ini menyangkut interaksi antara algoritma Pemilihan Alamat Default yang dapat dikonfigurasi yang ditentukan oleh RFC-3484 dan alamat sementara yang ditentukan oleh RFC-4941 , meskipun solusinya mungkin memerlukan beberapa jenis fungsionalitas ketiga. Lingkungan saya adalah Linux (kernel versi 3.2.0 pada Ubuntu 12.04) dengan utilitas iproute2 (versi ss111117).

Bagaimana saya bisa mengkonfigurasi komputer saya untuk menggunakan alamat biasa, yang bukan privasi ditingkatkan untuk terhubung ke node lain di bawah awalan yang sama, tetapi menggunakan alamat sementara untuk koneksi ke node di luar awalan itu?

Sebagai contoh, katakanlah komputer saya fuzzy, dan server file saya bunny. Di suatu tempat di luar IPv6 Internet adalah situs web yang ingin saya kunjungi nosey.example.com,. Berikut adalah alamat yang ditugaskan pada fuzzy:

neirbowj@fuzzy:~$ ip -6 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2001:db8:d00d:babe:6d3b:96d0:f584:beb3/64 scope global temporary dynamic 
       valid_lft 599342sec preferred_lft 80342sec
    inet6 2001:db8:d00d:babe:22fc:11ff:fe53:b2e7/64 scope global dynamic 
       valid_lft 2591986sec preferred_lft 604786sec
    inet6 fe80::22fc:11ff:fe53:b2e7/64 scope link 
       valid_lft forever preferred_lft forever

bunny memiliki alamat yang dikonfigurasi secara statis pada awalan yang sama.

neirbowj@fuzzy:~$ grep bunny /etc/hosts
2001:db8:d00d:babe::1    bunny

nosey.example.com tidak ada pada awalan ini.

neirbowj@fuzzy:~$ host -t aaaa nosey.example.com
nosey.example.com has IPv6 address 2001:db8:b00b:1e5::1

Label alamat aktif fuzzydiatur ke default.

neirbowj@fuzzy:~$ ip addrlabel
prefix ::1/128 label 0 
prefix ::/96 label 3 
prefix ::ffff:0.0.0.0/96 label 4 
prefix 2001::/32 label 6 
prefix 2001:10::/28 label 7 
prefix 2002::/16 label 2 
prefix fc00::/7 label 5 
prefix ::/0 label 1 

Ketika saya terhubung bunny, saya ingin menggunakan 2001:db8:d00d:babe:22fc:11ff:fe53:b2e7, karena tidak ditandai " temporary". Ketika saya terhubung ke nosey.example.com, saya ingin menggunakan 2001:db8:d00d:babe:6d3b:96d0:f584:beb3karena yang ditandai " temporary". Apakah ini mungkin dan jika iya, bagaimana?

Saya telah membaca Bagaimana cara kerja pemilihan alamat sumber IPv6 bekerja di Linux , tetapi saya tidak melihat bagaimana aturan mana pun akan mempengaruhi pilihan ini, atau bahkan bagaimana temporaryflag tersebut menginformasikan pemilihan alamat sama sekali.

Alasan saya pikir saya harus bisa melakukan ini adalah karena kutipan ini.

RFC-4941
Section 3.1 Assumptions

[...]

Finally, this document assumes that when a node initiates outgoing
communication, temporary addresses can be given preference over
public addresses when the device is configured to do so.
[ADDR_SELECT] mandates implementations to provide a mechanism, which
allows an application to configure its preference for temporary
addresses over public addresses.  It also allows for an
implementation to prefer temporary addresses by default, so that the
connections initiated by the node can use temporary addresses without
requiring application-specific enablement.  This document also
assumes that an API will exist that allows individual applications to
indicate whether they prefer to use temporary or public addresses and
override the system defaults.
neirbowj
sumber

Jawaban:

2

Sepertinya tempat yang aneh, tetapi di Linux Anda bisa melakukan ini di tabel routing.

Katakan bahwa tabel perutean Anda saat ini terlihat seperti ini:

# ip -6 route
2001:db8:d00d:babe::/64 dev eth0  proto kernel  metric 256 
default via 2001:db8:d00d:babe::1 dev eth0  metric 1024 

Anda dapat menentukan rute yang menimpa alamat sumber. Dalam hal ini yang dapat Anda lakukan:

# ip -6 route add 2001:db8:d00d:babe::/64 \
                  dev eth0 \
                  src 2001:db8:d00d:babe:22fc:11ff:fe53:b2e7 \
                  metric 128

Karena rute ini memiliki metrik yang lebih rendah daripada yang saat ini (yang memiliki metrik 256) ia akan menimpanya. Saat Anda sekarang terhubung ke bunnyalamat 2001:db8:d00d:babe::1, rute ini akan cocok dan akan menggunakan alamat sumber yang dikonfigurasi.

Jika Anda juga ingin menggunakan alamat sumber tertentu untuk subnet lain, Anda juga bisa membuat rute untuk itu. Sebagai contoh:

# ip -6 route add 2001:db8:d00d::/48 \
                  via 2001:db8:d00d:babe::1 \
                  dev eth0 \
                  src 2001:db8:d00d:babe:22fc:11ff:fe53:b2e7 \
                  metric 128
Sander Steffann
sumber
Ini adalah jawaban yang bagus untuk pertanyaan yang sedikit berbeda, karena pendekatan ini agnostik dengan tipe alamat (statis, DHCPv6, SLAAC, privasi + SLAAC, dll). Meskipun ini mungkin yang terbaik yang bisa saya lakukan, saya ingin menunggu sedikit lebih lama sebelum menerima jawaban Anda.
neirbowj
@neirbowj Metode yang digunakan untuk mendapatkan alamat Anda tidak benar-benar relevan. Ini adalah bagaimana Anda akan melakukannya. BTW, Anda juga bisa melemparkan ini ke dalam /etc/network/interfacesuntuk membuatnya permanen.
Michael Hampton
Saya tidak mengatakan saya tidak bisa melakukannya dengan cara ini, tetapi jika Anda membaca pertanyaan saya, saya harap Anda akan melihat mengapa sifat dan sumber alamat sangat relevan.
neirbowj
1
@neirbowj Pertanyaan Anda tidak mengatakan apa-apa tentang itu. Mungkin Anda lupa menambahkannya?
Michael Hampton
@MichaelHampton: Saya menyatakannya di tiga tempat: judul ("Gunakan alamat sementara ..."), kalimat pertama yang berakhir dengan '?' (reguler, non-privasi ditingkatkan vs sementara), dan kalimat sebelum "Apakah ini mungkin, dan jika demikian, bagaimana?" ("Karena tidak ditandai ... karena ditandai ...").
neirbowj