Địa chỉ IPv6, tiền tố động phần cục bộ tĩnh


10

Bộ định tuyến trên mạng của tôi cung cấp tiền tố IPv6 được chỉ định bởi ISP của tôi. Tiền tố này là động nhưng "khá dính".

Tôi muốn các máy của mình tự động nhận tiền tố được quảng cáo trong RA, nhưng kết hợp nó với một phần cục bộ do người dùng chỉ định thay vì tạo ngẫu nhiên hoặc dựa trên địa chỉ MAC. Có cách nào dễ dàng để làm điều đó?


1
Tôi chưa thấy bất kỳ hệ điều hành nào cho phép bạn làm điều này :(
Sander Steffann

@SanderSteffann Chưa bao giờ sử dụng Linux?
Michael Hampton

1
@Michael Tôi chưa bao giờ thấy một hệ điều hành cho phép bạn định cấu hình mã thông báo IID. Về mặt kỹ thuật, hạt nhân có thể làm điều đó, nhưng không có hệ điều hành nào (như trong bản phân phối) hỗ trợ nó :(
Sander Steffann

Câu trả lời:


11

Có hai cách để làm điều này. Một là cách dễ dàng và một là cách khó.

Cách dễ dàng là chạy máy chủ DHCPv6 trên mạng của bạn và tự gán địa chỉ máy chủ cho từng thiết bị. Hoặc để máy chủ chọn phần máy chủ; các máy chủ DHCPv6 mà tôi đã thấy sẽ giữ nguyên phần máy chủ ngay cả khi tiền tố thay đổi.

Cách khó là sử dụng ip tokenđể đặt định danh giao diện mã thông báo. Điều này được mô tả là:

Hỗ trợ định danh giao diện mã thông báo IPv6 được sử dụng để gán các địa chỉ phần máy chủ nổi tiếng cho các nút trong khi vẫn có được tiền tố mạng toàn cầu từ các quảng cáo Bộ định tuyến. Mục tiêu chính cho các mã định danh được mã hóa là các nền tảng máy chủ nơi các địa chỉ thường được cấu hình thủ công, thay vì sử dụng DHCPv6 hoặc SLAAC. Bằng cách sử dụng mã định danh được mã hóa, máy chủ vẫn có thể xác định tiền tố mạng của họ bằng cách sử dụng SLAAC, nhưng dễ dàng hơn được tự động đánh số lại nếu tiền tố mạng của họ thay đổi. Mã định danh IPv6 được mã hóa được mô tả trong dự thảo: <raft-chown-6man-tokenised-ipv6-định danh-02>.

Lý do đây là một cách khó khăn là trong khi Linux bao gồm chức năng này, không có phân phối Linux nào tôi biết bao gồm hỗ trợ để duy trì cấu hình như vậy và áp dụng nó khi khởi động, như chúng làm cho các địa chỉ được cấu hình thủ công hoặc DHCP. Vì vậy, nó có thể sẽ không làm việc rất tốt cho bạn, cho đến khi một số phân phối làm như vậy. Lưu ý rằng hiện có thể định cấu hình mã thông báo IPv6 trong NetworkManager và systemd-networkd; câu trả lời gần đây hơn có hướng dẫn cấu hình cụ thể.


Cuối cùng, nếu ISP của bạn thỉnh thoảng thay đổi tiền tố của bạn, hãy xem xét sử dụng Địa chỉ cục bộ duy nhất trong mạng của bạn. Bằng cách này, tất cả các thiết bị của bạn sẽ luôn có một địa chỉ sẽ không bao giờ thay đổi, chúng có thể nói chuyện với nhau. Một số bộ định tuyến gia đình / SOHO hỗ trợ IPv6 (như OpenWrt) có tùy chọn bật ULA trên toàn bộ mạng gia đình; nếu có nhiều bộ định tuyến trong nhà, điều này sẽ được kích hoạt trên bộ định tuyến kết nối với ISP.


Vấn đề thực sự đặt ra câu hỏi là bộ định tuyến ISP của tôi gửi RA với thời gian tồn tại ngắn. Điều này gây ra vấn đề lớn với địa chỉ riêng tư. OTOH Tôi không thích ý tưởng tiết lộ địa chỉ MAC của mình ra thế giới.
cắm vào

Một phần cục bộ tĩnh tránh các vấn đề với địa chỉ riêng tư mà không tiết lộ địa chỉ MAC của tôi, cảm ơn.
cắm vào

Bạn có biết cách thêm nhiều mã thông báo vào một giao diện để đặt nhiều địa chỉ IPv6 "tĩnh tĩnh" không?
wedi

@wedi Linux chỉ hỗ trợ một mã thông báo trên mỗi giao diện. Mã thông báo IPv6 có thể không phải là giải pháp cho vấn đề của bạn, bất kể đó là gì.
Michael Hampton

6

Michael đã làm một bản tóm tắt rất hay và mẹo gần đây của plugwash là cách tốt nhất tôi có thể tìm thấy sau khi săn lùng vài giờ cho giải pháp CentOS 7 / RHEL (cũng là systemd và quản lý mạng). Sau khi làm quen với nmcli (tôi chủ yếu vẫn sử dụng ifcfg và ip) - tôi có thể áp dụng thành công.

Nhưng đào sâu hơn theo https://developer.gnome.org/NetworkManager/urdy/sinstall-ipv6.html NetworkManager hỗ trợ trực tiếp các định danh giao diện được mã hóa IPv6 làm tài sản (từ phiên bản 1.4 tháng 8 năm 2016 http://news.softpedia.com/ news / networkmanager-1-4-thêm-hỗ trợ-cho-thiết lập-ipv6-tokenized-interface-định danh-507601.shtml ).

Vì vậy, bạn không cần đặt cài đặt IPv6 của trình quản lý mạng để bỏ qua nhưng bạn nên đặt cài đặt thành

nmcli connection modify eth0 ipv6.method "auto" # if not already
nmcli connection modify eth0 ipv6.addr-gen-mode "eui64" # use interface token
nmcli connection modify eth0 ipv6.token "::2"

sẽ ghi IPV6_TOKEN=::2vào / etc / sysconfig / network-scripts / ifcfg-eth0 để tồn tại khi khởi động lại. Để ngay lập tức áp dụng này khởi động lại giao diện bằng cách

nmcli connection up id eth0  # restart

3

Cảm ơn Michael đã xác nhận rằng Linux đã hỗ trợ tính năng này và chỉ vào lệnh cấp thấp. Câu trả lời này bao gồm cách làm cho nó hoạt động trên thực tế trên máy tính để bàn Debian (với systemd và trình quản lý mạng).

Trước tiên, chỉnh sửa kết nối trong trình quản lý mạng và đặt cài đặt IPv6 thành bỏ qua.

Bây giờ hãy tạo một tập tin /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken. Các tập tin nên được sở hữu bởi root, quyền 755 và với các nội dung sau.

#!/bin/sh
ip token set ::2 dev eth0

Thay eth0 bằng thiết bị bạn muốn và :: 2 bằng hậu tố bạn muốn.


2

Trong Linux, bạn có thể sử dụng systemd-network.

Chỉ cần tạo một .networktập tin dưới /etc/systemd/network/somename.networkđây:

[Match]
Name=e*

[Network]
DHCP=yes
IPv6Token=::1

thay vì e*khớp với tất cả các giao diện bắt đầu bằng e, bạn có thể nhập tên giao diện đầy đủ. Điều này cho phép DHCP {v4, v6} và sử dụng ::1làm hậu tố. Bạn có thể chọn bất kỳ địa chỉ IPv6 nào, nhưng 64 bit đầu tiên phải được đặt thành không.

Sau khi kích hoạt và bắt đầu systemd-networkd.service.

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.