IPv6 주소 지정, 동적 접두사 정적 로컬 부분

IPv6 주소 지정, 동적 접두사 정적 로컬 부분

내 네트워크의 라우터는 ISP가 할당한 IPv6 접두사를 배포합니다. 이 접두사는 동적이지만 "매우 끈적합니다".

내 컴퓨터가 RA에 광고된 접두사를 자동으로 가져오되 무작위 접두사를 생성하거나 MAC 주소를 기반으로 하는 대신 이를 사용자가 지정한 로컬 부분과 결합하기를 원합니다. 이를 수행하는 쉬운 방법이 있습니까?

답변1

이를 수행하는 방법에는 두 가지가 있습니다. 하나는 쉬운 길이고 하나는 어려운 길이다.

가장 간단한 방법은 네트워크에서 DHCPv6 서버를 실행하고 각 장치에 호스트 주소를 직접 할당하는 것입니다. 또는 서버가 호스트 부분을 선택하도록 하십시오. 제가 본 DHCPv6 서버는 접두사가 변경되더라도 동일한 호스트 부분을 유지합니다.

어려운 방법은 사용하는 것입니다ip token토큰화된 인터페이스 식별자를 설정합니다. 이는 다음과 같이 설명됩니다.

IPv6 토큰화된 인터페이스 식별자 지원은 잘 알려진 호스트 부분 주소를 노드에 할당하는 동시에 라우터 광고에서 글로벌 네트워크 접두사를 얻는 데 사용됩니다. 토큰화된 식별자의 기본 대상은 DHCPv6 또는 SLAAC를 사용하는 대신 일반적으로 주소를 수동으로 구성하는 서버 플랫폼입니다. 토큰화된 식별자를 사용하면 호스트는 SLAAC를 사용하여 네트워크 접두사를 계속 확인할 수 있지만 네트워크 접두사가 변경되면 자동으로 번호가 더 쉽게 다시 매겨집니다. 토큰화된 IPv6 식별자는 초안: <draft-chown-6man-tokenized-ipv6-identifiers-02>에 설명되어 있습니다.

이것이 어려운 이유는 Linux에 이 기능이 포함되어 있지만 내가 아는 한 Linux 배포판에는 수동으로 또는 DHCP 구성 주소에 대해 수행하는 것처럼 이러한 구성을 지속성으로 만들고 부팅 시 적용하는 지원이 포함되어 있지 않기 때문입니다. 따라서 일부 배포판에서 이를 수행할 때까지는 제대로 작동하지 않을 수 있습니다. 이제 NetworkManager 및 systemd-networkd에서 IPv6 토큰을 구성할 수 있습니다. 최근 답변에는 특정 구성 지침이 있습니다.


마지막으로 ISP가 가끔 접두사를 변경하는 경우 네트워크에서 고유한 로컬 주소를 사용하는 것이 좋습니다. 이렇게 하면 모든 장치가 항상 변경되지 않는 주소를 갖게 되며 이를 통해 서로 통신할 수 있습니다. 일부 IPv6 지원 홈/SOHO 라우터(예: OpenWrt)에는 전체 홈 네트워크에서 ULA를 활성화하는 옵션이 있습니다. 집에 여러 라우터가 있는 경우 ISP에 연결된 라우터에서 이 기능을 활성화해야 합니다.

답변2

Michael은 매우 좋은 요약을 제공했으며, Plugwash의 최근 팁은 CentOS 7/RHEL(시스템 및 네트워크 관리자)에 대한 솔루션을 몇 시간 동안 검색한 후에 찾을 수 있는 최고입니다. nmcli에 익숙해지면(저는 주로 ifcfg와 ip를 사용하고 있습니다) 성공적으로 적용할 수 있습니다.

하지만 더 깊이 파고들면https://developer.gnome.org/NetworkManager/stable/settings-ipv6.htmlNetworkManager는 IPv6 토큰화된 인터페이스 식별자를 속성으로 직접 지원합니다(2016년 8월 버전 1.4 기준).http://news.softpedia.com/news/networkmanager-1-4-adds-support-for-setting-ipv6-tokenized-interface-identifiers-507601.shtml).

따라서 Network Manager IPv6 설정을 무시로 설정할 필요는 없지만 설정을 무시로 설정해야 합니다.

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"

IPV6_TOKEN=::2재부팅 후에도 유지되도록 /etc/sysconfig/network-scripts/ifcfg-eth0 에 기록됩니다 . 지금 이 기능을 적용하려면 인터페이스를 다시 시작하세요.

nmcli connection up id eth0  # restart

답변3

Linux가 이 기능을 지원하는지 확인하고 하위 수준 명령을 지적한 Michael에게 감사드립니다. 이 답변은 Debian Stretch 데스크톱에서 실제로 작동하게 만드는 방법을 다룹니다(systemd 및 네트워크 관리자 사용).

먼저 Network Manager에서 연결을 편집하고 IPv6 설정을 무시로 설정합니다.

이제 /etc/NetworkManager/dispatcher.d/pre-up.d/iptoken 파일을 생성합니다. 파일은 루트가 소유하고 권한 755를 가지며 다음 콘텐츠를 포함해야 합니다.

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

eth0을 원하는 장치로 바꾸고 ::2를 원하는 접미사로 바꾸세요.

답변4

Linux에서는 systemd-network.

다음 위치에 .network파일을 생성하세요 /etc/systemd/network/somename.network.

[Match]
Name=e*

[Network]
DHCP=yes
IPv6Token=::1

로 시작하는 모든 인터페이스를 일치시키는 대신 전체 인터페이스 이름을 입력할 수 있습니다 e*. e이렇게 하면 DHCP{v4,v6}가 활성화되고 이를 ::1접미사로 사용합니다. 모든 IPv6 주소를 선택할 수 있지만 처음 64비트는 0으로 설정되어야 합니다.

그런 다음 활성화하고 시작하십시오 systemd-networkd.service.

관련 정보