IPv6에 대해 rp_filter 완화(#2) 모드를 활성화합니다.

IPv6에 대해 rp_filter 완화(#2) 모드를 활성화합니다.

누구든지 해결책이 있습니까?역방향 경로 필터링(느슨한 모드에서) 다음에도 작동합니다.IPv6IPv4뿐만 아니라?

내 설정은 머신 1이 머신 2에 직접 연결되고 머신 1도 외부 네트워크에 연결된다는 것입니다.

대상 트래픽은 다음과 같습니다. 외부 네트워크의 클라이언트는 machine1에 요청을 보낸 다음 machine1이 요청을 machine2에 전달합니다.

명백한 질문:패킷이 machine1에 의해 처리되면 machine2에 연결된 포트로 전달되지만 클라이언트의 소스 IP가 사용됩니다. 이는 일반적으로 IP를 스푸핑하는 것으로 간주됩니다. 하지만 이것이 바로 rp_filter의 용도입니다. 그렇죠?

일반적으로 machine1에서는 이 작업을 수행합니다(IPv4의 경우). echo 2 > /proc/sys/net/ipv4/conf/<interface_to_outside_net>/rp_filter 모든 것이 작동하지만 IPv6의 경우에는 rp_filter가 아직 IPv6용 커널에 구현되지 않았기 때문에 그렇지 않습니다. 내가 아는 유일한 해결책은 ip6tables를 설정하는 것입니다.

현재 설정: ip6tables -t raw -N RPFILTER ip6tables -t raw -A RPFILTER -m rpfilter -j RETURN ip6tables -t raw -A RPFILTER -m rpfilter --loose -j ACCEPT ip6tables -t raw -A PREROUTING -j RPFILTER

그러나 어떤 이유로 트래픽이 machine2에 도달하지 못하고 클라이언트 측에서 시간 초과가 발생합니다.

machine1에서 tcpdump를 사용하면 TCP 핸드셰이크에 대한 SYN만 얻습니다.

14:18:50.390292 IP6 fd11:3456:789a:1::4.34184 > fd12:3456:789a:1::1.1111: Flags [S], seq 701159610, win 28800, options [mss 1440,sackOK,TS val 6066549 ecr 0,nop,wscale 7], length 0

다른 사람은 없어...

어떤 제안이 있으십니까?

답변1

스포일러

/etc/network/interfaces/문제는 실제로 IPv6 주소를 사용하지 않고 "만" 설정하는 것과 관련이 있었습니다 ip a a .... 다를 거라고는 생각도 못했는데 이번에는 그렇네요.

해결책에 도달하는 단계:

조사하는 동안 machine2에서 machine1로 간단한 ping6을 수행했는데, 이상하게도 내가 겪고 있던 문제가 해결되었습니다.

그 후 TCP 핸드셰이크가 올바르게 생성되어 내가 curl -g -6 ..하고 싶었던 타겟 명령을 실행할 수 있게 되었고 드디어 동의하게 되었습니다!

그런데 생각해보니...그건 말도 안 되는 일인데 왜 ICMPv6가 이것을 처리하지 않는 걸까? 이로 인해 나는 ip -6 neigh showmachine1에 대한 항목이 실제로 있음을 보여주는 ndp() 테이블을 확인해야 한다고 생각하게 되었습니다.실패.

이는 어떤 이유로 ICMPv6가 이웃 요청/광고를 교환할 수 없음을 의미합니다.

마지막으로 간단히 컴퓨터를 다시 시작하면 일반적으로 모든 문제가 해결된다는 사실을 기억했습니다. 그러나 ip a a ...인터페이스에 이 구성만 사용했기 때문에 구성이 새로 고쳐졌기 때문에 /etc/network/interfaces/올바른 IPv6 주소를 구성하고 컴퓨터를 다시 시작했습니다.

이것이 모든 문제의 근원입니다 ;)

해결책:

IPv6의 느슨한 모드의 경우 rp_filter로 아무것도 수행하지 마십시오. ==> 기본적으로 활성화되어 있습니다.

인터페이스를 올바르게 구성했는지 확인하십시오. :)

추신: 내가 뭘 망쳤는지 아는 사람 있나요? 왜 간단히 사용할 수 없습니까 ip address add....? 감사해요.

답변2

비슷한 질문입니다. 확인해 주셔서 감사합니다 ip -6 neigh show.

제 경우에는 엔드포인트가 동일한 네트워크 ID(접두사)에 속하지 않았습니다.

예:

머신 A fd00:1:1/64%eth0은 eth0의 fd00:1:1에 대한 Neighbor Solicitation 메시지에 대해 MAC 주소로만 응답합니다.

시스템 A에 fd00:2::1/64%eth1도 있는 경우 eth0의 fd00:2::1 요청에 응답하지 않습니다.

관련 정보