Tôi đang cố gắng định cấu hình bộ định tuyến/tường lửa IPv6 dựa trên Linux DIY để thực hiện các thao tác sau:
- Lấy tiền tố /56 từ ISP trên giao diện "wan0"
- Cung cấp/64 địa chỉ cho các máy chủ trên "lan1"
- Cung cấp mạng con /60 cho bộ định tuyến hạ nguồn trên "lan2"
Lựa chọn ban đầu của tôi về phần mềm để thực hiện việc này là systemd-networkd, với hai mục đầu tiên thì dễ, nhưng mục thứ ba thì không được hỗ trợ (dường như, vui lòng sửa cho tôi nếu tôi sai).
Tôi chuyển sang sự kết hợp của dhcpcd, ISC DHCP và radvd (thông qua các gói được cung cấp trong Arch Linux, nhưng tôi cho rằng sẽ không có bất kỳ sự khác biệt có ý nghĩa nào đối với phần mềm ngược dòng).
dhcpcd đã được cấu hình để lấy /56 đó và gán địa chỉ:
ngu ngốc
kiên trì
nhà cung cấp
tùy chọn domain_name_servers, domain_name, domain_search
tùy chọn classless_static_routes
giao diện tùy chọn_mtu
tùy chọn host_name
tùy chọn rapid_commit
yêu cầu dhcp_server_identifier
lười biếng riêng tư
noipv4ll
đợi 6
chờ đợi 4
giao diện wan0
ipv6rs
ia_na 1
ia_pd 1/::/56 lan1/0/64 lan2/2/60
giao diện lan1
noipv6rs
địa chỉ ip tĩnh=172.21.0.1
giao diện lan2
địa chỉ ip tĩnh=172.22.0.1
Điều này dẫn đến việc các giao diện nhận địa chỉ dựa trên cấu hình của ISP và có vẻ đúng.
DHCP đã được cấu hình để quảng cáo thêm các địa chỉ và mạng con hạ nguồn:
thời gian thuê mặc định 2592000;
ưu tiên trọn đời 604800;
tùy chọn dhcp-thời gian gia hạn 3600;
tùy chọn dhcp-rebinding-time 7200;
cho phép cho thuê;
dhcpv6-lease-file-name "/var/lib/dhcp/dhcpd6.lease";
mạng con6 2XXX:YYYY:ZZZZ:dd00::/64 {
phạm vi6 2XXX:YYYY:ZZZZ:dd00::2 2XXX:YYYY:ZZZZ:dd00:ffff:ffff:ffff:ffff;
}
mạng con6 2XXX:YYYY:ZZZZ:dd20::/60 {
tiền tố6 2XXX:YYYY:ZZZZ:dd20:: 2XXX:YYYY:ZZZZ:dd20:: /60;
phạm vi6 2XXX:YYYY:ZZZZ:dd20::2 2XXX:YYYY:ZZZZ:dd20::ffff;
}
Điều này dường như cũng đúng, vì các phạm vi và mạng con đó cuối cùng được sử dụng bởi các máy chủ xuôi dòng trên "lan1" và bộ định tuyến xuôi dòng trên "lan2".
Ban đầu, thông tin trên được quảng cáo thông qua cấu hình radvd sau:
giao diện lan1 {
AdvManagedGắn cờ tắt;
AdvOtherConfigTắt cờ;
AdvSendAdvert on;
AdvDefaultPreference cao;
tiền tố ::/64 {
AdvOnLink bật;
AdvTự trị trên;
};
};
giao diện lan2 {
AdvManagedGắn cờ tắt;
AdvOtherConfigTắt cờ;
AdvSendAdvert on;
AdvDefaultPreference cao;
tuyến đường ::/60 {
};
};
Sau đó, tôi đã thay thế đoạn giao diện sau bằng một đoạn đơn giản hơn: giao diện lan2 {};
mà tôi nghĩ đã hoạt động tốt hơn (hoặc có thể giống nhau, nhưng dù sao cũng ngắn hơn nhiều).
Điều này dường như cũng đúng, theo nghĩa là các máy chủ và bộ định tuyến cần phải thực sự cấu hình các giao diện của chúng.
Tuy nhiên, tất cả cấu hình này không thực hiện được một điều quan trọng: các tuyến đường không được thiết lập chính xác. Trên bộ định tuyến DIY này, các tuyến trông giống như sau:
$ip -6r
::1 dev lo proto kernel metric 256 pref medium
2XXX:YYYY:ZZZZ:dd00::/64 dev lan1 proto dhcp metric 1003 pref medium
2XXX:YYYY:ZZZZ:dd20::/60 dev lan2 proto dhcp metric 1004 pref medium
không thể truy cập được 2XXX:YYYY:ZZZZ:dd00::/56 dev lo proto dhcp metric 1001 pref medium
fe80::/64 dev lan2 proto kernel metric 256 pref medium
fe80::/64 dev wan0 proto kernel metric 256 pref medium
fe80::/64 dev lan1 proto kernel metric 256 pref medium
mặc định qua fe80::AAAA:BBBB:CCCC:DDDD dev wan0 proto ra metric 1002 mtu 1500 pref medium
Nếu tôi thêm thủ công (với số liệu nhỏ hơn) hoặc thay thế tuyến đường có liên quan cho mạng con/60, như vậy: ip -6 r thay thế 2XXX:YYYY:ZZZZ:dd20::/60 qua fe80::DOWN:STRE:AMRO:UTer dev lan2
và ngược lại trên bộ định tuyến xuôi dòng, với địa chỉ cục bộ liên kết của bộ định tuyến DIY, mọi thứ bắt đầu hoạt động.
Những câu hỏi của tôi:
- Làm cách nào để định cấu hình bộ định tuyến DIY của tôi để tự động thực hiện bước cuối cùng này? (Tôi đã cố gắng chọc các giá trị khác nhau tại
chấp_ra
, accept_ra_defrtr
và bộ định tuyến_gợi ý
trong sysctl net.ipv6.conf
Dưới tất cả các
và các phần giao diện riêng lẻ, nhưng không thấy sự khác biệt trong hành vi.)
- Tôi có thể sử dụng một số phần mềm (mã nguồn mở) khác trên Linux để đạt được những gì tôi muốn, theo cách hợp lý hơn không? Ý tôi là khi ISP của tôi phân bổ cho tôi một tiền tố /56 khác, tôi sẽ cần thay đổi tệp cấu hình DHCP để sử dụng tiền tố đó thay thế. Tôi có thể (và sẽ) tạo một tập lệnh để giải quyết vấn đề này, nếu không có phần mềm hỗ trợ trường hợp sử dụng của tôi, nhưng việc phải làm như vậy có vẻ khá mong manh.