Strongswan IPv6 터널 라우팅

Strongswan IPv6 터널 라우팅

라우팅의 이상한 문제를 해결하려고 합니다. Strongswan 터널링 ipv6 연결을 사용하여 라우터를 설정했습니다(Turris, 맞춤형 OpenWRT 실행). ipv6 연결이 제대로 작동하므로 라우터 자체에서는 제대로 작동합니다(터널을 통해 내 공급자는 기본 ipv6을 제공하지 않습니다).

핵심요약: 경로는 내가 예상한 대로 선택되지 않았습니다. 가장 일반적인 경로인 ::/0은 /64 일치가 가능하더라도 항상 선호되는 것 같습니다.

그런데 이것을 홈 네트워크로 확장하려고 했더니 문제가 생겼고, 원인을 찾을 수가 없습니다.

ipsec은 작동하지만 ipsec0 인터페이스와 다음 경로를 얻습니다.

Kernel IPv6 routing table
Destination                                 Next Hop                                Flags Metric Ref    Use Iface
::/0                                        ::                                      U     1024   0        2 ipsec0  
2a01:490:19:42::/64                         ::                                      U     1024   0        0 br-lan  

여기서 2a01:490:19:42::/64는 로컬 네트워크 전용 순위이고, 2a01:490:19:42::1은 해당 네트워크에 있는 라우터의 IP 주소입니다.

다음은 몇 가지 관찰 사항입니다.

1) 로컬 네트워크의 컴퓨터에서 2a01:490:19:42::1을 ping하면 라우터가 응답하지만 해당 응답을 ipsec0 인터페이스로 보냅니다. 왜 그런지 모르겠습니다. br-lan에서 더 구체적인 접두사인 2a01:490:19:42::/64를 선호해야 하지 않나요? 소스 IP 주소 2a01:490:19:42::1을 올바르게 선택한 것 같습니다.

2) 로컬 네트워크에서 ping6 stackexchange.com과 같은 다른 사이트로 패킷을 보내려고 할 때도 동일한 일이 발생합니다. 패킷은 라우터에 도착하여 전달되고, 서버는 응답을 보내고, 라우터는 이를 받아 ipsec0 인터페이스로 다시 보냅니다.

3) xfrm 정책이 없습니다. ip xfrm pol아무것도 반환하지 않습니다. 그러나 Strongswan은 실행 중이고 나는 Strongswan이 항상 몇 가지 정책을 만든다는 인상을 받았습니다. 이전 설정에서는 패킷을 터널로 전달할 수 있도록 일부를 추가해야 했지만 정책 목록이 비어 있다는 점이 약간 혼란스럽습니다.

알았어, 무슨 일이야? 내 ipv6 패킷에 가장 일반적인 경로인 ::/0이 선호되는 이유는 무엇입니까?

감사해요!

답변1

문제는 ipsec이 자신의 규칙을 다른 라우팅 테이블(table 220)에 삽입하고 그곳으로 트래픽을 전달하는 정책을 생성했다는 것입니다.

root@turris:/etc/config# ip rule list
0:  from all lookup local 
220:    from all lookup 220 
32766:  from all lookup main 
32767:  from all lookup default 

그러나 테이블에는 220로컬 네트워크가 아닌 ipsec 터널에 대한 기본 경로만 포함되어 있습니다.

root@turris:/etc/config# ip -6 r show table 220
default dev ipsec0  proto static  src 2a01:490:19:42::1  metric 1024 

이로 인해 필연적으로 모든 패킷이 터널로 전달되었습니다.

라우터 자체의 네트워크는 승인되었지만 라우팅되지 않았기 때문에 작동했습니다.

charon.routing_table = 254나는 Strongswan에게 (그림에서 볼 수 있듯이 main의 ID ) 를 설정하여 라우팅 규칙을 기본 테이블에 삽입하도록 지시하여 이 문제를 해결했습니다 /etc/iproute2/rt_tables. 내 strongswan.conf지금은 다음과 같습니다

charon {
#       load_modular = yes
        plugins {
                include strongswan.d/charon/*.conf
        }
        routing_table = 254 # main
}

관련 정보