Linux 시스템에서 IPv6에 대한 IP 규칙을 추가하려고 하면 다음 오류가 발생합니다.
$ ip -6 rule add fwmark 0xfab lookup 0xf
RTNETLINK answers: Address family not supported by protocol
IP 규칙 코드를 살펴보았는데, 이는 커널에 netlink 메시지를 보냅니다. 일부 모듈을 로드해야 할 수도 있지만 어떤 모듈인지 모르겠습니다. 이 문제를 해결하려면 어떻게 해야 합니까?
저는 커널 소스에서 빌드된 Linux 2.6.37.3을 사용하고 있습니다.
해결 방법: 기본적으로 Linux 버전은 IPv6에 대한 다중 라우팅 테이블을 지원하지 않습니다. 여러 IPv6 라우팅 테이블을 지원하려면 CONFIG_IPV6_MULTIPLE_TABLES를 활성화해야 합니다.
답변1
IPv6 기능은 ipv6 커널 모듈을 통해 시스템에 제공됩니다. 모듈이 현재 시스템에 로드되어 있는지 확인하려면 루트로 다음 명령을 실행하십시오.
lsmod | grep ipv6
출력에 ipv6이 표시되면 모듈이 로드되었음을 의미합니다.
/etc/modprobe.conf를 확인하고 ipv6이 비활성화되어 있는지 확인하십시오.
alias ipv6 off
options ipv6 disable=1
그것은해야한다
alias net-pf-10 ipv6
인터페이스별 구성 파일을 추가로 확인하십시오. (Fedora, CentOS 등과 같은 RedHat 스타일 배포판을 사용하는 경우)
존재하다/etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=yes
IPV6_AUTOCONF=yes
/etc/sysconfig/network
파일 에 있는 경우:
NETWORKING_IPV6=yes
그런 다음 network
서비스를 다시 시작하고 시스템을 재부팅하여 ipv6 커널 모듈을 완전히 로드합니다.
답변2
lookup
나는 이것이 어떤 객체에도 유효한 옵션이라고 생각하지 않습니다 ip
. 규칙 작업에는 table
, nat
또는 prohibit
recject
가 포함됩니다 unreachable
. realms
귀하의 명령 형식으로 판단하면 그것이 귀하가 원하는 것일 것으로 예상됩니다 table
. 노력하다
ip -6 rule add fwmark 0xfab table 0xf