Làm cách nào để tắt IPv6 được ánh xạ IPv4?


17

Trên hộp Linux của tôi, tôi có nhiều trình tiện ích khác nhau có thể liên kết với tất cả các giao diện hỗ trợ IPv6 trên ::. Khi họ làm như vậy, Linux sẽ gửi các yêu cầu IPv4 đến daemon đó được ánh xạ như, ví dụ , ::ffff:198.51.100.37.

Thay vào đó, tôi muốn các kết nối IPv4 bị từ chối và chỉ các kết nối IPv6 được chấp nhận khi một daemon liên kết với ::. Để nhận được kết nối IPv4, tôi muốn daemon phải liên kết rõ ràng với 0.0.0.0(cũng như ::).

Nói cách khác, tôi muốn chạy một dịch vụ dành riêng cho IPv6 chứ không phải trên IPv4.

Có cách nào để hoàn thành việc này?

Câu trả lời:


22

Điều này được kiểm soát bởi net.ipv6.bindv6onlysysctl. Thêm vào sau /etc/sysctl.confvà chạy sudo sysctl -pđể thực hiện thay đổi.

net.ipv6.bindv6only=1

Các ứng dụng cũng chỉ có thể liên kết rõ ràng với địa chỉ IPv6 thay vì thay đổi toàn cầu này, ví dụ, nginx có ipv6onlytùy chọn cho lệnh listennày. Điều này tương ứng với IPV6_V6ONLYtùy chọn để setsockopt().


May mắn thay, tôi thấy rằng ứng dụng (trong trường hợp này là OpenSSH) đã cài đặt IPV6_V6ONLY trên ổ cắm khi tôi đặt ListenAddress ::nên tôi không cần phải sử dụng sysctl (và cấu hình lại mọi thứ khác).
Michael Hampton
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.