IPv4 vs IPv6 prioritas pada Windows 7

31

Saya memiliki konektivitas IPv6 melalui terowongan Hurricane Electric. Sejak hari IPv6 tahun ini, banyak layanan (google.com, facebook.com, dll.) Mengaktifkan IPv6 di domain utama mereka. Di mesin Windows saya, IPv6 lebih disukai daripada IPv4. Ini berarti bahwa setiap kali saya mengunjungi Google, semua lalu lintas melewati terowongan saya ke Hurricane Electric, yang meningkatkan latensi lebih dari 100%:

C:\> ping www.google.com

Pinging www.l.google.com [2001:4860:8005::68] with 32 bytes of data:
Reply from 2001:4860:8005::68: time=85ms
Reply from 2001:4860:8005::68: time=84ms
Reply from 2001:4860:8005::68: time=112ms
Reply from 2001:4860:8005::68: time=86ms

Ping statistics for 2001:4860:8005::68:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 84ms, Maximum = 112ms, Average = 91ms


C:\> ping -4 www.google.com

Pinging www.l.google.com [173.194.79.103] with 32 bytes of data:
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=55ms TTL=46
Reply from 173.194.79.103: bytes=32 time=29ms TTL=46

Ping statistics for 173.194.79.103:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 28ms, Maximum = 55ms, Average = 35ms

Pertanyaan: Bagaimana saya bisa membuat Windows 7 selalu lebih suka IPv4, ketika kedua catatan IPv4 dan IPv6 tersedia untuk nama domain tertentu?

haim
sumber
4
Cara yang tepat untuk ini, pada sebagian besar sistem operasi, adalah mengonfigurasi kebijakan awalan - pada Windows, via netsh interface ipv6 show prefixpolicy. Saya mungkin mengirim jawaban yang lebih rinci besok.
grawity
1
@ kegembiraan Itu seharusnya prefixpolicies, bukan prefixpolicy.
Peter Wood
@PeterWood Mungkin berbeda sejak XP, lalu.
grawity
1
@ kegembiraan Ya, saya menggunakan Windows 7, dan panggilan netsh interface ipv6 showmemberikan penggunaan termasuk show prefixpolicies - Shows prefix policy entries, tetapi tidak prefixpolicy. Tepuk tangan.
Peter Wood

Jawaban:

40

Solusi # 1: Tambahkan kebijakan awalan untuk lebih memilih alamat IPv4 daripada IPv6

Tabel kebijakan awal mirip dengan tabel perutean, ini menentukan alamat IP mana yang lebih disukai saat membuat koneksi. Perhatikan bahwa prioritas lebih tinggi dalam kebijakan awalan diwakili oleh nilai "prioritas" lager, persis berlawanan dengan nilai "biaya" tabel perutean.

Tabel kebijakan awalan Windows default:

C:\>netsh interface ipv6 show prefixpolicies
Querying active state...

Precedence  Label  Prefix
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        30      2  2002::/16
        20      3  ::/96
        10      4  ::ffff:0:0/96
         5      5  2001::/32

Perhatikan bahwa alamat IPv6 (:: / 0) lebih disukai daripada alamat IPv4 (:: / 96, :: ffff: 0: 0/96).

Kami dapat membuat kebijakan yang akan membuat Hurricane Electric IPv6 tunnel kurang menguntungkan daripada alamat IPv4 mana pun :

netsh interface ipv6 add prefixpolicy 2001:470::/32 3 6

2001: 470 :: / 32 adalah awalan Hurricane Electric, 3 adalah Precedence (sangat rendah) dan 6 adalah Label.

Saya bisa menggunakan awalan yang lebih umum, tetapi saya ingin memastikan daripada jika dan ketika saya mendapatkan konektivitas IPv6 langsung dari ISP, ini akan lebih diutamakan daripada IPv4.

Jika Anda mengadaptasi solusi ini, Anda perlu mengganti awalan IPv6 yang sesuai alih-alih Hurricane Electric saya.

Solusi # 2: Tweak registry untuk membuat Windows selalu lebih suka IPv4 daripada IPv6

Solusi ini lebih umum, tetapi lebih invasif dan kurang memenuhi standar. Pada akhirnya, Windows masih akan memodifikasi tabel kebijakan awalan untuk Anda.

  • Buka RegEdit, arahkan ke HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Buat DisabledComponentsnilai registri DWORD, tetapkan nilainya menjadi 20 (Heksadesimal). Lihat Microsoft KB 929852 untuk info lebih lanjut tentang kunci registri ini, terutama jika DisabledComponentssudah ada di sistem Anda.
  • Mulai ulang.
haim
sumber
Perintah PowerShell untuk solusi # 2: Get-ItemProperty -Path hklm:SYSTEM\CurrentControlSet\Services\tcpip6\Parameters -Name "DisabledComponents" | select -exp DisabledComponents Set-Itemproperty -Path hklm:SYSTEM\CurrentControlSet\Services\tcpip6\Parameters -Name "DisabledComponents" -value 32
Sergii Volchkov
Sangat mengecewakan bahwa Anda tidak dapat mengatur preferensi ini per-koneksi (mis. Saya memiliki router buggy) tetapi hanya secara global atau paling banyak per-adaptor.
mirh
23

Jika teks monospace dan tabel dengan angka dan simbol aneh membuat Anda takut, Anda dapat melakukan ini dengan Microsoft Fix-its, penginstal sederhana dari Microsoft yang membuat perubahan konfigurasi untuk Anda.

Perbaikan ini berasal dari KB 2533454 , yang menjelaskan bahwa Anda ingin melakukan ini jika konektivitas IPv6 Anda rusak. Anda harus menjadi administrator untuk menjalankan perbaikannya; setelah mengunduh, klik kanan dan pilih Jalankan sebagai administrator.

Michael Hampton
sumber
+1 memiliki tombol tekan untuk mengaktifkan / menonaktifkan ini sangat bagus, tepuk tangan
ashes999
7

Cara paling sederhana, dan ini selalu sangat sederhana sehingga kita mengabaikannya ...

  1. buka Pusat Jaringan dan Berbagi.

  2. Ada klik Ubah Pengaturan Adaptor

  3. Pada "Bilah Menu" Klik Advanced. ** Catatan .. Jika Anda hanya melihat "Atur" lalu klik itu, dan kemudian dari drop down pilih "Layout - Menu Bar"

  4. Setelah mengklik lanjut pada langkah sebelumnya, klik "Pengaturan Lanjut" pada langkah ini (Sebuah kotak akan terbuka di layar Anda)

  5. Apa yang ditampilkan adalah adaptor dan pengaturan dan adaptor yang Anda gunakan saat ini sudah akan disorot pada bagian atas dan rincian perwakilannya di bawah ini (Anda harus melihat binding untuk adaptor itu). Sorot salah satu ikatan dalam daftar dan Anda harus melihat panah di sebelah kanan menyala, gunakan panah itu untuk mengubah urutan pengikatan ke preferensi Anda dan kemudian pilih ok dari bawah.

  6. Perhatikan bahwa sama seperti ketika Anda menginstal protokol, layanan, atau klien di properti adaptor Anda. Hal yang sama berlaku di sini. yaitu Anda mengganti satu adaptor, dan sisanya mengikutinya. Jadi, misalnya, jika Anda memilih IPV6 lebih dari 4 pada adaptor nirkabel Anda, adaptor LAN Anda juga berubah.

Ini adalah cara termudah yang dapat saya pikirkan untuk melakukan tugas khusus ini tanpa harus memikirkan terlalu banyak, atau memiliki terlalu banyak pengetahuan tentang perutean paket pada jaringan antar.

StevenRowe6
sumber
2
Ketika saya pergi ke sana, IPv4 sudah terdaftar pertama di kedua kategori. Namun, ketika saya pergi ke properti adaptor jaringan saya, IPv6 terdaftar terlebih dahulu.
kojow7
1

Versi pendek

Before September 2012                     After September 2012
Precedence  Prefix                        Precedence  Prefix       
----------  -------------                 ----------  -------------
        50  ::1/128        IPv6 loopback          50  ::1/128        IPv6 loopback
        40  ::/0           Native IPv6            40  ::/0           Native IPv6
        40  fc00::/7       ULAs                   35  ::ffff:0:0/96  IPv4
        40  fec0::/10      site-local             30  2002::/16      6to4
        40  3ffe::/16      6bone                   5  2001::/32      Teredo
        30  2002::/16      6to4                    3  fc00::/7       ULAs
        20  ::/96          IPv4compat              1  fec0::/10      site-local
        10  ::ffff:0:0/96  IPv4                    1  3ffe::/16      6bone
         5  2001::/32      Teredo                  1  ::/96          IPv4compat

Versi Panjang

RFC6724 mendefinisikan perubahan dalam bagaimana alamat harus lebih disukai. Dengan perubahan ini IPv6 tidak lagi menjadi alamat yang disukai dalam hampir setiap kasus :(

Pertanyaan ini, yang ditanyakan pada Juni 2012 "diperbaiki" oleh RFC mulai September 2012. Bergantung pada versi Windows Anda, Anda memiliki kebijakan baru di luar kotak (Windows 8.1), atau kemungkinan sudah dikirim melalui pembaruan ( Windows 8, Windows 7, Windows Vista).

Kami di sini karena kami ingin menggunakan IPv6; kami ingin perubahan itu dibatalkan.

Bagaimana cara mengembalikannya

Jika Anda mendapatkan beberapa alamat IP untuk satu host, mesin Anda harus memutuskan alamat mana yang akan digunakan. Contoh peringkat mungkin:

  • Loopback IPv6
  • IPv6 asli
  • Alamat unik-lokal (ULA), misalnya fdxx ::
  • Situs-lokal, misalnya fec0
  • 6 tulang
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, mis. 2001

Di mesin Windows Anda, peringkat ini disebut kebijakan awalan .

Kebijakan awalan

Anda dapat melihat kebijakan awalan komputer Anda dengan menjalankan:

>netsh int ipv6 show prefixpolicies

Di masa lalu (awalnya didefinisikan oleh RFC 3484 ), kebijakan awalan adalah:

Precedence  Prefix         
----------  -------------
        50  ::1/128        IPv6 loopback
        40  ::/0           Native IPv6
        40  fc00::/7       ULAs
        40  fec0::/10      site-local
        40  3ffe::/16      6bone
        30  2002::/16      6to4
        20  ::/96          IPv4compat
        10  ::ffff:0:0/96  IPv4
         5  2001::/32      Teredo

Jadi Anda melihatnya akan selalu menggunakan IPv6 (yay!):

  1. Loopback IPv6
  2. IPv6 asli, ULA, situs-lokal, 6one
  3. 6to4
  4. IPv4compat
  5. IPv4
  6. Teredo

Jika Anda melalui upaya untuk menyebarkan IPv6: itu hanya berhasil.

Kebijakan Awalan Baru

Pada 2012, urutan preferensi baru didefinisikan oleh RFC6724 . Saat ini kebijakan awalan memastikan bahwa Anda tidak akan pernah menggunakan IPv6:

Precedence  Prefix         
----------  -------------
        50  ::1/128        
        40  ::/0           Native IPv6
        35  ::ffff:0:0/96  IPv4
        30  2002::/16      
         5  2001::/32      
         3  fc00::/7       ULAs
         1  fec0::/10      site-local
         1  3ffe::/16      
         1  ::/96          

Anda akan melihat bahwa Anda tidak akan pernah dapat menggunakan Alamat Lokal Unik Anda, atau alamat situs-lokal; itu selalu rusak:

  1. Loopback IPv6
  2. IPv6 asli
  3. IPv4
  4. 6to4
  5. Teredo
  6. ULA
  7. situs-lokal
  8. 6 tulang
  9. IPv6compat

Bagaimana memperbaikinya?

Yang kami inginkan adalah memperbaiki IPv6 sehingga ULA lebih disukai daripada IPv4. Paling tidak kami ingin mendorong penggunaan ULA ( fc00::/7) di atas IPv4:

Precedence  Prefix         
----------  -------------
        50  ::1/128        
        40  ::/0           Native IPv6
        37  fc00::/7       ULAs <---------- from 3 up to 37
        35  ::ffff:0:0/96  IPv4
        30  2002::/16      
         5  2001::/32      
         1  fec0::/10      site-local
         1  3ffe::/16      
         1  ::/96          

Yang dilakukan oleh:

>netsh interface ipv6 set prefixpolicy prefix=fc00::/7 precedence=37 label=13 store=active

Itu hanya akan membuatnya aktif sampai reboot berikutnya. Untuk membuat perubahan secara permanen:

>netsh interface ipv6 set prefixpolicy fc00::/7 37 13

Jika saya:

  • melalui upaya untuk menghasilkan awalan global ULA untuk saya / 48
  • dan pilih subnet id untuk / 64 saya
  • dan menyebarkan ULA ke setiap mesin di perusahaan
  • dan memperbarui server DNS untuk mengembalikan alamat IPA6 ULA di samping alamat IPv4

komputer paling tidak bisa lakukan adalah memiliki kesopanan umum untuk menggunakan alamat.

Obrolan bonus

The fc00::/7rentang dibagi menjadi dua bagian:

  • fd00::/8 - Awalan GlobalID yang dihasilkan secara lokal
  • fc00::/8 - ???

Tidak ada yang pernah benar-benar memutuskan bahwa itu fcbaik untuknya, dan hanya duduk di sana.

The fdalamat yang didefinisikan sebagai:

fd [40-bit random GlobalID] [16-bit subnet] [64-bits for host assignment]

Jadi jika Anda dihasilkan a4d7f6dd66sebagai GlobalID 40-bit cryptoghpcallly Anda acak , itu memberi Anda / 48 Anda:

  • fda4:d7f5:dd66:: / 48
  • fda4:d7f5:dd66:face::/ 64 (di facesubnet)
  • fda4:d7f5:dd66:face::825 sebagai alamat IP host

SixXS memelihara basis data publik dari awalan Unique Local Address GlobalID untuk mengurangi kemungkinan collision, misalnya:

  • fdee:e004:2208::/48: Apple Inc - Leopard OSX
  • fdd4:43c8:ba34::/48: TekSavvy - Danny Murray
  • fdac:afbd:fea1::/48: IBM Rational Build Forge - Chris Fuller

Namun karena penggunaan yang melambat, dan nilai yang meragukan di tempat pertama, SixXS menghentikan layanan pada tahun 2018.

Pembacaan Bonus

Ian Boyd
sumber
The fc00::/7jaringan benar-benar dibagi menjadi dua bagian. The fc00::/8jaringan Reserved untuk otoritas global masa depan untuk menetapkan dari, dan saat ini tidak dapat digunakan, tetapi fd00::/8tersedia untuk tugas lokal, tetapi membutuhkan 40 bit berikutnya yang akan dipilih secara acak.
Ron Maupin
Sebenarnya kita ada di sini karena kita (dan OP) JANGAN INGIN menggunakan IPv6 dan masih aktif di loopback walaupun saya menonaktifkan setiap instance IPv6 yang bisa saya temukan!
AaA
0

Ada metode yang lebih mudah untuk saya. Saya baru saja mengubah metrik antarmuka # untuk menentukan prioritasnya. Saya telah menggunakan metode ini di masa lalu untuk mengubah prioritas adapter jaringan (Nirkabel NIC prioritas pertama, prioritas kedua LAN NIC), tetapi saya menemukan itu berfungsi pada TCP / IPv4 dan TCP / IPv6 juga. Dalam hal ini, saya mengubah metrik antarmuka TCP / IPv4 dari Otomatis menjadi 5, dan metrik antarmuka TCP / IPv6 dari Otomatis menjadi 10. Semakin rendah angka metrik, semakin tinggi prioritasnya. Kemudian restart PC Anda. Jadi sekarang setiap kali saya melakukan ping menggunakan nama host, itu akan membalas dari IPv4, bukan Ipv6.

Ini adalah instruksi yang lebih detail

https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10

Sam N
sumber