Bagaimana cara menonaktifkan IPv6-mapped IPv6?


17

Di kotak Linux saya, saya memiliki berbagai daemon yang dapat mengikat semua antarmuka yang mendukung IPv6 ::. Ketika mereka melakukannya, Linux mengirimkan permintaan IPv4 ke daemon yang dipetakan sebagai, misalnya ::ffff:198.51.100.37,.

Saya sebaliknya ingin koneksi IPv4 ditolak dan hanya koneksi IPv6 yang diterima ketika daemon mengikat ::. Untuk menerima koneksi IPv4, saya ingin daemon harus secara eksplisit mengikat 0.0.0.0(juga ::).

Dengan kata lain, saya ingin menjalankan layanan secara eksklusif pada IPv6, dan bukan pada IPv4.

Apakah ada cara untuk menyelesaikan ini?

Jawaban:


22

Ini dikendalikan oleh net.ipv6.bindv6onlysysctl. Tambahkan berikut ini ke /etc/sysctl.confdan jalankan sudo sysctl -puntuk melakukan perubahan.

net.ipv6.bindv6only=1

Aplikasi juga dapat secara eksplisit hanya mengikat ke alamat IPv6 alih-alih mengubah ini secara global, misalnya, nginx memiliki ipv6onlyopsi untuk listendirektif. Ini sesuai dengan IPV6_V6ONLYopsi untuk setsockopt().


Untungnya saya menemukan bahwa aplikasi (dalam hal ini, OpenSSH) sudah menetapkan IPV6_V6ONLY pada soket ketika saya atur ListenAddress ::jadi saya tidak perlu menggunakan sysctl (dan mengkonfigurasi ulang semua yang lain).
Michael Hampton
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.