Bagaimana sepenuhnya, secara dinamis menonaktifkan tumpukan IPv4 dari Linux?

17

Bagaimana saya bisa menonaktifkan tumpukan IPv4 dari Linux? Saya ingin melakukan itu secara dinamis , yaitu terkadang saya ingin diaktifkan dan terkadang saya hanya ingin tumpukan IPv6 . Apakah ada cara portabel untuk melakukan itu? Jika Anda tahu bagaimana melakukannya dalam distribusi apa pun, itu juga akan banyak membantu saya.

Aldebaran
sumber
2
@kasperd Tidak ada yang berubah sejak 2011.
Michael Hampton

Jawaban:

21

Nah setelah sedikit obrolan di IRC, pendapat umum adalah bahwa kernel linux berbagi beberapa kode antara ipv4 dan ipv6, dan itu mungkin membuat sepenuhnya menonaktifkan ipv4 sepenuhnya mustahil. Anda dapat mencoba mengkompilasi kernel tanpa bagian-bagian ipv4 tetapi ipv6 mungkin tidak dapat dikompilasi dalam kasus ini (tetapi tidak ada yang menghalangi Anda untuk mencoba!).

Anda dapat menghapus alamat ipv4 dari antarmuka, AFAIK, tapi saya rasa saat ini tidak mungkin untuk sepenuhnya menonaktifkan ipv4.

EDIT: Setelah pemeriksaan cepat make menuconfigpada kernel 2.6.36 saya tidak bisa menemukan cara menonaktifkan ipv4 tanpa menonaktifkan seluruh tumpukan TCP / IP (dan, ipv6).

coredump
sumber
4

Jika ini untuk pengembang, maka "interposisi perpustakaan" dapat digunakan, dengan LD_PRELOAD beberapa pustaka terawat dengan fungsi rintisan yang hanya mengembalikan kesalahan (atau yang memanggil yang asli tergantung pada hari dalam seminggu atau kriteria eksternal lainnya).

ramruma
sumber
2

Saya rasa tidak mungkin untuk menonaktifkan IPv4 sepenuhnya, tetapi tergantung pada tujuan Anda, menjatuhkan semua lalu lintas IPv4 iptablesmungkin cukup, bukan?

Sesuatu seperti ini seharusnya bekerja. Saya belum mengujinya pada mesin apa pun, karena saya mengaksesnya melalui IPv4.

sudo iptables -I INPUT -j DROP
sudo iptables -O OUTPUT -j DROP
Antoine Albertelli
sumber
1
Ini akan memblokir lalu lintas, yang kadang-kadang mungkin berguna. tetapi itu tidak akan menghentikan program dari mengikat soket IPv4. Ini diperlukan untuk sepenuhnya menonaktifkan IPv4.
Michael Hampton
Apa yang saya lakukan pada mesin di mana saya perlu menjalankan IPv6-only adalah untuk menonaktifkan klien DHCP /etc/network/interfaces.d. Ini tidak sama dengan menonaktifkan IPv4 karena systemd-resolvedmasih mendengarkan 127.0.0.53:53. Tetapi itu sudah cukup untuk memenuhi kebutuhan saya yang mendesak dan lebih disukai untuk dipusingkan iptables.
kasperd
1

Sebagian besar Anda harus mengkompilasi ulang kernel Anda tanpa modul ipv4. fedora

Anda tidak dapat menonaktifkannya sepenuhnya karena sistem menggunakan antarmuka loopback 127.0.0.1.
Tetapi Anda dapat menonaktifkan beberapa fungsi ipv4 dengan perintah if-cfg.

MealstroM
sumber