Linux: Chặn IPv6 cho các ứng dụng / tên máy chủ nhất định


8

Vấn đề và mục tiêu

Chúng tôi không nhận được IPv6 từ ISP của chúng tôi do đó tôi có một đường hầm IPv6 hoạt động tốt nhưng tất nhiên là không nhanh lắm. Và không thực sự đáng tin cậy. Tôi muốn có sẵn IPv6 "chỉ trong trường hợp" nhưng tôi muốn một số máy chủ (tên miền) nhất định chỉ được kết nối với IPv4.

Giao thức mặc định

Dường như với tôi rằng tất cả các ứng dụng đều thử IPv6 trước tiên; đây có lẽ là một thiết lập glibc. Tôi sẽ ổn nếu mặc định này sẽ được đảo ngược (cho tất cả các ứng dụng).

Bộ lọc mạng

Có thể chặn các địa chỉ / mạng IPv6 bằng Netfilter nhưng có hai vấn đề:

  1. Điều này có gây ra sự chậm trễ vì ứng dụng chờ thời gian chờ IPv6 trước khi thử dùng IPv4 không?
  2. Một số miền dường như được trộn lẫn rằng nó trông giống như sự hỗn loạn. Tách google.com và youtube.com có ​​vẻ như là điều bạn không muốn làm nếu bạn có thể tránh nó.

Tôi chỉ lưu ý rằng trang man cho ip routebiết loại định tuyến unreachable:

Người gửi địa phương nhận được lỗi EHOSTUNREACH.

Điều tương tự có xảy ra với Netfilter DROPs hay RE DỰ ÁN không? Một lỗi như vậy sẽ không gây ra sự chậm trễ có liên quan.

Lọc DNS

Một giải pháp khác (khá dễ dàng nếu có thể) là lọc các bản ghi AAAA cho một số miền nhất định. Nếu điều đó không (dễ dàng) có thể: Có thể kết nối máy chủ DNS và Netfilter để tôi biết "địa chỉ IP X thuộc miền Y" để tôi có thể thêm nó vào Netfilter không? Bất cứ điều gì thanh lịch hơn đăng nhập tất cả mọi thứ và greping nhật ký?

Con đường để đi?

Những khả năng (khác) là có và dễ nhất là gì?


2
Bạn thực sự sẽ không chú ý với bất cứ điều gì thực hiện Happy Eyeballs ( RFC 6555 ), chẳng hạn như các trình duyệt web hiện đại.
Michael Hampton

DNS không thực sự được thiết kế để hoạt động theo cách đó. Trong mọi trường hợp, bạn có thể thử một dịch vụ đường hầm đáng tin cậy hơn.
Michael Hampton

Câu trả lời:


16

Bạn có thể kiểm soát lựa chọn địa chỉ với /etc/gai.conf. Tệp cấu hình được ghi lại tốt và đã chứa các giá trị mặc định, vì vậy bạn có thể bắt đầu điều chỉnh.

Mặc định thú vị ở đây là:

label  ::1/128       0
label  ::/0          1
label  2002::/16     2
label ::/96          3
label ::ffff:0:0/96  4
precedence  ::1/128       50
precedence  ::/0          40
precedence  2002::/16     30
precedence ::/96          20
precedence ::ffff:0:0/96  10

Dòng cuối cùng ưu tiên thấp nhất cho tất cả các địa chỉ IPv4.

Nếu bạn muốn ưu tiên cao hơn cho tất cả IPv4, bạn có thể đổi nó thành:

precedence ::ffff:0:0/96  100

Nếu bạn chỉ muốn ưu tiên cao hơn cho các địa chỉ hoặc khối cụ thể của IPv4, bạn cũng có thể chỉ định chúng. Hãy nhớ rằng bạn phải sử dụng IPv6 được ánh xạ IPv4 ở dạng hex.

Vì vậy, để ưu tiên cho 203.0.113.0/24 trên tất cả IPv6, bạn sẽ thêm:

label ::ffff:cb00:7100/120 5
precedence ::ffff:cb00:7100/120 100

Khởi động lại các ứng dụng đang chạy để chúng nhận các thay đổi bạn thực hiện.


Trên các hệ thống dẫn xuất Debian, /etc/gai.confđã có sẵn. Trên các hệ thống có nguồn gốc Red Hat, nó không có, nhưng một tệp mẫu được đặt tại /usr/share/doc/glibc-common-*/gai.conf; chỉ cần sao chép nó vào /etc.


Chưa bao giờ nghe nói về điều đó trước; gợi ý tuyệt vời mặc dù nó không phải là một giải pháp DNS.
Hauke ​​Laging

Bạn đã yêu cầu phương pháp đơn giản nhất ... :)
Michael Hampton

4

OK, đây là một câu trả lời hoàn toàn khác.

Đặt các máy chủ vi phạm có kết nối IPv6 xảo quyệt /etc/hostsvới địa chỉ IPv4 tương ứng của chúng.

Ví dụ:

199.7.53.74 whois.verisign-grs.com

Hãy nhớ xóa chúng khi chúng (trong trường hợp này) hoặc kết nối IPv6 của bạn được cải thiện.


1
Điều đó sẽ dễ dàng cho một máy chủ duy nhất có một IP. Như tôi đã đề cập, đây là về **. Youtube.com. Do đó rất nhiều tên máy chủ bị ảnh hưởng. Về lý thuyết, điều này sẽ dễ dàng với DNS: "Chặn các bản ghi AAAA cho mọi thứ trong .youtube.com". Cách tiếp cận của bạn sẽ là đặt tất cả các địa chỉ này (có thể chúng không thay đổi cấu trúc tên miền cũng như IP của chúng thường xuyên và sẽ ổn khi kiểm tra tập lệnh mỗi ngày) /etc/hosts. Nếu không có ai nghĩ ra "Phần mềm máy chủ DNS XY có thể lọc theo cách này !!" Có lẽ tôi sẽ kết thúc với điều đó.
Hauke ​​Laging

Tôi quen thuộc với hầu hết các gói máy chủ DNS đã biết và không ai làm những gì bạn muốn, dễ dàng hoặc hoàn toàn. Bây giờ nếu bạn muốn viết mã tùy chỉnh của riêng bạn ... nhưng tất nhiên giải pháp thực sự là cải thiện kết nối IPv6 của bạn. Hãy thử một nhà môi giới đường hầm khác nhau?
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.