업스트림 DSL 게이트웨이를 향해 Linux ipv6 라우터용 radvd를 구성하는 방법

업스트림 DSL 게이트웨이를 향해 Linux ipv6 라우터용 radvd를 구성하는 방법

홈 네트워크에서 ipv6도 지원하도록 홈 Linux 라우터를 얻으려고 합니다.

공용 인터넷에 대한 GW 역할을 하는 NVG599 DSL 라우터가 있고 두 개의 인터페이스가 있는 Linux 라우터가 있습니다. 홈 네트워크를 향한 eth0과 DSL 라우터를 향한 eth1입니다.

HOME 네트워크 <------eth0------> LinuxRouter <------eth1------>DSLrouter -->>>>>

DSL 라우터는 내 ISP의 /64 네트워크 접두사(2001:0:0:1234::/64라고 가정)로 구성되어 있으며 DSL 라우터의 ipv6 전역 주소는 2001:0:0:1234::1입니다. . 홈 LAN을 향해 eth0에 동일한 /64 네트워크 접두어를 알리기 위해 radvd를 사용하여 Linux 라우터를 설정했으며 실제로 LAN의 호스트가 IP 주소를 자동 구성할 수 있는 것을 확인했습니다. 또한 광고에는 Linux 라우터가 ::/0의 기본 라우터로 나열되어 있으며 패킷을 DSL 라우터로 보내도록 전달이 설정되어 있습니다.

내가 가진 문제는 DSL 라우터가 인터넷에서 인바운드 패킷을 받을 때 eth1에서 이웃 요청 패킷을 보내고 해당 이웃 요청이 Linux 라우터의 eth1 -> eth0에서 전달되지 않는다는 것입니다. 나는 DSL 라우터가 홈 네트워크에 직접 연결되어 있다고 생각하기 때문에 이런 일이 발생한다고 생각합니다(중간에 Linux 라우터가 없는 홈 네트워크의 99%에서 일반적으로 발생하는 방식입니다).

그것을 알아내려고 2일을 보낸 후에, 지금까지의 대답은 나를 피했습니다. 나는 radvd를 사용하여 DSL 라우터에 라우터 광고를 보내 Linux 라우터를 통해 /64 접두사에 대한 모든 패킷을 라우팅하도록 지시하는 방법이 있기를 바라고 있습니다. 현재 Linux 라우터에서 보내는 라우터 광고는 다음과 같이 DSL 라우터 쪽으로 전송되는 /64 접두사로 구성됩니다.

interface eth1
{
    AdvSendAdvert on;
    MinRtrAdvInterval 3;
    MaxRtrAdvInterval 10;
    route 2001:0:0:1234::/64 {
    };

};

나는 이것이 DSL 라우터가 모든 패킷을 네트워크로 전달하도록 하는 데 충분하다고 생각하지만 여전히 이웃 요청이 표시됩니다.

DSL 라우터에는 "기본 서버"를 설정할 수 있는 기능이 있는 IP 통과 설정이 있지만 이는 IPv4에만 적용되는 것 같습니다. DSL 라우터가 내 RA를 따르지 않는다고 가정하면 내 Linux 라우터에서 'xorb'를 사용하여 ipv6 멀티캐스트 전달을 설정할 수 있지만 다른 옵션이 있는지 궁금합니다.

답변1

내가 가진 문제는 DSL 라우터가 인터넷에서 인바운드 패킷을 받을 때 eth1에서 이웃 요청 패킷을 보내고 해당 이웃 요청이 Linux 라우터의 eth1 -> eth0에서 전달되지 않는다는 것입니다.

그것은 정상입니다. 이웃 요청은 ARP 쿼리와 동일하게 작동합니다. 즉, IP 주소를 MAC 주소로 변환하므로 동일한 브로드캐스트 도메인 내에서만 의미가 있습니다. 그것은 만든다말이되지 않는다라우터가 이를 전달하도록 합니다.

(어떤 상황에서는 라우터가대리마지막에 설명한 대로 실행하세요. 하지만... 계획 C로 남겨두세요.)

나는 DSL 라우터가 홈 네트워크에 직접 연결되어 있다고 생각하기 때문에 이런 일이 발생한다고 생각합니다(중간에 Linux 라우터가 없는 홈 네트워크의 99%에서 일반적으로 발생하는 방식입니다).

응, 넌 절대 안 돼말했다그렇지 않으면.

그래서 당신의 현재 상황은같은IP 서브넷은 두 개의 서로 다른 네트워크에서 사용되고 있으며 Linux 라우터가 브리지로 작동할 것으로 기대하고 있습니다. 이는 라우터와 거의 정반대입니다.

(혼란스러운 부분이 IPv6인 경우 전체 설정을 IPv4 용어로 생각해 보십시오. 두 가지 모두 라우팅이 거의 동일하고 ND는 대부분 ARP와 동일합니다. 따라서 동일한 192.168.1.0 서브넷을 사용하지 않는 경우 v4...)


최선의 조치는 다음과 같습니다.을 얻다두번째/64,그리고 사용저것Linux 라우터의 eth1 네트워크용. (DSL 라우터가 DHCPv6-PD를 통해 접두사를 얻는 경우 두 번째 라우터를 요청하도록 속일 수 있습니다.) 그러나 차이점은 두 번째 /64가 인터페이스에서 직접 사용되지 않고 대신 사용된다는 것입니다.라우팅됨Linux 라우터의 주소로 향합니다.

예를 들어:

  • DSL 라우터의 WAN 인터페이스에는 2001:db8:0:0:a:b:c:d가 있습니다.
  • DSL 라우터는 ISP로부터 2001:db8:10:0::/64를 획득하고 LAN 인터페이스에서 2001:db8:10:0::1/64를 자체 할당하고 이에 대한 라우터 광고를 보냅니다.
  • Linux 라우터는 RA를 기반으로 eth1에서 2001:db8:10:0:x:y:z:t를 자동 구성합니다.
  • Linux 라우터는 ISP로부터 2001:db8:10:1::/64를 획득하고(어쨌든) eth0 인터페이스에서 2001:db8:10:1::1/64를 자체 할당하고 radvd는 이에 대한 라우터 광고를 보냅니다.~ 아니다첫 번째 서브넷의 경우.
  • DSL 라우터에는 두 번째 서브넷의 모든 트래픽이 Linux 라우터를 향해 전달되도록 "2001:db8:10:1::/64 via 2001:db8:10:0:x:y:z:t"와 같은 경로가 필요합니다. .

(매우 명확하지 않은 예에 대해 사과드립니다.)

때때로 ISP는 전체 /60 또는 심지어 /56을 사용자에게 위임하고 모든 것을 DSL 라우터로 라우팅합니다. 이 경우 DHCPV6-PD 매직 없이 두 번째 서브넷을 설정할 수 있습니다. 실제로 ISP에 의존하고 CPE에 의존하기 때문에 여기서는 좋은 "일반적인" 답변을 제공할 수 없습니다.


두 번째 /64 접두사를 얻는 것이 불가능한 경우 가능한 다른 옵션은 다음과 같습니다.

  • 라우팅 기능 없이 Linux 시스템을 순수 브리지로 전환합니다.

  • 추가 /64를 얻으려면 터널 공급자(또는 6to4)와 같은 다른 소스를 사용하십시오. 기존 터널 서비스는 아래 설명된 해킹보다 훨씬 더 안정적으로 작동합니다(일부 추가 대기 시간 제외).

  • DSL 라우터가 /64만 획득하고 LAN용으로 구성하지 않도록 합니다. (라우터의 유연성에 따라 다릅니다.) 대신 Linux 시스템의 eth0 링크 로컬 주소를 통해 해당 /64에 대한 경로를 다시 설정하고 마찬가지로 DSL 라우터의 eth0 링크 로컬 주소를 통해 Linux 시스템에서 ::/0에 대한 경로를 설정합니다. LAN 링크-로컬 주소. 결과적으로 /64는 두 번째 서브넷에서만 사용되며 첫 번째 서브넷에는 공개 접두사가 전혀 없습니다.

  • 현재 설정을 계속하되 Neighbor Discovery 프록시를 수행하려면 'ndppd'를 설치하십시오. (아니요. ND 패킷에는 링크-로컬 소스 주소가 있는 경우가 많기 때문에 멀티캐스트 전달은 작동하지 않습니다.) 주의하세요. 상황이 정말 혼란스러울 수 있습니다.

  • 두 번째 LAN에 개인(ULA) 주소를 사용하고 Linux 라우터에서 일대다 NAT(가장)를 활성화합니다. 이 과정에서 IPv6의 유용성이 대부분 손실됩니다. (예, 공식적으로 NAT는 IPv6에 존재하지 않지만 Linux netfilter/iptables가 NAT를 포기하고 구현하는 것을 막지는 못했습니다.)

관련 정보