Linux가 잘못된 인터페이스를 통해 IPv6 패킷을 라우팅합니다.

Linux가 잘못된 인터페이스를 통해 IPv6 패킷을 라우팅합니다.

링크 로컬 패킷이 올바르게 라우팅되지 않는 Arch Linux 시스템이 있습니다. 이 컴퓨터에는 4개의 인터페이스(wan, lan0, lan1 및 lan2)가 있습니다. 세 개의 lanX 인터페이스는 모두 함께 브리지됩니다.

내가 달릴 때

ping6 fe80::8e89:a5ff:feda:fa%lan

또는

ping6 ff02::1%lan

패킷은 LAN 브리지 및 lan2 인터페이스(해당 fe80 주소를 사용하여 컴퓨터에 직접 연결됨)가 아닌 wan 인터페이스에서 나옵니다. 커널이 지정된 IPv6 범위 ID를 무시하는 것으로 보입니다. 다시 확인했는데 fe80 주소에 대한 경로가 없습니다(하지만 IPv6 장치당 ff0::/8에 대한 경로가 있지만 이는 범위를 제공하는 다른 시스템에서도 동일합니다).

커널이 이런 방식으로 동작하도록 하고 링크 로컬 주소의 명시적인 ipv6 범위(IPv6 사양에 따라 여전히 링크 로컬로 간주되는 ff02::/16 포함)를 무시할 수 있는 설정이 있습니까?

답변1

문제는 내 구성과 관련이 있는 것으로 나타났습니다. 나는 nfqueue를 사용하여 인라인 IPS에서 Suricata를 실행하고 있으며 "반복" 모드를 사용하여 체인 시작 부분에 패킷을 다시 삽입합니다(패킷이 IPS로부터 권한을 얻은 경우). 그런 다음 패키지에 추가된 Suricata 태그를 찾고 Suricata로 다시 전달하지 않는 규칙을 만들었습니다. 그러나 Suricata에서 체인을 다시 삽입하면 커널이 패킷 라우팅 방법을 잊어버리는 것 같습니다. nfqueue 규칙을 제거하면 문제가 해결되었지만 IPS를 활용하지는 못했습니다. 그래서 내가 한 일은 모든 -j ACCEPT iptables 규칙을 -j NFQUEUE iptables 규칙으로 바꾸는 것이었습니다. 이 형식에서 Suricata는 모든 트래픽을 볼 수 없으며 특히 방화벽에 의해 차단된 패킷을 볼 수 없습니다. 불행한 일이지만 작동합니다.

관련 정보