IPv4 vs IPv6 di VPS: Apa yang Berubah pada Pelayan Anda
VPS anda mungkin ada IPv4 dan IPv6, tetapi talian rumah selalunya di belakang CGNAT. Ketahui kenapa alamat IPv6 tidak boleh ditukar kepada IPv4, dan cara menguji kedua-duanya.
IPv4 vs IPv6 pada VPS: jawapan ringkas
IPv4 vs IPv6 pada VPS (pelayan peribadi maya) ialah soal dua sistem alamat yang berasingan, bukan dua versi alamat yang sama. Pelayan anda biasanya menerima satu alamat IPv4 awam, dan pada banyak penyedia, alamat IPv6 juga. Talian rumah atau telefon anda pula mungkin berkongsi satu alamat IPv4 dengan ramai pelanggan lain. Sebab itu VPS boleh dihubungi dari mana-mana, tetapi komputer di rumah tidak.
Anda sudah tahu apa itu DNS dan port. Jika perlu ulang kaji, baca cara DNS menukar nama domain kepada alamat IP dan apa itu port pada Linux dan cara melihatnya. Di bawah, kita lihat kedua-dua protokol dari sudut orang yang menjaga pelayan: apa yang diberi kepada VPS, kenapa IPv4 mahal, kenapa talian rumah berbeza, dan apa yang perlu disemak supaya pelayan tidak rosak separuh.
Apa beza IPv4 dan IPv6 dari sudut pengendali pelayan?
IPv4 menggunakan alamat 32 bit, contohnya 203.0.113.10. Jumlah alamatnya kira-kira 4.3 bilion untuk seluruh dunia. IPv6 menggunakan alamat 128 bit, contohnya 2001:db8::10. Ia ditulis dalam heksadesimal, dipisahkan dengan titik bertindih. Ruang IPv6 sangat besar, jadi penyedia boleh memberi setiap pelanggan satu blok alamat, bukan satu alamat sahaja.
Kedua-dua protokol membawa trafik yang sama, seperti web dan SSH. Tetapi di dalam mesin, ia ialah dua timbunan rangkaian (network stack) yang berasingan. Setiap timbunan ada alamat sendiri, laluan lalai sendiri, peraturan firewall sendiri, dan soket mendengar sendiri. Ini perkara paling penting untuk diingat. Konfigurasi yang betul untuk IPv4 tidak semestinya terpakai untuk IPv6.
Apa yang biasanya diberi kepada sebuah VPS?
Kebanyakan VPS menerima satu alamat IPv4 awam. Untuk IPv6, amalan penyedia berbeza. Sesetengah memberi satu blok /64. Sesetengah memberi satu alamat sahaja. Ada juga yang tidak memberi IPv6, atau memerlukan anda mengaktifkannya dalam panel kawalan. Semak halaman pelan dan panel penyedia anda. Jangan anggap.
Cara paling pasti ialah bertanya kepada pelayan itu sendiri. Jalankan tiga arahan ini:
ip -4 addr show
ip -6 addr show scope global
ip -6 route show defaultDalam output pertama, baris inet ialah alamat IPv4. Dalam output kedua, cari baris inet6. Pilihan scope global menapis alamat fe80::, iaitu alamat link-local. Setiap antara muka rangkaian ada alamat link-local secara automatik, dan ia hanya sah dalam rangkaian setempat. Jika output kedua kosong, pelayan tiada alamat IPv6 awam. Jika ada alamat tetapi arahan ketiga tidak menunjukkan laluan lalai, alamat itu wujud tetapi tidak boleh sampai ke internet.
Alamat pada antara muka belum tentu alamat yang dilihat oleh dunia. Semak dari luar:
curl -4 https://icanhazip.com
curl -6 https://icanhazip.com-4 memaksa curl menggunakan IPv4 sahaja. -6 memaksa IPv6 sahaja. Setiap arahan mencetak alamat yang dilihat oleh pelayan di hujung sana. Bandingkan alamat dari curl -4 dengan alamat dalam ip -4 addr show. Jika sama, alamat awam itu benar-benar berada pada mesin anda. Jika berbeza, ada NAT di antara pelayan anda dan internet. Jika curl -6 gagal walaupun ip -6 addr menunjukkan alamat global, laluan IPv6 pelayan tidak berfungsi. Mulakan semakan dengan laluan lalai tadi.
Kenapa IPv4 terhad dan berharga, sedangkan IPv6 tidak?
Empat bilion alamat tidak cukup untuk dunia di mana setiap orang ada telefon, komputer riba dan beberapa peranti rumah. APNIC (Asia Pacific Network Information Centre) ialah badan yang mengagihkan alamat IP untuk rantau Asia Pasifik, termasuk Malaysia. Pada April 2011, APNIC mula mengagihkan blok /8 terakhirnya. Sejak itu, setiap ahli hanya boleh mendapat jumlah IPv4 yang sangat kecil daripada APNIC. Selebihnya perlu dibeli daripada pemegang lain di pasaran pindahan alamat.
Kesannya mudah. IPv4 kini aset yang dibeli dan dijual, jadi penyedia awan mula mengenakan caj ke atasnya. Contohnya, AWS mengenakan caj untuk setiap alamat IPv4 awam sejak Februari 2024. Penyedia VPS yang memasukkan satu IPv4 dalam harga pelan sebenarnya menanggung kos itu untuk anda. Sebab itu alamat IPv4 tambahan hampir selalu dijual sebagai tambahan berbayar.
IPv6 tidak menghadapi masalah ini. Satu blok /64 untuk satu VPS sudah lebih besar daripada seluruh ruang IPv4. Tiada kekurangan, jadi tiada sebab untuk mengenakan caj bagi setiap alamat IPv6.
Kenapa talian rumah dan mudah alih berada di belakang CGNAT?
Penyedia internet rumah dan mudah alih menghadapi kekurangan yang sama, tetapi mereka ada jutaan pelanggan. Mereka tidak mampu memberi setiap pelanggan satu alamat IPv4 awam. Penyelesaiannya ialah CGNAT (carrier-grade NAT, iaitu NAT pada skala penyedia). NAT (network address translation) menukar alamat sumber paket apabila paket itu keluar ke internet. Dengan CGNAT, ramai pelanggan berkongsi satu alamat IPv4 awam.
Anda mungkin sudah biasa dengan NAT pada router rumah. Semua telefon dan komputer di rumah berkongsi alamat router. CGNAT menambah satu lapisan NAT lagi di dalam rangkaian penyedia. Router anda sendiri hanya menerima alamat yang dikongsi daripada penyedia. Julat 100.64.0.0/10 dikhaskan untuk tujuan ini, iaitu alamat yang bermula dengan 100. dan nombor kedua antara 64 hingga 127.
Kesannya untuk pengendali ialah sambungan keluar berfungsi seperti biasa, tetapi tiada sesiapa di internet boleh memulakan sambungan masuk ke rumah anda melalui IPv4. Port forwarding pada router tidak membantu. Paket masuk berhenti di peranti CGNAT penyedia, dan peranti itu tidak tahu pelanggan mana yang patut menerimanya, jadi ia membuang paket tersebut.
Cara menyemak sama ada talian anda di belakang CGNAT:
- Buka halaman status router anda. Catat alamat WAN, iaitu alamat yang router terima daripada penyedia.
- Pada komputer di rumah, jalankan
curl -4 https://icanhazip.com. - Jika alamat WAN berada dalam julat
100.64.0.0/10, atau berbeza daripada alamat yang dicetak oleh curl, talian anda berada di belakang CGNAT.
VPS tidak mengalami masalah ini kerana alamat awamnya diberi terus kepada mesin itu. Itu salah satu sebab orang menyewa VPS. Jika anda perlu mencapai perkhidmatan di rumah yang berada di belakang CGNAT, gunakan VPS sebagai titik tengah. Caranya diterangkan dalam panduan terowong songsang dari rumah ke VPS untuk melepasi CGNAT.
IPv6 mengubah gambaran ini. Dengan IPv6, tiada keperluan untuk NAT. Setiap peranti di rumah boleh menerima alamat global sendiri. Jadi peranti di rumah yang ada IPv6 mungkin boleh dicapai dari VPS anda melalui IPv6, walaupun IPv4 di belakang CGNAT. Syaratnya, firewall pada router rumah mesti membenarkan sambungan masuk itu. Banyak router rumah menyekat sambungan IPv6 masuk secara lalai, jadi anda perlu membuka peraturan pada router itu sendiri.
Berapa banyak pengguna di Malaysia sudah menggunakan IPv6?
MCMC (Suruhanjaya Komunikasi dan Multimedia Malaysia) menerbitkan laporan konsultasi awam tentang migrasi penuh ke IPv6 pada April 2025. Carta dalam laporan itu menggunakan data APNIC Labs sehingga 2024. Carta itu menunjukkan kadar IPv6 Malaysia hampir 70 peratus. Laporan yang sama menyatakan kadar global masih di bawah 50 peratus. Dalam laporan itu juga, Maxis menyatakan ia memberi IPv6 secara lalai kepada semua pelanggan dalam rangkaian dual-stack.
Angka ini bergerak setiap bulan. Untuk angka terkini, buka peta per-negara Google dan halaman Malaysia di APNIC Labs. Kedua-duanya mengukur perkara yang berbeza. Google mengira peratus pengguna yang sampai ke perkhidmatan Google melalui IPv6. APNIC mengukur peratus pengguna yang mampu menggunakan IPv6, melalui ujian kecil yang dijalankan dalam iklan dalam talian. Jadi kedua-dua angka tidak akan sama. Setiap angka perlu dibaca bersama tarikhnya.
Laporan MCMC itu juga menetapkan sasaran. Menjelang 31 Disember 2028, setiap penyedia perkhidmatan rangkaian mesti memastikan semua perkhidmatannya mampu IPv6. Pada tarikh yang sama, pelanggan baharu hanya akan diberi alamat IPv6 awam yang unik, dan migrasi pelanggan sedia ada mesti sudah bermula. Menjelang 31 Disember 2030, semua perkhidmatan mesti beroperasi dalam rangkaian IPv6 sahaja (single-stack). Cadangan asal ialah 2028. MCMC memanjangkannya ke 2030 selepas maklum balas industri.
Sasaran ini terpakai kepada penyedia rangkaian, bukan terus kepada pelayan anda. Tetapi arahnya jelas. Semakin ramai pengguna Malaysia akan sampai ke pelayan anda melalui IPv6. Pelayan yang menjawab pada kedua-dua protokol tidak perlu bergantung kepada mekanisme terjemahan di rangkaian penyedia.
Bolehkah alamat IPv6 ditukar kepada IPv4?
Tidak. Alamat IPv6 ada 128 bit, dan alamat IPv4 ada 32 bit. Tiada formula yang boleh memampatkan alamat IPv6 ke dalam ruang IPv4, kerana ruang IPv4 jauh lebih kecil. Kedua-dua protokol juga tidak boleh bercakap secara terus. Hos yang hanya ada IPv6 tidak boleh menghantar paket kepada hos yang hanya ada IPv4. Beberapa mekanisme sering disalah anggap sebagai penukaran. Tiada satu pun yang benar-benar menukar alamat.
Dual-stack (dwi-tindanan)
Mesin ada kedua-dua alamat. Ia bercakap IPv4 dengan hos IPv4, dan IPv6 dengan hos IPv6. Ini pilihan terbaik untuk VPS. Klien moden seperti pelayar web mencuba IPv6 dahulu, kemudian beralih ke IPv4 dengan cepat jika IPv6 gagal. Teknik ini dipanggil Happy Eyeballs.
NAT64 dan DNS64
Ini digunakan dalam rangkaian yang hanya ada IPv6, contohnya sesetengah rangkaian mudah alih. Telefon bertanya rekod AAAA untuk nama yang hanya ada rekod A. Pelayan DNS64 lalu mencipta rekod AAAA sintetik. Ia meletakkan alamat IPv4 itu di hujung satu awalan khas, biasanya 64:ff9b::/96. Contohnya, 192.0.2.10 menjadi 64:ff9b::c000:20a, yang juga boleh ditulis 64:ff9b::192.0.2.10. Telefon menghantar paket ke alamat itu. Get laluan NAT64 milik penyedia kemudian menterjemah paket tersebut kepada IPv4.
Pelayan IPv4 anda nampak alamat IPv4 get laluan itu, bukan alamat telefon. Get laluan menyimpan keadaan setiap sambungan supaya jawapan boleh dihantar balik. Jadi ia penterjemah sambungan, bukan penukar alamat.
Alamat IPv4-mapped
::ffff:192.0.2.10 ialah alamat IPv4 yang ditulis dalam bentuk IPv6. Ia hanya wujud di dalam satu mesin. Aplikasi yang mendengar pada soket IPv6 boleh menerima sambungan IPv4 juga, dan sistem pengendalian melaporkan alamat klien IPv4 itu dalam bentuk ::ffff:. Sebab itu anda mungkin melihat ::ffff: dalam log aplikasi. Alamat ini tidak pernah dihantar di rangkaian. Sambungan itu tetap IPv4 sepenuhnya.
Kenapa rekod AAAA boleh merosakkan laman anda?
Rekod A memberi alamat IPv4 untuk sesuatu nama. Rekod AAAA memberi alamat IPv6. Apabila anda menerbitkan rekod AAAA, anda berjanji bahawa perkhidmatan itu menjawab pada alamat IPv6 tersebut. Ramai pengendali menambah rekod AAAA kerana panel DNS mencadangkannya, tetapi pelayan web mereka hanya mendengar pada IPv4.
Pengguna yang ada IPv6 akan mencuba alamat IPv6 dahulu. Pelayar web beralih ke IPv4 selepas sedikit kelewatan, jadi masalah ini mudah terlepas pandang semasa anda menguji dengan pelayar sendiri. Klien lain, seperti skrip dan monitor uptime yang memaksa IPv6, akan gagal terus. Perangkap yang sama berlaku selepas berpindah pelayan. Jika anda mengemas kini rekod A tetapi lupa rekod AAAA, pengguna IPv6 masih dihantar ke mesin lama. Senarai semak penuh ada dalam panduan memindahkan pelayan ke VPS baharu.
Mula-mula, semak rekod yang diterbitkan. Ganti example.com dengan domain anda:
sudo apt install -y bind9-dnsutils
dig +short A example.com
dig +short AAAA example.comKemudian semak soket yang sedang mendengar pada pelayan:
sudo ss -tlnpLihat lajur alamat tempatan. 0.0.0.0:443 bermaksud soket itu mendengar pada IPv4 sahaja. [::]:443 atau *:443 bermaksud ada soket IPv6. Jika port 80 dan 443 hanya muncul dengan 0.0.0.0, rekod AAAA anda menunjuk ke alamat yang tiada sesiapa menjawab.
Untuk nginx, setiap blok server perlu mendengar pada kedua-dua protokol:
server {
listen 80;
listen [::]:80;
server_name example.com;
}Uji dan muat semula konfigurasi:
sudo nginx -t
sudo systemctl reload nginxnginx -t sepatutnya mencetak syntax is ok dan test is successful. Jika tidak, baca baris ralat yang dicetak sebelum memuat semula.
Ada satu lagi gejala yang mengelirukan. Laman lalai nginx pada Ubuntu sudah ada listen [::]:80 default_server. Jika laman lalai itu masih aktif dan blok server anda tiada baris listen [::]:80, permintaan IPv6 tidak gagal. Permintaan itu jatuh ke laman lalai. Pengguna IPv6 akan nampak halaman Welcome to nginx, manakala pengguna IPv4 nampak laman anda.
Akhir sekali, uji dari mesin lain yang ada IPv6, bukan dari pelayan itu sendiri:
curl -6 -I https://example.com
curl -4 -I https://example.comKedua-dua arahan sepatutnya memulangkan status HTTP yang sama. Jangan uji dari pelayan itu sendiri, kerana trafik ke alamat sendiri melalui antara muka lo, dan firewall biasanya membenarkan semua trafik pada lo. Ujian itu akan lulus walaupun pengguna luar disekat. Jika curl -6 gagal dengan curl: (7) Failed to connect tetapi curl -4 berjaya, masalahnya ada pada laluan IPv6, iaitu sama ada soket atau firewall.
Perlukah firewall dikonfigurasi untuk IPv4 dan IPv6 secara berasingan?
Ya, kerana kedua-dua timbunan rangkaian itu berasingan. Peraturan iptables hanya meliputi IPv4. IPv6 mempunyai ip6tables sendiri. Jika anda hanya menulis peraturan IPv4, polisi IPv6 kekal pada nilai lalainya, iaitu menerima semua. Pangkalan data yang mendengar pada [::] akan disekat untuk IPv4 tetapi terbuka melalui IPv6. Jangan bergantung pada saiz ruang IPv6 untuk bersembunyi. Alamat pelayan anda sudah diterbitkan dalam DNS melalui rekod AAAA.
ufw menulis peraturan untuk kedua-dua timbunan jika IPV6=yes dalam /etc/default/ufw. Semak tetapan itu dan senarai peraturan:
grep IPV6 /etc/default/ufw
sudo ufw status verbose
sudo ip6tables -L -nSetiap peraturan yang anda tambah sepatutnya muncul dua kali dalam ufw status, dan salah satunya bertanda (v6). Jika tiada baris (v6) langsung, peraturan IPv6 tidak pernah ditulis. Cara membetulkannya, langkah demi langkah, ada dalam panduan membuka port untuk IPv4 dan IPv6 dengan ufw. Jika anda baru bermula dengan ufw, baca dahulu asas firewall ufw pada VPS.
Sesetengah penyedia juga ada firewall rangkaian dalam panel kawalan, di luar pelayan. Semak sama ada firewall itu ada peraturan IPv6 yang berasingan. Port yang dibuka untuk IPv4 di panel tidak semestinya terbuka untuk IPv6.
Senarai semak sebelum anda menerbitkan rekod AAAA
ip -6 addr show scope globalmenunjukkan alamat, danip -6 route show defaultmenunjukkan laluan lalai.curl -6 https://icanhazip.comdari pelayan berjaya.sudo ss -tlnpmenunjukkan setiap perkhidmatan awam mendengar pada[::]atau*.sudo ufw statusmenunjukkan peraturan(v6)untuk setiap port yang anda buka, dan tiada port lain yang terbuka.curl -6 -Idari mesin luar memulangkan status yang sama dengancurl -4 -I.
Jika satu langkah gagal, jangan terbitkan rekod AAAA lagi. Laman yang hanya ada IPv4 berfungsi dengan baik. Laman dengan rekod AAAA yang rosak tidak berfungsi untuk sebahagian pengguna anda.
FAQ
Bolehkah saya tukar alamat IPv6 kepada IPv4?
Tidak. Alamat IPv6 ada 128 bit dan alamat IPv4 ada 32 bit, jadi tiada cara untuk memetakan satu ruang ke dalam ruang yang lain. Untuk menghubungkan kedua-dua protokol, gunakan dual-stack, iaitu memberi mesin kedua-dua alamat. Rangkaian penyedia boleh juga menggunakan NAT64 dan DNS64, yang menterjemah sambungan melalui get laluan. Alamat seperti ::ffff:192.0.2.10 dalam log hanyalah alamat IPv4 yang ditulis dalam bentuk IPv6 di dalam satu mesin. Sambungan itu sebenarnya IPv4.
Bagaimana saya tahu talian rumah saya di belakang CGNAT?
Buka halaman status router dan catat alamat WAN. Kemudian jalankan curl -4 https://icanhazip.com pada komputer di rumah. Jika alamat WAN berada dalam julat 100.64.0.0/10, atau berbeza daripada alamat yang dicetak oleh curl, anda berada di belakang CGNAT. Ini bermaksud sambungan IPv4 masuk ke rumah anda tidak boleh berfungsi, walaupun dengan port forwarding.
Perlukah saya terbitkan rekod AAAA untuk domain saya?
Hanya jika pelayan anda benar-benar menjawab pada IPv6. Rekod AAAA menyuruh klien IPv6 menyambung ke alamat itu dahulu. Jika pelayan web hanya mendengar pada IPv4, sesetengah klien akan gagal atau menjadi perlahan. Pastikan sudo ss -tlnp menunjukkan soket [::], firewall ada peraturan IPv6, dan curl -6 -I dari mesin luar berjaya sebelum menerbitkan rekod itu.
Adakah VPS yang hanya ada IPv4 masih boleh dicapai oleh pengguna Malaysia?
Buat masa ini, ya. Rangkaian rumah dan mudah alih masih menyediakan laluan ke IPv4, sama ada melalui dual-stack, CGNAT atau NAT64. Tetapi laporan MCMC April 2025 menetapkan bahawa menjelang 31 Disember 2030, penyedia rangkaian mesti beroperasi dalam rangkaian IPv6 sahaja. Pelayan yang menjawab pada IPv4 dan IPv6 tidak bergantung kepada mekanisme terjemahan penyedia, jadi aktifkan IPv6 pada VPS anda jika penyedia menawarkannya.